JavaScript is required to view this page
Error Codes Reference

Error Codes Reference

This page lists the error codes returned by the Payment API, with the HTTP status each one comes with. Each error has a code (BPnnn) and a message. Branch on code.

Error Response Format

{
  "timestamp": "2026-01-15T10:30:00.000+13:00",
  "path": "/payments/v1/payments",
  "status": 422,
  "error": "UNPROCESSABLE_CONTENT",
  "message": "Consent has been revoked",
  "code": "BP015"
}

Some responses carry no BlinkPay code:

  • 401 has an empty body and a WWW-Authenticate header: Bearer error="invalid_token" when the access token is expired or invalid, and a bare Bearer when no token was sent. Get a new token and retry.
  • 429 Too Many Requests: wait for the time in the Retry-After header, then back off; see API Rate Limits.

Every response carries a request-id header (it echoes yours if you send one). Include it when you contact support.

Common Error Codes

CodeHTTPDescriptionResolution
BP101404Consent does not existVerify the consent ID is correct
BP002422Consent already consumed or rejected, including a single consent not paid within 48 hours of authorisationGET the consent and check payments[0] first. If a payment exists and is not Rejected, it may still settle: poll it rather than creating a new consent. Otherwise create a new consent
BP003422Enduring consent is past its expiry_timestamp (it is now Consumed)Create a new consent
BP004422Consent exceeded request timeoutCustomer took too long; create new consent
BP011422Consent cannot be revoked because it was never authorised (Rejected or GatewayTimeout)No action needed
BP015422Consent has been revoked — possibly cancelled by the customer in their banking appCreate a new consent
BP017422Consent not yet authorised (a payment was created too early)Customer hasn't approved yet; continue polling
BP018422Quick payment cannot be processed, for example POST /payments on a quick paymentDon't create payments for a quick payment: GET the quick payment instead
BP021422Gateway consent timed out (>15 min)Create a new consent
BP701409Consent was already revoked — either earlier via the API, or by the customer in their banking appNo action needed; create a new consent to take further payments
BP707409Consent has a payment still settling, so it cannot be revoked yetPoll the payment until it is terminal, then revoke if still needed

Request Errors

These mean the request needs fixing; resending it unchanged gets the same error.

CodeHTTPDescriptionResolution
BP035422Referenced consent is for a different bankUse a consent ID from the same bank
BP214400Redirect URI not whitelistedRegister the URI under Settings > API Settings
BP216400Bank not configured for merchantContact BlinkPay to enable the bank
BP235400amount or pcr sent when creating a payment on a single consentSend only the consent_id; the amount and PCR come from the consent
BP240400Decoupled identifier type not supported by the bankUse an identifier type listed for the bank in features.decoupled_flow.available_identifiers on the metadata endpoint
BP265400Identifier value is not a valid consent IDPass a consent ID as the decoupled identifier_value
BP276400surcharge or total_charge was sentRemove them: BlinkPay calculates these fields
BP283400An enduring consent's from_timestamp and expiry_timestamp fall on the same dateSet the expiry at least one day after the start
BP289–BP293400callback_url is malformed or is not a public https URLSend a publicly reachable HTTPS URL (the sandbox also accepts http)
BP299400Invalid request parameters, for example an ID or an idempotency-key, request-id or x-correlation-id header that is not a UUIDFix the request; send UUIDs for IDs and those headers

Idempotency and Concurrency Errors

An idempotency key is bound permanently to the payment it creates. These 409s tell you which of the two situations you are in: the key is still busy with an earlier request (retry later), or it has been spent (use a fresh key).

CodeHTTPDescriptionResolution
BP702409Duplicate idempotency key with different payloadUse a unique idempotency key per distinct request
BP703409The named payment is still in flightPoll the payment ID in the message until it reaches a terminal status; don't resubmit
BP708409A request with this key is still in progressRetry with the same key after a few seconds
BP709409The consent was changed by another request at the same timeRetry the request
BP710409The key was already used by a payment that is now terminalRead the status in the message: Rejected means you may re-submit under a fresh key, AcceptedSettlementCompleted means the money already moved and you must not
BP711409A concurrent refund request holds the same keyRetry the same request with the same key shortly
BP712409Another request on this consent is submitting a paymentGET the consent's payments before retrying
BP713409Duplicate of a payment made in the same minute without an idempotency-keyAlways send an idempotency-key
BP715409The charge went out while the refund was being processed, so it could no longer be cancelledRetry the refund with a new idempotency key — the money will be sent back as a refund instead

Refund Errors

See Refunds.

CodeHTTPDescriptionResolution
BP012422The payment is not AcceptedSettlementCompletedPoll the payment until it settles, then refund it
BP013422The refund type is not supported for this payment, for example account_number on a card paymentUse full_refund or partial_refund for a card payment
BP014422The payer's account number is not available for this payment, so an account_number refund cannot be madeContact BlinkPay support
BP039422The refund would take the total refunded above the payment amount, for example a full_refund after a partial oneRefund only what remains, with a partial_refund
BP045422The card payment settled more than 60 days agoContact BlinkPay support
BP046422The card payment has already been refunded or reversedNo action needed
BP047422Refunds are not enabled for the merchantContact BlinkPay support to have refunds enabled
BP048422full_refund or partial_refund on a bank paymentUse an account_number refund and pay the customer back yourself
BP049422Card refunds are not enabled for the merchantContact BlinkPay support — card refunds are granted separately from bank refunds
BP053422The payment's charge has not completed yet, so there is no money to send backPoll the payment until it reaches AcceptedSettlementCompleted, then refund it. Do not re-create the payment — the consent is already used
BP110404Refund does not existVerify the refund ID is correct
BP111404This refund type is not supported for this transaction (the payer's account number could not be found)Contact BlinkPay support
BP903–BP905502The card processor's answer to the refund is unknownGET the refund to check its status before retrying

Payment Errors

CodeHTTPDescriptionResolution
BP020422Card payment declinedCustomer should retry with a different card or contact their card issuer
BP036422The bank refused the payment for this consent periodEnduring consent: wait for the next period. Single consent: the consent stays Authorised, so once the cause is resolved you may try again with a new idempotency-key
BP044422An enduring-consent payment would take the period's total above maximum_amount_periodWait for the next period, or take a smaller amount
BP102404Payment does not existVerify the payment ID is correct
BP229400The amount is over the bank's payment limitLower the amount; see Payment Limits and payment_limit on the metadata endpoint
BP230400The amount is over your merchant account's payment limitLower the amount, or contact BlinkPay support to change your merchant limit
BP262400An enduring-consent payment is larger than maximum_amount_periodLower the amount
BP263400An enduring-consent payment is larger than maximum_amount_paymentLower the amount
BP277400With surcharging (fee forwarding), the amount including the surcharge is over your merchant payment limit (for an enduring consent, the maximum amount)Lower the amount or the maximum, or contact BlinkPay support to change your merchant limit
BP287400An enduring consent without maximum_amount_payment has a maximum_amount_period over the bank's payment limit, because a single payment could draw the whole period amountSend a maximum_amount_payment at or below the bank's limit
BP288400As BP287, but the maximum_amount_period is over your merchant account's payment limitSend a maximum_amount_payment at or below your limit, or contact BlinkPay support

Fixed Recurring Payment Errors

See the Fixed Recurring Payments guide for how start_date is resolved.

CodeHTTPDescriptionResolution
BP009422Start date is in the pastUse today or a future date (NZ timezone)
BP023422Start date is before the consent's from_timestampUse a date on or after the consent's activation date
BP024422Start date is after the consent's expiry_timestampUse a date inside the consent window, or create a new consent
BP025422The consent has already expiredCreate a new consent
BP030422daily schedule cannot start today — submitted after 21:45 NZSet start_date to tomorrow
BP038422daily schedule whose consent only becomes active after 21:45 NZ on start_dateSet start_date to the following day
BP108404Fixed recurring payment does not existVerify the schedule ID is correct
BP705409Duplicate fixed recurring paymentOnly one active schedule is allowed per consent
BP706409Fixed recurring payment already cancelledNo action needed

Card Payment Errors

These errors are specific to card payment processing. For a detailed troubleshooting guide, see Card Payments.

CodeHTTPDescriptionResolution
BP050422The consent is a card Quick Payment, which completed at the gatewayNothing to do — a Quick Payment has no separate payment step
BP051422The card consent is not authorised, so there is no payment to createWait for the customer to authorise at the gateway, then create the payment
BP052422The card consent carries no card authorisationContact BlinkPay support
BP054422The card consent has already been authorisedCreate the payment, or let the reservation be released; do not authorise the same consent twice
BP256–BP258400Card payment set-up details are missingComplete card payment onboarding with BlinkPay; contact support if it persists
BP259400Card transient token missing from the requestSend the transient token from the card capture step
BP260400No card payment types configuredComplete card payment onboarding with BlinkPay
BP261400No card networks configuredComplete card payment onboarding with BlinkPay
BP270400Card payment set-up is incompleteContact BlinkPay to complete card onboarding

Service Errors

CodeHTTPDescriptionResolution
BP601503Bank service unavailableRetry with backoff, using the same idempotency-key for a POST; check for maintenance
BP602503BlinkPay is temporarily unavailableRetry after the Retry-After time, using the same idempotency-key for a POST
BP603503The bank refused the consent; no payment was sentGET the consent to check its status before trying again

For a request that times out or returns another 5xx with no clear answer, see If a Request Times Out.

Need Help?

For errors not listed here or for assistance troubleshooting:

  1. Check the message field for specific details
  2. Review the Troubleshooting Guide
  3. Contact support@blinkpay.co.nz, including the request-id from the response