Billing
Zappocity bills each organization for its subscriptions, in US dollars. Prices are set per plan, per month and per year, under Products (see Zappocity customers).
How invoices are made
Each subscription has a renewal date (on its organization's page). Every hour (or Billing → Run billing now, corpsuite billing run), each organization whose subscriptions have reached their renewal gets one invoice:
- a line per subscription at its plan's price for the period (monthly or yearly), times its seats when the plan is priced per seat;
- less discounts (coupons);
- less the organization's credit, as much as covers it.
What is left is the total to pay. An invoice with nothing left to pay is paid at once (by credit); one that is open is paid with the saved payment method when the organization pays automatically, or recorded by staff (Record payment: bank transfer, cheque, cash). The owners and billing members are emailed each invoice. Each subscription then renews a month or a year later.
Plans with no price, and free organizations, renew without an invoice.
A new subscription is billed from now unless billFrom says a date or never (useful when adopting a team that paid elsewhere); move a renewal with renewsAt (corpsuite zappocity subscription set ID renewsAt=2026-11-01).
Prices per seat
A plan can be priced per seat (Products → Prices → Per seat, corpsuite zappocity price set mailocity team month:=1900 perSeat:=true): its price is then for each seat, and each subscription to it says how many seats it bought (Seats on the organization's subscriptions, corpsuite zappocity subscription set ID seats:=5). A help desk's agents are seats, for example.
- More seats are invoiced at once for what is left of the period already billed, in proportion to the time left: two more seats halfway through a month cost one month of one seat. Discounts and credit apply as on any invoice, and a saved payment method is charged.
- Fewer seats take effect at once and cost less from the next renewal; there is no refund for the rest of the period.
- Free organizations and plans with no price are not charged for seats.
- The product is told the number of seats, so it can hold the subscription to it.
Free organizations
On an organization's Billing card, Free (no charge) with a reason gives its products for nothing, for good or until a date (corpsuite billing set ORG-ID mode=free freeReason="Launch partner" freeUntil=2027-01-01). After that date it is charged again.
The balance and its history
Each organization has a balance: positive is credit in its favour, negative is owed. Change balance adds credit, takes it away (debit), or records a payment or refund, with a reason and a reference (corpsuite billing ledger add ORG-ID kind=credit amountCents:=2500 description="Sorry for the outage"). Invoices add their charge, payments their payment, a voided invoice its charge back. Every change is an entry in the history with who made it and the balance after it; entries are never changed or deleted (correct a mistake with an opposite entry).
Void cancels an open invoice; its charge goes back on the balance.
Taking payments with Stripe
Under Settings → Payments choose Stripe and enter its secret key (or a restricted key) and the webhook's signing secret (corpsuite payments set provider=stripe secretKey=- webhookSecret=-, then corpsuite payments test). In the Stripe dashboard, add a webhook to https://zappo.city/api/billing/webhook/stripe for checkout.session.completed and charge.refunded, and enable the payment methods you want offered (cards, wallets, bank debits, crypto where Stripe offers it).
- Add a payment method opens Stripe's own page; card details never reach Zappocity, only Stripe's ids and a label such as "Visa ending 4242". The saved method then pays each renewal automatically (unless Pay invoices automatically is off).
- Pay now on an open invoice opens Stripe's checkout for it; the method used is saved for next time.
- Stripe's events are checked against the signing secret and handled once each, even when Stripe sends them again; a refund made in Stripe is recorded in the balance history.
For customers
Owners and billing members see the balance, the saved payment method and the invoices under their organization on the account page (/account), and can add or remove the payment method, pay an open invoice, and turn automatic payment off.
Staff need read to look and billing to change anything.