Skip to main content

Support & Error Reference

A fast path to diagnosis and escalation when something isn't working.


Error codes reference

CodeHTTPDescriptionAction
MISSING_API_KEY401No API key providedAdd an X-API-Key header to the request.
INVALID_API_KEY401Key not found or revokedCheck the key in your dashboard under Settings → API Keys.
INSUFFICIENT_FUNDS422Source wallet balance too lowCheck the balance before initiating a debit.
WALLET_NOT_FOUND404Wallet ID does not existVerify the wallet was created and the ID is correct.
WALLET_FROZEN422Wallet is frozenCheck the wallet's status in the dashboard, or contact support if unexpected.
WALLET_CLOSED422Wallet is closedCreate a new wallet — closed wallets are terminal.
INVALID_CURRENCY400Only NGN is supportedUse "NGN" as the currency value.
DUPLICATE_REFERENCE409Reference already usedUse a new, unique reference for this transaction.
SAME_WALLET_TRANSFER400Source and destination wallet are identicalUse two different wallet IDs.
AMOUNT_TOO_LOW400Amount below the minimumThe minimum is 1 kobo.
INVALID_SPLIT_CONFIG400Split config missing required fieldsCheck the split_config object against the Split Payments guide.
QR_INTENT_EXPIRED410QR intent past its 15-minute expiryCreate a new intent.
QR_INTENT_ALREADY_PAID409Intent already consumedCheck the transaction status — it likely already succeeded.
USSD_SESSION_EXPIRED410The 3-minute session window elapsedInitiate a new USSD session.
KYC_ALREADY_VERIFIED409User is already verifiedCheck KYC status before resubmitting.
RATE_LIMIT_EXCEEDED429Too many requestsRespect the Retry-After value and back off.
INTERNAL_ERROR500Unexpected server errorRetry with exponential backoff. If it persists, contact support.

This table covers the error codes referenced throughout the integration guides. If you encounter a code not listed here, treat it the same as INTERNAL_ERROR — retry with backoff, and include the code verbatim when contacting support.


Using request IDs for support

Every PayKore API response — success or error — includes a meta.request_id field:

{
"error": {
"code": "INSUFFICIENT_FUNDS",
"message": "The source wallet does not have sufficient funds for this transfer.",
"http_status": 422
},
"meta": {
"request_id": "req_6nOpQ7rStU"
}
}

Always include this ID when contacting support. It lets the team look up the exact request in PayKore's logs — the timestamp, the payload, the internal processing trace — without you needing to describe or reconstruct what happened. A support request with a request_id is typically resolved far faster than one without.


Status page

Before contacting support, check status.paykore.dev for any known incidents. If there's an active incident affecting the endpoint or feature you're seeing issues with, it will be listed there along with an estimated resolution time — often faster than waiting on a support reply for something already being actively worked on.


Contacting support

  • Email: support@paykore.dev
  • Community: join the PayKore Developer Discord (link in your dashboard) for peer support and product announcements.

Response time SLA by tier:

TierResponse time
Starter48 hours
Growth24 hours
Scale4 hours

When emailing support, include: your partner ID, the relevant request_id (or several, if the issue spans multiple requests), and a brief description of what you expected versus what happened.


Next steps