Changelog

Notable changes to the Partner API and this documentation.

The Partner API follows an additive contract: fields and error codes may be added, but existing field names and error codes are never renamed or repurposed. Unknown fields you receive should be ignored, and unknown fields you send are ignored by the API, so an additive change on either side never breaks a working integration.

v1 (initial release)

The first version of the Partner API. Surface:

  • Identity: GET /v1/whoami.
  • Merchants: create (lands pending), list, get, and update (profile fields plus suspend/reactivate). The merchant record includes its gateway apitoken.
  • Gateway settings: read with type and validation metadata; write the allowlisted keys; compare-before-write; copy from a sibling merchant.
  • Receiving accounts: list, add, update, and soft-delete (blocked while referenced by routing).
  • Payment routing: per-bank primary and optional failover; a bank with no primary is unsupported.
  • Banks: GET /v1/merchants/{merchantId}/banks (processing banks) and GET /v1/merchants/{merchantId}/receiving-account-banks list the banks for the merchant's currency.
  • Transactions: query EFT transactions across your merchants (31-day window cap); GET /v1/transactions/{token}/status-screen returns the payment-confirmation screenshot (image/png) for a successful transaction (200), or a JSON error for the failure cases (400/401/404).
  • FNB Smart Blocked: POST /v1/fnbsb and POST /v1/fnbsb/stats list transactions and read bucketed statistics.

Conventions established in v1 and stable going forward:

  • All-lowercase JSON field names; strict number handling; unknown inbound fields ignored.
  • A single error envelope for every failure, with a stable code set.
  • Bearer authentication bound to a Master Account; out-of-scope records reported as 404.
  • X-Request-Id correlation on every response.

On this page