Skip to main content

Error Reference

Every failure from the /partner/v1 and /widget/v1 APIs uses one envelope:

{
"code": "VALIDATION",
"message": "The request failed validation.",
"fieldErrors": { "customerId": "must not be blank" }
}

fieldErrors appears only on validation failures. message is always a safe sentence; use code for logic. Behaviour is separate from the widget's customer-facing messages, listed further below.

Partner API Errors​

StatuscodeWhenWhat to do
400BAD_REQUESTMalformed JSON, an unknown field, or a request that cannot be processed.Fix the request; this API rejects unknown fields.
401UNAUTHORIZEDMissing, malformed, unknown or revoked API key.Check the Authorization: ApiKey ... header and the environment.
403FORBIDDENThe API key does not have the required scope.Ask Pagamio to grant the scope.
404SESSION_NOT_FOUNDRevoking a session that does not exist or is not yours.Check the session id.
404TRANSACTION_NOT_FOUNDUnknown transaction id, or one belonging to another partner.Check the id.
422VALIDATIONA field failed validation (see fieldErrors), a transaction query has neither customerId nor walletId, an unknown status, or an invalid statement date.Fix the named fields.
429RATE_LIMITEDOver your per-key request limit.Wait for the Retry-After header (seconds), then retry with backoff.
500INTERNAL_ERRORUnexpected fault.Retry with backoff; contact Pagamio if it persists.
502UPSTREAM_UNAVAILABLEA dependency behind Pagamio is unreachable.Retry with backoff.

Widget Session Errors​

These reach the widget itself, not your backend, but explain what customers see.

StatuscodeCustomer seesCause
401SESSION_EXPIRED"Your session has expired"Session missing, revoked or timed out. Open a new session.
409PURCHASE_IN_FLIGHTHandled by the widget; not expected in normal use.A second purchase was started while one was still pending.
Redirectnone"This link is no longer valid"The launch token or the widget link was rejected.

Customer-Facing Failure Messages​

When a purchase fails, the widget shows one fixed message per failureCode. Text from your wallet API is never shown.

failureCodeMessage
INSUFFICIENT_FUNDSInsufficient funds in your wallet.
CUSTOMER_NOT_FOUNDWe couldn't find a wallet for your account. Please contact our support.
WALLET_BLOCKEDYour wallet is not active. Please contact our support.
LIMIT_EXCEEDEDThis purchase is over your wallet's limit.
VALIDATIONThe purchase details were not accepted.
PRODUCT_UNAVAILABLEThis product is temporarily unavailable.
AGGREGATOR_DECLINEDThe purchase was declined by the provider.
TIMEOUTWe could not confirm the purchase. Please check your history later.
UNKNOWNSomething went wrong. Please try again.

Wallet Reason To Failure Code​

Your wallet returns (422 reason)failureCode
INSUFFICIENT_FUNDSINSUFFICIENT_FUNDS
CUSTOMER_NOT_FOUNDCUSTOMER_NOT_FOUND
WALLET_BLOCKEDWALLET_BLOCKED
LIMIT_EXCEEDEDLIMIT_EXCEEDED
VALIDATIONVALIDATION
Hold timed out or unconfirmedTIMEOUT
AUTHENTICATION, DUPLICATE, or anything elseUNKNOWN

See Partner Wallet Contract for the full response mapping.


Last updated: September 2026