Retrieve a transaction

Fetch the current state of a single transaction by its JKAPay reference. Use this for backend reconciliation and as a backstop when a webhook delivery has been lost.

GET/v1/payments/:reference
Webhooks are the primary delivery channel for final status — they're real-time, signed, and retried. Use the retrieve endpoint as a fallback or for batch reconciliation, not as a polling mechanism.

Path parameters

  • reference — the JKAPay reference returned by POST /v1/payments/initialize (e.g. JKA_M3A8_8F2E1B4C).

Sample request

cURL
curl https://api.jkapay.com/v1/payments/JKA_M3A8_8F2E1B4C \
  -H "Authorization: Bearer sk_test_YOUR_KEY" \
  -H "X-JKAPay-Merchant-Id: MCH_XXXXXXXXXXXX"
Response200
JSON
{
  "transaction": {
    "reference": "JKA_M3A8_8F2E1B4C",
    "clientReference": "ORD-12345",
    "status": "SUCCESS",
    "type": "COLLECTION",
    "amount": "1.00",
    "fee": "0.02",
    "net": "0.98",
    "currency": "GHS",
    "customer": {
      "msisdn": "233244000000",
      "name": "AMOAH JOHNSON",
      "email": null,
      "network": "MTN"
    },
    "description": "Order #12345",
    "failureReason": null,
    "metadata": { "orderId": "12345" },
    "initiatedAt": "2026-05-25T16:30:00.000Z",
    "completedAt": "2026-05-25T16:30:18.213Z"
  }
}

Response fields are identical to the initialize response. The difference at retrieve time is that status, completedAt, fee, and net reflect the final state, and customer.name is populated when JKAPay was able to resolve it from the network.

Errors

  • 401 UNAUTHENTICATED — missing, malformed, or revoked API key.
  • 404 NOT_FOUND — the reference doesn't exist, or belongs to a different merchant.