Skip to main content

ePayment API Errors

Here is an overview of errors you may get from the ePayment API. They should be self-explanatory, but please let us know if they can be improved.

Errors responses have this format:

{
"extraDetails": [],
"type": "https://httpstatuses.io/<error-code>",
"title":"string",
"detail":"string",
"traceId":"string"
}

We will change the above format to match the common HTTP response codes and errors format by changing traceId to instance. The ePayment documentation will be updated when that is done.

warning

The title and detail may be updated at any time, without warning, to improve the API and make the error messages easier to understand.

TitleDetailComment
Amount too smallThe amount is too small. Amounts are specified in minor units, like øre or cent.The minimum amounts allowed are NOK 100 øre, DKK 1 øre, EUR 1 cent.
Attempted refund before reservationCannot refund a payment that is not reserved. Check the payment event log.See GET:/epayment/v1/payments/{reference}/events.
Blocking sources not applicableNot possible to block payment sources for market: 'Norwegian'Block payment sources is only available for Danish and Finnish sales units.
Cancel period expiredPayments can only be canceled within 180 days of the reservation.After reservation, payments can only be canceled within the payment capture deadlines.
Cannot cancel a captured paymentCannot cancel a payment that has been captured. Check the payment event log.See Cancellations and GET:/epayment/v1/payments/{reference}/events.
Cannot cancel a non-reserved paymentCannot cancel a payment that is not reserved. Check the payment event log.See Cancellations and GET:/epayment/v1/payments/{reference}/events.
Cannot cancel pendingCannot cancel a pending payment.This error can occur if the CancelTransactionOnly: true in the cancel request. See POST:/epayment/v1/payments/{reference}/cancel.
Cannot capture a cancelled paymentCannot capture a payment that has been cancelled. Check the payment event log.See Cancellations and GET:/epayment/v1/payments/{reference}/events.
Cannot capture before reservationThe amount you tried to capture is not reserved. The user must accept the payment before capture can be done.
Capture amount too highThe total capture amount exceeds the reserved amount. Cannot capture a higher amount than the amount the user has accepted. Check the payment details.
Capture idempotency conflictThe capture request in an idempotent retry must be identical to the previous request(s).See Idempotency.
Capture period expiredCannot capture because the payment's capture period has passed.After reservation, payments can only be captured within the payment capture deadlines. See Reserve and capture.
Customer not foundThe phone number does not belong to a user, or the user cannot pay to your business.This means that the customer can't pay, and it can be for any number of reasons. For example, they may not have an account. If you have set the minimum user age, they may be too young.
Expiration date is too lateThe expiration date something-something is too late. The maximum expiry is 60 days into the future.
Expiration date is too soonThe expiration date something-something is too soon. The minimum expiry is 10 minutes into the future.
Express payment not allowedExpress payment is not allowed for this sales unit.
Idempotency errorIdempotency-Key acme-shop-123-order123abc already exists.See Idempotency.
Idempotency errorReference acme-shop-123-order123abc already exists.See Reference ID.
Illegal scopeThe scope something-something is illegal. Are you asking for more than you are allowed to?This occurs if the merchant asking for NIN or account number without proper permissions.
Internal errorInternal error. This may be caused by an incorrect API request. Please check the request. See the status page.
Invalid amountThe amount is invalid. Amounts must be integers, no decimals. They are specified in minor units, like øre or cent.A common error is to specify amounts with decimals, sometimes due to rounding errors.
Invalid currency for merchantYou must use the currency which matches your merchants registered market.See Offering Vipps/MobilePay in the Nordics.
Invalid CustomerTokenThe parameter CustomerToken is invalid.If you scan your personal QR, you can get a customer token that you can use to start a payment. If this is not valid, this message will be displayed. See Personal QR.
Invalid PersonalQrThe parameter PersonalQr is invalid.See Personal QR.
Invalid phone numberThe phone number is invalid. Phone numbers must be in MSISDN format: Country code and subscriber number, but no prefix.
Invalid scopeThe scope something-something is invalid.
Invalid URLThe parameter http://example.com is invalid.
Long living payments require a receiptIf ExpiresAt is set, receipt is mandatory.See Long-living payment requests.
Long-living payment not allowedThe sales unit with MSN 123456 is not allowed to perform long-living payment requests.
Merchant bank account not verifiedThe sales unit is active, but the merchant has not yet verified its bank account, and the sales unit cannot receive payments.
Metadata capacity exceededThe metadata object exceeds the maximum capacity.
Metadata duplicate keys not allowedDuplicate keys are not allowed.
Metadata key length exceededThe key something-something exceeds the maximum allowed key length.
Metadata value length exceededThe value something-something exceeds the maximum allowed value length.
Missing required parameterThe parameter something-something is required.
Must capture full amountPartial capture is not allowed on this payment.See Partial capture.
Not enough refundableCannot refund more than the available amount. Check the payment event log.See GET:/epayment/v1/payments/{reference}/events.
Order processingToo many concurrent requests. The payment is being processed.
Payment already capturedThe payment has already been captured.See Capture.
Payment already refundedCannot refund a payment that has already been refunded. Check the payment event log.See GET:/epayment/v1/payments/{reference}/events.
Payment cannot be cancelledReference acme-shop-123-order123abc cannot be cancelled. Invalid state: something-something.See Cancellations.
Payment cannot be capturedReference acme-shop-123-order123abc cannot be captured. Invalid state: something-something.
Payment cannot be createdReference acme-shop-123-order123abc cannot be created. Invalid state: something-something.
Payment cannot be refundedReference acme-shop-123-order123abc cannot be refunded. Invalid state: something-something.
Payment is already reservedThe payment with reference acme-shop-123-order123abc has already been reserved.
PUSH_MESSAGE not allowedThe sales unit with MSN 123456 is not allowed to use PUSH_MESSAGE flow.
Reference not foundThe reference acme-shop-123-order123abc does not exist for MSN 123456.
Refund idempotency conflictThe request in an idempotent retry must be identical to the previous request(s).See Idempotency.
Refund not possibleCannot refund single transferred payments.
Refund period expiredPayments can only be refunded within 365 days of the reservation.See Reserve and capture.
Shipping details requiredExpress payments with static shipping details require a list of shipping options.

Error messages only encountered in the test environment:

TitleDetailComment
Approve failedForce approve payment failed. Reason: something-something.This for the "force approve" endpoint in the test environment.
Approve not allowedThe payment is in a state that does not allow approval.This for the "force approve" endpoint in the test environment.
Identification requiredThe user must identify before proceeding.This for the "force approve" endpoint in the test environment.
Invalid payment sourceThe payment source is disabled or does not exist.
No cardsThe user does not have any payment cards.The user must add a valid card in the app.
Operation not supportedThe attempted payment operation is not supported.This for the "force approve" endpoint in the test environment.
Payment limit exceededThe merchant's payment request limit is exceeded.

Help us improve our documentation

Did you find what you were looking for?