The scene: three months after launch, a NT$25,000 monthly maintenance quote
A 60-person medical device distributor spent NT$1.8M on a corporate site plus a B2B quoting system, launched in May. In August the dev shop sent a maintenance contract: NT$25,000 per month, annual term. The procurement manager asked three questions and got no clear answer to any — how many hours does this include, are hosting and domain fees inside it, and does anyone answer the phone at 2am? He left it unsigned. In week nine the homepage started returning 502s, the fix was quoted separately because nothing was signed, and an emergency vendor cost NT$46,000 plus three days of stalled sales. This article is about that contract: how to read it, negotiate it, and know when it is safe to sign.
Four common misconceptions about maintenance contracts
| What people assume | What is actually true |
|---|---|
| "Once built, it needs no maintenance" | Your system runs on frameworks and runtimes with published end-of-support dates — see the Laravel release policy and the Node.js schedule. Skipping maintenance defers the cost and multiplies it. |
| "Maintenance is extended warranty" | Different budgets. Warranty covers defects wrong on delivery and should be free; maintenance covers external change and new requests. Folding one into the other means paying for what you own. |
| "Cheaper monthly fee, better deal" | A NT$5,000 retainer with no monitoring, restore drills or patching is an insurance policy with no claims clause. Compare reserved hours and scope, not the headline number. |
| "A 99.9% SLA means we are safe" | That permits about 43 minutes of downtime a month, and a cloud provider SLA covers infrastructure only — not your code, queries or payment gateway. A vendor quoting it as its own is switching definitions. |
The core framework: break any maintenance contract into four layers
Stop asking "how much per month." Ask how far each of these four layers goes, and the grey areas surface immediately.
- L1 Keep-alive (non-negotiable): hosting and domain renewal, SSL, daily backups plus a quarterly restore drill, monitoring and alerting, security patching. A fixed cost, not hourly work.
- L2 Upkeep: framework and package updates, log review, index and performance checks including a quarterly Core Web Vitals / LCP report. Priced through reserved hours.
- L3 Small changes: copy and image updates, adding or removing fields, report tweaks — anything under four hours. Drawn from reserved hours.
- L4 Evolution: new features, modules, integrations. Separate quote every time, never under a phrase like "unlimited revisions."
Sanity-check formula:
Monthly fee ≈ L1 fixed cost + (reserved hours × hourly rate × 0.8) + on-call premium
Taiwanese reference figures: L1 NT$1,500–6,000/month; hourly rate NT$1,800–2,600; reserved hours ≈ modules ÷ 4 (10 modules needs 2.5–4 hours a month); add 15–25% for out-of-hours on-call. A 12-module B2B system lands at NT$14,000–22,000 — so the opening NT$25,000 quote was not outrageous, it just never said what each layer contained.
Three company profiles, three different answers
| Company | System | Layers | Monthly | Contract shape |
|---|---|---|---|---|
| 20-person design agency | Brochure site, contact form | L1 fully, L2 quarterly | NT$3,500–6,000 | Annual, no SLA, 2-day response instead |
| 60-person B2B distributor | Site, quoting, member portal | L1+L2 fully, L3 six hours | NT$15,000–22,000 | Annual + P1/P2 SLA + overflow hour pack |
| 200-person retailer | Ecommerce, ERP and logistics, POS sync | L1–L3 fully, L4 quarterly roadmap | NT$38,000–65,000 | Annual + two-hour P1 + quarterly review |
The dividing line is not headcount, it is the cost of one hour of downtime. Three hours down on a brochure site costs almost nothing; three hours of broken POS sync leaves every stock figure wrong and takes two days to reconcile. Let that set SLA strictness.
The hidden cost of having no maintenance contract
- Emergency onboarding: a new shop must understand unfamiliar code before fixing anything — 8–20 hours, NT$16,000–50,000, producing zero functionality.
- Version debt: upgrading two major versions late takes 40–120 hours, NT$80,000–300,000, plus a 3–6 week feature freeze.
- Downtime exposure: one dead day on a B2B quoting system, at NT$8M monthly revenue with 30% online, is roughly NT$80,000 before trust damage.
- Delayed detection: unmonitored faults surface via complaints 3–7 days later, by which point bad data is in the database and cleanup costs 3–5x.
- Expired hour packs: a 20-hour pack nobody tracks ends 30–50% unused — 60% utilisation at full price.
- Turnover: when the engineer who knew the system leaves undocumented, the successor needs 15–30 hours.
Maintenance contract scorecard: 10 dimensions, 0–3 points each, 30 maximum
| # | Dimension | What a 3 looks like |
|---|---|---|
| 1 | Scope definition | Four layers itemised, plus an exclusions list |
| 2 | Reserved hours | Exact hours, rollover yes/no, rollover cap |
| 3 | Response and resolution | P1–P4 tiers, committed separately |
| 4 | Monitoring and alerting | Named tooling, thresholds, named recipients |
| 5 | Backup and restore | Frequency, retention days, quarterly restore drill |
| 6 | Security patching | Committed business days from advisory to patch |
| 7 | Reporting | Itemised hours, incident log, performance data |
| 8 | Asset ownership | Domain, hosting, repo, payment accounts in your name |
| 9 | Exit clause | Notice period, export format, handover hours |
| 10 | Price adjustment | Increase cap and advance notice written in |
24 or above is signable. 18–23 means request amendments first. Below 18, do not sign a long term — buy one hour pack and observe for a quarter. This reflects general practice; confirm any specific clause with your own lawyer.
Our four engagement models, and when not to hire us
- Project: defined scope, one delivery, 90-day warranty. Warranty fixes are free, never conditional on signing a retainer.
- Retainer: L1 and L2 covered, L3 against reserved hours, unused hours roll over one period, itemised monthly report.
- Advisory: for clients with in-house engineers — architecture review, code review, decision support.
- Full outsourcing: infrastructure through application layer, for companies with no IT function.
Do not hire us if:
- You expect unlimited revisions in the retainer. We will not sign that; one side always loses.
- You have two or more in-house engineers and just need capacity — that is staff augmentation, not maintenance.
- The source code is inaccessible or its ownership unclear. No SLA on code we cannot see.
- Your budget is below the L1 fixed cost. We would rather you moved onto a managed platform.
- You need 24/7 on-site presence or phone support answered on your behalf.
The 90-day playbook for taking over maintenance
- Days 1–30, inventory: receive source code and every account, build an asset register, deploy monitoring and backups, run a vulnerability scan, produce a risk report. No new features — stop the bleeding.
- Days 31–60, stabilise: remediate high-severity items, document deployment, stand up staging, rehearse the emergency fix procedure by deliberately triggering an alert to verify the notification chain.
- Days 61–90, rhythm: enter the monthly reporting cycle, complete the first restore drill, agree a six-month L4 roadmap, review reserved hours against real consumption.
Review on day 90: if three months consumed only 40% of reserved hours, the fee should come down; at 130% it should go up or convert to hour packs.
Twelve questions to check before you sign
- ☐ An explicit list of what is NOT included?
- ☐ Reserved hours stated, and do unused ones roll over?
- ☐ Hosting, domain and SSL — who pays, whose name?
- ☐ P1 response and resolution committed separately?
- ☐ Out-of-hours and public holiday handling spelled out?
- ☐ Backup frequency, retention and restore drills all stated?
- ☐ Business days from security advisory to patch?
- ☐ Monthly report with itemised hours and incidents?
- ☐ IP ownership of the source code stated?
- ☐ Termination notice period, and handover hours included?
- ☐ Price-increase notice period, and a cap?
- ☐ Warranty fixes not double-charged inside the retainer?
Fewer than nine ticks and it is not signing time yet.
FAQ
Should a maintenance contract be annual or monthly?
Start with a three-month trial term, then convert to annual. Three months shows you real response speed and report quality, and lets both sides calibrate reserved hours. An annual term usually buys an 8–15% discount, but that is not worth trading flexibility for before trust exists.
Our developer says no contract means no emergency support. Is that fair?
Asking for priority is fair; refusing support entirely is not, and warranty defects should be fixed unconditionally regardless. The reasonable formulation: non-contract clients are billed per incident behind contract clients — say a 50% premium and a three-business-day response window.
Hour pack or monthly retainer — which favours the client?
Stable systems with sporadic requests suit hour packs (20 hours at NT$40,000, valid six months), though you then own monitoring and backups. Systems that keep changing, where downtime has a real cost, favour the retainer, because keep-alive is continuous and costs more bought per incident.
Can we ask for SLA penalties in the contract?
Yes, and for mid-to-large projects you should. Common Taiwanese practice uses service credits rather than cash damages — 10–30% of next month's fee when a committed response time is missed, capped at the monthly fee. Have a lawyer confirm the wording before signing.
Next step
If there is an unsigned maintenance contract on your desk, send it over. We will score it against the 10-dimension card and tell you which clauses need amending — 30 minutes online, free, no pressure to buy. With no provider at all, we can run a risk review instead and separate what needs fixing this week from what can wait six months.
- Email:[email protected]
- 電話:0916-224-047
- LINE:@ufv9089p