Skip to main content

Frequently asked questions

For common questions, see Common API FAQ.

Is Express Checkout available in the ePayment API?

Not yet.

It's possible to implement the ePayment API for everything except Express Checkout, and use the eCom API just for Express Checkout.

As mentioned on the API platform overview page: With the Vipps MobilePay API platform, you benefit from a shared API framework for all the APIs. This means that all APIs use the same API keys, authentication methods, terminology, and error message formats. Integrating with our APIs is straightforward, and combining functionalities from multiple APIs is easy.

Can payments be "mixed and matched" between the eCom API and the ePayment API?

Yes, to a certain extent. The eCom API uses the ePayment API behind the scenes.

The ePayment API is backwards compatible with the eCom API, but the eCom API is forwards compatible with the ePayment API:

  • If the payments are initiated with the eCom API, it's possible to capture, cancel, query, and adjust using the ePayment API.
  • Payments initiated with the ePayment API cannot be modified or retrieved using the eCom API.

Important: Freestanding card payments are only available in the ePayment API, so payments initiated with the ePayment API may fail if the eCom API is used.

See: Migration from the eCom API to the ePayment API.

What do all the errors mean?

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:

{
"type":"http://example.com",
"title":"string",
"detail":"string",
"traceId":"string"
}

We will change the above format to match the common Errors format by changing traceId to instance. The ePayment documentation will be updated when that is done.

Important: The unique identifier of an error is the type. When handling errors, you must always identify the type of error by the type field. The title and description may be updated at any time, without warning, to improve the API and make the error messages easier to understand.

TitleDescriptionComment
Amount too smallThe amount is too small. Amounts are specified in minor units, like øre or cent.For NOK the minimum is 100.
Amount invalidThe 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.
Express payment not allowedExpress payment is not allowed for this sales unit.
Missing static shipping detailsExpress payments with static shipping details require a list of shipping options.
No cardsThe user does not have any payment cards.The user must add a valid card in the app.
Payment limit exceededThe merchant's payment request limit is exceeded.
Operation not supportedThe attempted payment operation is not supported.
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.
Cannot capture before reservationThe amount you tried to capture is not reserved. The user must accept the payment before capture can be done.
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.
Capture period expiredPayments can only be captured up to 180 days after reservation. See the FAQ.See Reserve and capture.
Capture idempotency conflictThe capture request in an idempotent retry must be identical to the previous request(s).See Idempotency.
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.
Cancel period expiredPayments can only be canceled within 180 days of the reservation. See the FAQ.See Cancellations.
Cannot cancel pendingCannot cancel a pending payment.See Cancellations.
Order processingToo many concurrent requests. The payment is being processed.
Internal errorInternal error. This may be caused by an incorrect API request. Please check the request. See the status page.
Payment already refundedCannot refund a payment that has already been refunded. Check the payment event log.See GET:/epayment/v1/payments/{reference}/events.
Not enough refundableCannot refund more than the available amount. Check the payment event log.See GET:/epayment/v1/payments/{reference}/events.
Refund period expiredPayments can only be refunded within 365 days of the reservation. See the FAQ.See Reserve and capture.
Refund idempotency conflictThe request in an idempotent retry must be identical to the previous request(s).See Idempotency.
Attempted refund before reservationCannot refund a payment that is not reserved. Check the payment event log.See and GET:/epayment/v1/payments/{reference}/events.
Invalid phone numberThe phone number is invalid. Phone numbers must be in MSISDN format: Country code and subscriber number, but no prefix.
merchantinfo.StaticShippingDetailsPrefix.missingDynamic express payments require the shipping detail prefix.
Customer not foundThe phone number does not belong to a Vipps user, or the user cannot pay businesses. We cannot give more details.
Idempotency errorReference acme-shop-123-order123abc already exists.See Idempotency.
Reference not foundThe reference acme-shop-123-order123abc does not exist for MSN 123456
Idempotency errorIdempotency-Key 49ca711a-acee-4d01-993b-9487112e1def already exists.See Idempotency.
Invalid URLThe parameter htt://example.com is invalid.
Missing required parameterThe parameter something-something is required.
Direct capture not allowedThe sales unit with MSN 123456 is not allowed to use direct capture.
Reserve capture not allowedThe sales unit with MSN 123456 is not allowed to use reserve capture.
Skip landing page not allowedThe sales unit with MSN 123456 is not allowed to skip the landing page.
Long-living payment not allowedThe sales unit with MSN 123456 is not allowed to perform long living payments.
Payment cannot be cancelledReference acme-shop-123-order123abc cannot be cancelled. Invalid state: something-something.See Cancellations.
Payment cannot be refundedReference acme-shop-123-order123abc cannot be refunded. Invalid state: something-something.
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 is already reservedThe payment with reference acme-shop-123-order123abc has already been reserved.
Invalid scopeThe scope something-something is invalid.
Illegal scopeThe scope something-something is illegal. Are you asking for more than you are allowed to?
Approve failedForce approve payment failed (this is only available in the test environment). Reason: something-something.
Expiration date invalidThe expiration date something-something is invalid.
ExpiresAt not allowedCannot set ExpiresAt for flow something-something.