- Shipped
- 5 Septemba 2026, 02:11 UTC
- Author
- Kamo
- Commit
- 361dfe7
The startup fee has been half-built for as long as the model has existed. SubscriptionPlan carried a setupFee, SubscriptionOrder carried a setupFee, OrderLineType and InvoiceLineType both had SETUP_FEE — and none of it ever reached a bill. calculatePrice added the plan's amount to the total exactly once, and generateInvoice emitted PLAN and ADDON lines and stopped, so a fee that was quoted, agreed and stored was charged to nobody. KamoCRM now charges $99 per seat. A single amount cannot say that: $99 in setup_fee is either $99 or $2,475 on a 25-seat order, and nothing on the row distinguished them. So the meaning is stated beside the amount, with FLAT as the default — every plan the platform hosts for a third party was authored as a single charge and must not be retroactively multiplied. Three callers need the answer and one of them is new. A per-seat fee follows the person, so growing the team owes it again on the difference; without that a 5-seat account could reach 500 having paid setup on five. changeSeats now raises its own one-line invoice for the new heads, rather than burying a one-time charge inside a renewal that may be eleven months away. Harmony Home Loans agreed a flat $2,000 covering every seat they will ever add, before signing. Sales had a promotion (a code, open to anyone who types it, expressed as a percentage) and hand-edited order totals, and neither holds that: a promotion has no per-account scope, and an edited order is a fact about one order, forgotten the next time the account is priced. OrgBillingAgreement records it against the organization instead, where pricing reads it every time. "$2,000 instead of $99 a seat" and "$2,000 and never again" are different promises, so coversFutureSeats is asked on its own rather than inferred — a customer who bought the first would be billed correctly today and wrongly the month they hire. WIRE joins the payment methods because Harmony's money had already cleared and there was nowhere to say so. It is not INVOICE (nothing is outstanding, dunning must not chase it) and emphatically not COMP, which is what they were carried as for a fortnight while the wire sat in the bank — an account reading as complimentary in every report that counts revenue.