Qora by Laayo
Get API keys

Changelog

The API is versioned by date. Your integration is pinned to the version current when your account was created, so nothing changes underneath you.

Versioning policy

These are not breaking, and can ship at any time:

  • Adding a new field to a response.
  • Adding a new optional request parameter.
  • Adding a new event type, endpoint, or error code.
  • Changing the wording of a message.

Write your integration to tolerate all of the above: ignore unknown fields, and never branch on message text.

These are breaking, and only ever arrive under a new dated version:

  • Removing or renaming a field.
  • Changing the type or meaning of an existing field.
  • Adding a required parameter.
  • Removing an endpoint, event type, or error code.

2026-09-06 — current

First public release.

  • POST /v1/payments — create a payment and mint a Fonepay dynamic QR.
  • GET /v1/payments, GET /v1/payments/{id}, GET /v1/payments/{id}/qr.
  • POST /v1/payments/{id}/cancel.
  • GET /v1/events, GET /v1/events/{id}.
  • GET /v1/balance — prepaid Qora credit, not sales revenue.
  • Signed webhooks: payment.created, payment.succeeded, payment.expired, payment.canceled.
  • Idempotency-Key on all POST endpoints.
  • Cursor pagination via starting_after.

Deprecation policy

When a version is superseded we will email every account using it and keep it working for at least twelve months. Nothing is removed without notice.