Search

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Manual capture

Learn how to use manual capture for in-store payments.

By default, point-of-sale payments are captured automatically. Depending on your business model, you may prefer to manually capture your in-store payments. This lets you settle funds, for example:

  • On fulfillment: You capture the payment when an order is shipped.
  • On return: When the shopper returns unwanted items from an order, you capture the payment for the items they keep.

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.

Alipay and WeChat Pay do not support manual captures, and payments are captured immediately.

To use manual capture:

Before you begin

Before using manual captures:

  1. Set up webhook notifications. The result of a capture or cancel request is provided asynchronously. We inform you whether this is successful with a webhook notification.
  2. Generate an API Key. To make manual capture requests, and to cancel authorisations from a cash register, 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.

Enable manual capture

By enabling manual capture, payment requests made with your merchant account result only in an authorisation. To settle a payment, you need to make an explicit capture request.

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.

To enable manual capture:

  1. Log in to your Customer Area.
  2. Switch to your merchant account.
  3. Go to Account > Settings.
  4. For the POS Capture Delay, 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.

Make a capture request

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

You can request either a full or partial capture, but multiple partial captures are not supported.

To capture a payment:

  1. Make a POST request to the /capture endpoint, specifying:

    • 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
      originalReference -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.
      modificationAmount -white_check_mark- The currency and value being captured.
      For calls to the /capture 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.
      merchantAccount -white_check_mark- The name of your merchant account that is used to process the payment.

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

    curl https://pal-test.adyen.com/pal/servlet/Payment/v52/capture \
    -H 'x-api-key: YOUR_API_KEY' \
    -H 'content-type: application/json' \
    -d '{
        "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
        "originalReference": "981517998282382C",
        "modificationAmount": {
            "currency": "EUR",
            "value": 1099
        }
    }'
  2. In the capture response, note the following:

    • pspReference: Our unique identifier for this capture request. This is different to the pspReference of the authorisation.
    • response: [capture-received]. Your capture request will be processed asynchronously. You will receive a CAPTURE notification with the result.

  3. When you receive the CAPTURE notification, note the following:

    • success: Indicates whether the capture request was successful. Possible values:

      • true: The capture request was successful.
      • 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.

        Payment captures are processed asynchronously, and we will send you a webhook notification to let you know the result. If the capture is successfully sent for processing, this notification contains:

    • eventCode: CAPTURE
    • originalReference: The pspReference of the authorisation.
    • pspReference: Our unique identifier for this capture request.
    • success: true

    If success is false then your capture request failed. Review the reason you received in the notification, fix the issue, and submit the capture request again.

Cancel an authorisation

When using manual capture, you can cancel an authorisation with an API call from your cash register, specifying the pspReference of the authorisation you wish to cancel:

  1. Make a POST request to the /cancel endpoint, specifying:
    • 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
      originalReference -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.
      merchantAccount -white_check_mark- The name of your merchant account that is used to process the payment.
    The example below shows how you would cancel an authorisation that has the pspReference 981517998282382C.
    curl https://pal-test.adyen.com/pal/servlet/Payment/v52/cancel \
    -H 'x-api-key: YOUR_API_KEY' \
    -H 'content-type: application/json' \
    -d '{
      "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
      "originalReference": "981517998282382C"
      }
    }'
  2. In the /cancel response, note the following: 
    • pspReference: Our unique identifier for this cancel request. This is different to the pspReference of the authorisation.
    • response: [cancel-received]. Your cancel request will be processed asynchronously. You will receive a CANCELLATION notification with the result.
  3. When you receive the CANCELLATION notification, note the following:
    • 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.

Capture failed notifications

Although rare, a capture can fail after we have sent it for processing to the bank or third-party processor, for example if:

  • There was a technical issue.
  • The shopper asked their bank to revoke the authorisation.
  • The shopper closed their account.

When this happens, you receive a notification. Refer to CAPTURE_FAILED notification for details and information about how to test failed captures.

You can find an overview of failed captures in your Payment accounting report.

See also