Search

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Capture payments

Learn about automatic, delayed, and manual capture of point-of-sale payments.

When a point of sale payment is Approved, it is processed in two steps:

  1. Authorisation: The payment details are verified with the issuer, and the funds are reserved.
  2. Capture: The reserved funds are transferred from the shopper to your account.

By default, payments are captured automatically, immediately after authorisation. You can also capture the payment later, using either:

  • Automatic capture with a capture delay.
    This authorises the payment, and gives you a delay before the payment is captured automatically.

  • Manual capture.
    This only authorises the payment. To settle the payment, you need to make an explicit capture request.

Alipay and WeChat Pay do not support delayed captures or manual captures. With these payment methods, payments are captured immediately.

When you have set up a capture delay or manual capture, you can cancel the authorisation on an uncaptured payment, if necessary. This releases the funds back to the shopper.

Automatic capture

With automatic capture, payments are captured automatically, using the capture delay that you specify.

Capture delay

Capture delay is the time between payment authorisation and capture. By default, payments are captured immediately after authorisation. Setting up a delay between authorisation and capture gives you time to cancel the authorisation. This is useful when, for example:

  • A shopper changes their mind soon after purchase.
  • Store staff realize they made a mistake after a payment is Approved.
  • The shopper needs to provide a signature and store staff need some time to verify it.

Without capture delay, you would need to issue a refund in some of these situations.

To be able to change capture settings, you need to have the following user role:

  • Merchant admin

To set up a capture delay:

  1. Log in to your Customer Area.
  2. Switch to your merchant account.
  3. Go to Account > Account settings.
  4. Select a POS Capture Delay of minutes, hours, or days before in-store payments are automatically captured.

    We recommend selecting a delay of 2 hours.
    If you no longer want to use delayed capture, select immediate.

  5. Select Submit.

A payment that is automatically captured does not trigger a separate CAPTURE notification. If you are using delayed automatic capture, you can optionally receive CAPTURE notifications. To enable this functionality, contact our Support Team.

Manual capture

Depending on your business model, you may prefer to manually capture your point-of-sale payments instead of automatically. This lets you settle funds, for example:

  • On fulfillment: You capture the payment when an order is shipped. Or when the customer closes their bar tab or checks out of the hotel.
  • On return: When the shopper returns unwanted items from an order, you capture the payment for the items they keep.

We recommend capturing a payment within 7 days of it being authorised. After this time, an authorisation may be cancelled by the issuer - releasing the funds back to the shopper.

With manual capturing, you can also cancel the authorisation. This releases the funds back to a shopper, and can be used in case of issues shipping an order, or when a shopper returns their whole order.

Enable manual capture

To be able to change capture settings, you need to have the following user role:

  • Merchant admin

To enable manual capture:

  1. Log in to your Customer Area.
  2. Switch to your merchant account.
  3. Go to Account > Account settings.
  4. In the POS Capture Delay list, select manual.
  5. Select Submit.

    If you no longer want to use manual capture, select immediate as the POS Capture Delay, or select a capture delay.

  6. Set up webhook notifications. Manual capture is an asynchronous operation. We inform you whether this is successful with a CAPTURE notification.
  7. Generate an API key. To make manual capture requests, you need to have an API key.

    If you are using cloud-based communications, you can use the existing API key you use for Terminal API calls.

Make a capture request

Capture in Customer Area

You can also manually capture payments in your Customer Area. See Manage payments.

When you have enabled manual capture, you need to capture each payment using the pspReference returned in its payment response.

To capture a payment:

  1. Make a POST request to the /payments/{paymentPspReference}/captures endpoint, specifying:

    • The path with:

      Parameter Required Description
      paymentPspReference -white_check_mark- The pspReference of the authorisation being captured.
      You received this as part of the transactionID field in the response to your payment request. See Transaction identifier.
    • The request header with:

      Parameter Required Description
      content-type -white_check_mark- application/json
      x-api-key -white_check_mark- Your API key.
    • The request body with:

      Parameter Required Description
      merchantAccount -white_check_mark- The name of your merchant account that is used to process the payment.
      amount -white_check_mark- The value and currency being captured.
      For calls to the /payments/{paymentPspReference}/captures endpoint, specify the value in minor units (without a decimal point).
      To capture the full amount, specify a value equal to the requestedAmount you authorised in the payment request.
      To make a partial capture, specify a value less than the requestedAmount you authorised in the payment request. The remainder is released back to the shopper's card.
      reference Optional Specifies a unique identifier for the payment modification. The reference field is useful to tag a partial capture for future reconciliation.

    The example below shows how you would capture a 5.00 EUR payment authorisation that has the pspReference 981517998282382C.

    /captures request
    curl https://checkout-test.adyen.com/v67/payments/981517998282382C/captures \
    -H 'x-api-key: YOUR_API_KEY' \
    -H 'content-type: application/json' \
    -d '{
           "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
           "amount":{
              "currency":"EUR",
              "value":500
           },
           "reference":"YOUR_UNIQUE_REFERENCE"
    }'
  2. In the capture response, note the following:

    • paymentPspReference: The PSP reference of the authorisation.
    • pspReference: The PSP reference associated with this capture request. This is different from the PSP reference of the authorisation.
    • status: received. Your capture request will be processed asynchronously. You will receive the result in a webhook.
    /captures response
    {
      "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
      "paymentPspReference": "981517998282382C",
      "pspReference": "8825408195409505",
      "reference": "YOUR_UNIQUE_REFERENCE",
      "status": "received",
      "amount": {
        "currency": "EUR",
        "value": 2500
      }
    }
  3. Check the CAPTURE notification webhook to learn the outcome of the request.

CAPTURE notification webhook

When we have processed your capture request, we send you a webhook with:

  • eventCode: CAPTURE.
  • originalReference: The PSP reference of the authorisation.
  • pspReference: The PSP reference associated with the capture request.
  • success: Indicates whether the capture request was successful. Possible values:

    • true: The capture request is valid (for example, the authorisation has not expired, and the balance is available) and has been submitted to the bank/third-party processor. In most cases, this means that the funds will be transferred to your account. For information on exceptions, refer to Failed capture.
    • false: The capture request failed. The notification includes a reason field with a short description of the problem. Review the reason, fix the issue if possible, and resubmit the capture request.
{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "amount":{
               "currency":"EUR",
               "value":500
            },
            "eventCode":"CAPTURE",
            "eventDate":"2018-22T15:54:01+02:00",
            "merchantAccountCode":"YourMerchantAccount",
            "originalReference":"981517998282382C",
            "paymentMethod":"mc",
            "pspReference":"8825408195409505",
            "reason":"",
            "success":"true"
         }
      }
   ]
}
{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "amount":{
               "currency":"EUR",
               "value":500
            },
            "eventCode":"CAPTURE",
            "eventDate":"2018-22T15:54:01+02:00",
            "merchantAccountCode":"YourMerchantAccount",
            "originalReference":"981517998282382C",
            "paymentMethod":"mc",
            "pspReference":"8825408195409505",
            "reason":"Insufficient balance on payment",
            "success":"false"
         }
      }
   ]
}

For more information about the included fields, see the CAPTURE notification reference.

Partial manual capture

For partial captures, your account can be set to perform either:

In both cases, to partially capture a payment:

  • Make a call to the /payments/{paymentPspReference}/captures endpoint specifying:
    • amount.value: The partial amount that you want to capture. This amount must be smaller than the original authorised amount.

Single partial capture

For single partial captures, any unclaimed amount that is left over after partially capturing a payment is automatically cancelled.

For some schemes, you can flag each payment request as either a pre-authorisation or a final authorisation. For partial captures, we recommend that you flag the payment request as a pre-authorisation. For more information, refer to Authorisation types.

Multiple partial captures

When your account is enabled for multiple partial captures, the unclaimed amount after an initial capture is not automatically cancelled.
This is necessary for Unified Commerce scenarios where the shopper orders items in a physical store. If you have an order with multiple items to ship, each shipment would correlate to a partial capture.
To enable multiple partial captures, contact our Support Team.

Cancel an authorisation

Cancel in Customer Area

You can also manually cancel uncaptured payments in your Customer Area. For more information, refer to Manage payments.

When you are using a capture delay or manual capture, you can cancel the authorisation on an uncaptured payment using an API call from your cash register.

But before you can do that, you need to:

To cancel an uncaptured payment:

  1. Make a POST request to the /payments/{paymentPspReference}/cancels endpoint, specifying:
    • The path with:
      Parameter Required Description
      paymentPspReference -white_check_mark- The pspReference of the authorisation being cancelled.
      You received this as part of the transactionID field in the response to your payment request. See Transaction identifier.
    • The request header with:
      Parameter Required Value or description
      content-type -white_check_mark- application/json
      x-api-key -white_check_mark- Your API key.
    • The request body with:
      Parameter Required Description
      merchantAccount -white_check_mark- The name of your merchant account that is used to process the payment.
      reference Optional A unique identifier for the cancellation.
    The example below shows how you would cancel an authorisation that has the pspReference 981517998282382C.
    /cancels request
    curl https://checkout-test.adyen.com/checkout/v67/payments/981517998282382C/cancels \
    -H 'X-API-Key: YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{
        "reference": "Cancel123",
        "merchantAccount": "YOUR_MERCHANT_ACCOUNT"
    }'
  2. In the /payments/{paymentPspReference}/cancels response, note the following:
    • paymentPspReference: The PSP reference of the authorisation.
    • pspReference: The PSP reference associated with this cancel request. This is different from the PSP reference of the authorisation.
    • status: received. Your cancel request will be processed asynchronously. You will receive the result in a webhook.
    /cancels response
    {
    "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
    "paymentPspReference": "981517998282382C",
    "pspReference" : "8412534564722331",
    "reference": "Cancel123",
    "status" : "received"
    }
  3. Check the CANCELLATION notification webhook to learn the result of the request.

CANCELLATION notification webhook

When we have processed your cancel request, we send you a webhook with:

  • eventCode: CANCELLATION.
  • originalReference: The PSP reference of the authorisation.
  • pspReference: Same as the pspReference in the /payments/{paymentPspReference}/cancels response.
  • success: Indicates whether the cancel request was successful. Possible values:

    • true: The cancel request was successful.
    • false: The cancel request failed. The notification includes a reason field with a short description of the problem. Review the reason, fix the issue if possible, and resubmit the cancel request.
{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "amount":{
               "currency":"EUR",
               "value":500
            },
            "eventCode":"CANCELLATION",
            "eventDate":"2021-03-05T09:08:05+01:00",
            "merchantAccountCode":"YOUR_MERCHANT_ACCOUNT",
            "originalReference":"8836183819713023",
            "paymentMethod":"mc",
            "pspReference":"8412534564722331",
            "reason":"",
            "success":"true"
         }
      }
   ]
}
{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "amount":{
               "currency":"EUR",
               "value":500
            },
            "eventCode":"CANCELLATION",
            "eventDate":"2021-03-05T09:08:05+01:00",
            "merchantAccountCode":"YOUR_MERCHANT_ACCOUNT",
            "originalReference":"8836183819713023",
            "paymentMethod":"mc",
            "pspReference":"8412534564722331",
            "reason":"Transaction not found",
            "success":"false"
         }
      }
   ]
}

For more information about the included fields, see the CANCELLATION notification reference.

Failed capture

In rare cases, a capture fails even after you received a CAPTURE notification with successtrue. The successful notification means that we sent the request to the card scheme, but the scheme can still reject the request at this point. This can even happen a few days after you submitted the capture request.
Most of the time Adyen can fix the issue, so that you will eventually receive the funds. Sometimes, however, you need to take action yourself. To learn why a capture can fail and what, if anything, you need to do in each case, refer to Reasons for failed capture.
When a capture fails, we inform you of this with a notification containing:

  • eventCode: CAPTURE_FAILED
  • originalReference: The pspReference of the authorisation.
  • pspReference: The pspReference of the capture request.

The notification does not contain the reason why the capture failed. To find out why the capture failed, see the Payment details page in your Customer Area.

CAPTURE_FAILED notification
 {
    "live":"false",
    "notificationItems":[
       {
          "NotificationRequestItem":{
             "amount":{
                "currency":"EUR",
                "value":10003
             },
             "eventCode":"CAPTURE_FAILED",
             "eventDate":"2018-05-27T15:42:02+02:00",
             "merchantAccountCode":"YourMerchantAccount",
             "originalReference":"981517998282382C",
             "paymentMethod":"mc",
             "pspReference":"8825408195409505",
             "reason":"Capture Failed",
             "success":"true"
          }
       }
    ]
 }

An overview of failed captures is available in your Payment accounting report.

See also