Payments API
Appendix A - Changelog
1.0 (2026-04-15): Initial public release.
1.0 (2026-07-11): Documented Testing mode — per-country money-in amount cap; open (flexible) checkout disabled until Go Live; portal badge and API tester follow the same rules.
1.0 (2026-07-20): Self-registration grants Approved + Testing mode with Hosted checkout, Card on pay links, Payouts, and Metadata enabled immediately; Collections / Subscriptions / Sub-accounts remain staff-gated.
1.0 (2026-07-11): Renamed product docs to MojoPay Omni API. Portal Mojo Ai includes an API integration specialist grounded in this guide (paste request/response/errors for help).
1.0 (2026-07-12): Application ops changelog for staff/admin features (CEO role, audit logs, SMS settings, transactions ledger coverage, portal accounting fee balances) lives in the repository root CHANGELOG.md. This appendix remains the merchant Omni API narrative history.
1.0 (2026-07-13): Hosted /pay/{id} confirms the customer wallet with an SMS OTP before initiating mobile money (same browser can skip for ~7 days after verify). No Omni API request/response shape change — see checkout session hosted pay notes above and root CHANGELOG.md.
1.0 (2026-07-29): GET /v1/collections/{id}, GET /v1/collections?merchant_reference=, and GET /v1/transactions/verify/{merchant_reference} may refresh processor status while the resource is processing (throttled). Response shapes unchanged — see collection and verify sections above and root CHANGELOG.md.
1.0 (2026-08-14): Payout fees (when staff set both percentage and cap) apply to API, portal, CSV, and settlement cash-outs; the payout wallet must cover amount + fee. Interval auto-settlement to the payout pot does not charge an instant settlement fee. See payout fees / settlement sections above and root CHANGELOG.md.
1.0 (2026-08-22): Mandate debits (POST /v1/mandates/{mandate_id}/debits) apply the merchant collection fee (same on_top / absorb rules as collections), credit the collection wallet on success, and return fee_amount, fee_mode, amount_payable, and merchant_settlement_amount.
1.0 (2026-10-05): Documented idempotency retention and timeout/gateway_error recovery, the idempotency_key_in_progress and duplicate_merchant_reference codes, the actual webhook retry window (5 attempts over about 21 minutes), immediate webhook-secret rotation, and card on hosted checkout when enabled for the merchant. No request/response shape change.
1.0 (2026-08-24): Direct debit flow is documented the same way in /doc, OpenAPI, sample payloads, and /api-tester: POST /v1/mandates, then GET /v1/mandates until succeeded, then POST /v1/mandates/{mandate_id}/debits. Cancel cascades to local rows that share the same upstream MandateId.
1.0 (2026-10-10): Bank virtual accounts are first-class in the Omni API docs and /api-tester: dynamic accounts via POST /v1/collections with payment_rail=bank_transfer; merchant standing static account via POST/GET /v1/virtual-accounts/merchant; customer dedicated static accounts via /v1/customers and /v1/customers/{id}/virtual-account. Requires MojoPay to enable bank transfer and/or Static VA on the merchant.