SMS in Pistonlog runs on a credit balance held per garage (garages.credits in the schema). Each text costs one credit. You buy credits in batches when you need them — they don't expire, and they're separate from your subscription plan.
Topping up
Open SMS credits in billing
Workshop Settings → Billing → SMS Credits.
Pick a bundle
Bundle sizes scale from small one-off top-ups to large bulk packs. Bigger bundles have a lower per-credit cost (between 7p and 10p depending on size).
Pay
Stripe Checkout handles the payment. Credits are added the moment the payment succeeds.
Check the balance
Visible on the same billing page. Decreases by 1 each time an SMS sends.
Per-garage scope
If you run multiple garages, each garage has its own credit balance. Topping up at Bristol doesn't help Bath. Each garage's reminder cron and SMS payment-link flow draws from that garage's balance only.
What shows on the receipt
Each top-up generates a Stripe receipt with the bundle size and price. Tax (VAT in the UK) is applied where applicable based on your billing address.
What happens at zero
A send attempt with zero credits fails immediately. The reminder_logs row is marked failed with errorMessage: "Insufficient credits". Email sends keep working — they don't draw from this balance.
Why credits
Twilio charges Pistonlog per-message at carrier-set rates. Credits are how those costs land back on the garage's account without us reconciling Twilio bills in real time.
Related
- SMS credits — what costs a credit
- Plans and pricing
- Reminder logs