Integration Recipes
The same four primitives β payment, checkout, webhook, payout β compose into very different businesses. Pick your shape; each recipe lists the exact endpoints and the gotchas that matter for that shape.
π« School β fee collection
Shape: known payers, invoice-like amounts, paid remotely by parents or at the bursar's desk.
Invoice = payment link
Per learner per term: POST /v1/payments with merchant_ref: "S1042-T2", metadata: {student_id, term}. Send the checkout_url by SMS/WhatsApp.
Auto-receipt
On payment.paid, mark the fee record settled and message the receipt. metadata tells you exactly which learner/term.
Bursar's desk
Walk-ins: the kiosk pattern β render code + QR on the desk screen, poll until paid.
- Partial payments: create a payment per instalment; sum
paidpayments permetadata.student_idfor the outstanding balance. - Reconciliation: filter
GET /v1/payments?merchant_ref=β¦or export the CSV statement per term window.
π₯ Hospital / clinic β patient billing
Shape: amounts decided at the point of service, paid immediately at a counter, several counters in parallel.
- Each billing point creates payments with
merchant_ref: "INV-<invoice>"andnarration: "Consultation β Dr. β¦"(the narration shows on the customer's InnBucks side and your statement). - Counter screens use the kiosk pattern; waiting rooms can use printed QR + payment-link SMS for settle-before-collection.
- Run one webhook receiver in the HIS; route on
merchant_refprefix to the right department's ledger. - Idempotency keys = invoice numbers, so a double-clicked βbillβ button can never double-charge.
πͺ Tuck shop / retail counter β till + cash point
Shape: small fast baskets, mixed cash/wallet, often doubling as the neighbourhood cash point.
- Basket β
POST /v1/paymentsβ show code/QR on the till (kiosk pattern). The 18-second sandbox auto-settle makes training demos painless. - No coins? Bank change sends β€ USD 5.00 change to the customer's wallet in seconds.
- Cash-out service: withdrawal codes β hand over cash only on
redeemed. - Sell airtime from the same balance with utility payments and keep the commission.
- End of day: dashboard β statement CSV; weekly
POST /v1/payoutsto move takings to the owner's wallet.
π Fleet operator β fares & driver settlement
Shape: many small payments collected in the field by drivers/conductors, settled centrally.
- The operator's app (one merchant account, one key on the operator's server) creates a payment per fare; conductor shows the QR from their phone, passenger scans and pays.
metadata: {vehicle, route, driver_id}on every fare βGET /v1/paymentsfilters become per-vehicle takings reports.- Driver settlement is internal bookkeeping over the ledger: sum
paidfares perdriver_idper day, pay drivers your way; the platform balance pays out to the operator's wallet. - Field reality: codes expire in 10 minutes and create instantly β create the payment when the passenger boards, not in batches.
ποΈ Online store β e-commerce checkout
Shape: classic web checkout, customer remote, fulfilment after payment.
- Cart β server creates payment (
Idempotency-Key: order-<id>) β redirect tocheckout_url, or keep them on-page withpos.js. - Fulfil only on
payment.paidvia verified webhook; treat the browser redirect as UX. - Abandoned checkout =
payment.expiredwebhook β send a βcomplete your orderβ email with a fresh payment link. - Refund-ish flows: codes can't be reversed (InnBucks rule) β issue store credit or a manual InnBucks transfer, and track it as your own business process.
Which products each shape uses
| Payments | Hosted checkout | pos.js | Webhooks | Payouts | Agent ops | Utilities | |
|---|---|---|---|---|---|---|---|
| School | β | β links | β | β | β | β | β |
| Hospital | β | β links | β | β | β | β | β |
| Tuck shop | β kiosk | β | β | optional | β | β | β |
| Fleet | β kiosk | β | β | β | β | β | β |
| Online store | β | β redirect | β | β | β | β | β |