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/:referenceWebhooks 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 byPOST /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.