Endpoint
Authentication
None. This is a provider-to-server callback — Korapay calls this endpoint directly. NoAuthorization header or x-api-key is required or expected.
Expected Payload
Axis only processes events whereevent is "charge.success". Any other event type is ignored.
Key Field Roles
Response
200 OK on successful processing. The Korapay webhook dispatcher treats any non-2xx response as a delivery failure and will retry.
Axis validates the incoming payload with a strict Zod schema. The key constraints are:
eventmust be exactly the string"charge.success"— any other event type is rejecteddata.currencymust be exactly 3 characters (validated as a string of length 3, not an enum)data.amountis a decimal number, not an integer — Korapay sends5000.00, not500000
400 response with Zod validation details. Korapay will retry delivery on 400s, so ensure your virtual account provisioning flow always sets account_reference to the correct wallet UUID.Payload Fields Reference
The following fields are extracted and used by Axis when processing the event. Fields not listed here are accepted by the schema but not acted on.string
The Korapay event type. Axis only processes
"charge.success" — all other values are ignored without error.string
The wallet UUID to credit. Set by Axis when the virtual account is provisioned via Korapay. If no wallet with this UUID is found, the event is logged and no credit is applied.
number
The funded amount in NGN (decimal). Axis multiplies by 100 to convert to kobo before writing to the wallet balance.
string
Must be exactly 3 characters. Validated by schema — payloads with a missing or malformed
currency field are rejected with 400.string
Korapay’s unique payment reference for the transaction. Stored on the resulting ledger entry for reconciliation.
string
Korapay’s internal payment reference. Also stored for reconciliation.
string
The transfer narration submitted by the sending bank. Stored on the ledger entry and visible in the wallet’s funding history.
string
ISO 8601 timestamp of when the bank transfer was processed. Stored for audit purposes.