Ask your customers - nothing is better than being direct and asking them what they would like from your service - it will give you much more accurate responses, and will also show your customers that you care about what they think.. etc.
But here are the usual ideas:
-- There are primarily two common types of charges for this kind of thing:
- Subscription based (fixed)
- Ad-Hoc Based (variable)
Some companies like to pay for piece of mind - so they like things to be bundled at various levels. Other companies like to pick and choose the best deal. So.. the way you present your options is also important.
Most companies like fixed price costs - as they can budget more easily and dont like nasty suprises - especially in terms of costs. These companies, like the sound of most of your customers, will want a subscription based support & maintenance service. This means they can use your support up to their agreed service level agreement without any additional costs.
Some companies, or organisations are 'self sufficient' to some degree and/or prefer to take the risk to potentially cut costs - these are usually smaller companies that opt for ad-hoc support & maintenance. This means that they can use your support as and when they need to, with no costs if they don't. - you would price this at a small premium though.
Subscription Users:
===================
-- You could offer a tiered SLA based on your customers subscription level.
For example:
Tier 1: Basic: 8 hour response, 5 day resolution
Tier 2: Moderate: 4 hour response, 3 day resolution
Tier 3: Advanced: 2 hour response, 8 hour resolution
Tier 4: Special: 30 min response, 4 hour resolution
-- Add special services at each tier:
Tier 1: 1 maintenance release per year
Tier 2: 2 maintenance release per year
Tier 3: 4 maintenance release per year
Tier 4: 6 maintenance release per year
and/or
provide optional development days per year for them to add new features up to their allotted time. If they don't use them you benefit, if they do - the cost is already covered in their subscription - this can help guarantee a certain amount of development work per year, and seems like a bonus to some companies (but not all, so make this optional)
-- Include an option for a dedicated support analyst - specially for their company - likely to be more interesting for larger companies (SPOC and all that).
Ad-hoc Users
============
-- Pay Per Ticket (most common)
-- Pay Per Ticket Block (pre-buy blocks - e.g. they buy individual tickets at a premium, or get blocks (5, 10, 25, 50 etc) for a reduce price per ticket - again if they don't use them, you win, if they use the premium priced tickets, you win. But don't price yourself out of the market..!
-- Pay Per Release (Every Major release is paid for by the customer - think of it as an upgrade fee)
-- Pay Per Fix (if you consider fix is a fix to your code, not a resolution to their problem, then this would be a commercial nightmare - users would call up constantly with things that they could not be bothered to find out themselves and are not actually problems with your code)
-- Time & Materials (however long you spend providing support, you charge at your normal rate)
For Development / Enhancements , you can either:
Time & Materials: every project is estimated and you charge either on actuals or on estimate/quote, depending on your agreement.
Fixed Price: Every type of feature (e.g. a report) has a fixed price - be sure you fully understand your costs before doing this, as it is easy to under or overcharge.
As for other support options...
1. Consider the communication method:
-- Online chat
-- Email
-- Telephone
-- Onsite
2. Consider the hours of availability
-- Local Office Hours (9-5/8-6 etc for your timezone)
-- Out of Hours (other timezones etc)
-- 24/7
3. Process / Workflow management - a premium service could be to alert the ticket requestor of the current status at regular intervals by phone/email/sms etc - maybe a bit overkill for what you're doing but it is common for enteprises - who you may have to deal with.
4. Warranty - provide different level warranties for fixes or enhancements / features etc that ensure they do not pay to have it fixed if it fails in the next, say, 3 months.
5. IPR - not sure what you do at the moment, but you can optionally offer them the rights to the intellectual property / source code etc etc
6. Sole Usage Rights - if your applications are cutting edge and reusable for other companies, then you could offer them the sole usage rights to the application - meaning you cannot sell it to anyone else, but they pay you a premium for the privilidge.
Throughout all of this, make sure you consider the following:
1. Involve your customers.. it will make a better job of it in the end.
2. Keep It Simple! too many choices can be a negative point - it can seem disorganised and confusing.
3. Make sure that the options are commercially viable - don't sell anything that doesn't at least break even (unless you're into the loss-leader type activities, though these can be risky unless you thoroughly understand your market)
4. Think about what you would like if you were the customer - what options are most appealing to you?
And don't be afraid to look at how other companies do it - look around, take what you like, and leave what you don't.
There are more, and different ways of cutting them, but it does depend on your market, your company and your product (as well as your preferences).
Hope these ramblings help,
best of luck
A smile is worth a thousand kind words. So smile, it's easy! 