Skip to main content

Capture a payment

Capture is the operation that moves the money from the customer's account to the merchant's account. This can take a few days, depending on your bank. For a general introduction to reservations and captures, see Knowledge base: Reserve and Capture.

There are two types of capture: full or partial. With full capture, you capture the entire amount owed. This is the default capture method supported when initiating transactions over the ePayment API. With partial capture, you capture part of the amount. You can do this multiple times up until the full amount is captured. See Partial capture for more details. This is currently only supported for transactions initiated over the Checkout API.

PAYMENT TIME LIMITS

If it's not captured or cancelled within the payment time limits, it will be automatically cancelled.

Full capture

Once the goods or services are delivered or on their way to the customer, it's time to capture the payment.

CAPTURE CONSIDERATIONS

Do not capture before the product or service is provided to the customer, as per the capture regulations.

If it's not captured within the payment time limits, it will be automatically cancelled.

Capture is done with a POST:/epayment/v1/payments/{reference}/capture request.

An example request body:

{
"modificationAmount":{
"currency":"NOK",
"value":49900
}
}

In the response, the aggregate object will be updated to reflect the capture, for example:

{
"aggregate":{
"authorizedAmount":{
"currency":"NOK",
"value":49900
},
"cancelledAmount":{
"currency":"NOK",
"value":0
},
"capturedAmount":{
"currency":"NOK",
"value":49900
},
"refundedAmount":{
"currency":"NOK",
"value":0
}
}
}

A notification will also be sent once the capture is completed if a webhook is registered for the event epayments.payment.captured.v1.

Partial capture

note

Payments initiated with the ePayment API in Finland and Denmark do not support partial capture - you must inquire during onboarding or contact customer service.

If you need partial captures, you can alternatively use the Checkout API to initiate your payments. Then, you'll be able to do multiple partial captures for these payments using the capture endpoint.

If enabled for your sales unit, you can capture part of the full amount owed, instead of the full amount. This can be done multiple times until the authorized amount has been captured.

Specify the amount in the POST:/epayment/v1/payments/{reference}/capture request.

The Idempotency-Key header is there to ensure that only one operation is done, if needed.

An example of a partial capture request body (capturing 100.00 NOK of the 499.00 NOK reserved):

{
"modificationAmount":{
"currency":"NOK",
"value":10000
}
}

Once the capture is completed the aggregate will be updated to reflect this, for example:

{
"aggregate":{
"authorizedAmount":{
"currency":"NOK",
"value":49900
},
"cancelledAmount":{
"currency":"NOK",
"value":0
},
"capturedAmount":{
"currency":"NOK",
"value":10000
},
"refundedAmount":{
"currency":"NOK",
"value":0
}
}
}

If you are not going to capture the rest of the authorized amount you should cancel the remaining amount.

Late capture for MobilePay sales units

For all Checkout customers, and for some other special cases it is possible to do a capture after the normal 14-day interval documented above.

If you are not a Checkout customer, this is a feature that needs to be approved for your sales unit on a case by case basis, and it requires a legitimate need for it to run your business. The typical scenarios are online retail where goods are delivered, and capture is done later than normal after the purchase order was reserved - such as when a product is on back-order and the merchant does not have it available in time.

We cannot guarantee that late capture succeed, so there is chance of a failed capture, for example in the case of insufficient funds, expired cards etc.

Late capture is done exactly as normal capture.

Rate limiting

For rate limiting questions, see: Rate limiting.

Help us improve our documentation

Did you find what you were looking for?