Skip to main content

Partial Captures & Refunds

How to capture or refund less than the full amount of a payment, including single and multiple partial captures and partial refunds.

You do not always need to capture or refund the full amount of a payment. This page covers capturing part of an authorization and refunding part of a captured payment. For the basics of how authorization and capture work, see Authorization and Capture.

Partial capture

With manual capture enabled, you can capture less than the authorized amount. There are two modes:

  • Single partial capture: you capture part of the authorization once. Any unclaimed amount left over is automatically cancelled. For payment requests you intend to partially capture, Adyen recommends flagging them as a pre-authorization.

  • Multiple partial captures: the unclaimed amount after a partial capture is not automatically cancelled, so you can capture the rest later. This suits cases like shipping an order in several parts, where each shipment is one partial capture. Multiple partial capture is disabled by default. To enable it, route the request through Valpay so Adyen can turn the feature on for your account.

Separate capture is only available for some payment methods.

Common uses:

  • Shipping an order in several packages and capturing each shipment as it goes out.

  • Capturing only the in-stock items now when part of an order is on backorder.

  • Confirming the final amount of a booking at check-in or pickup before capturing.

Capture request

Make a POST request to /payments/{paymentPspReference}/captures, where paymentPspReference is the PSP reference of the authorization. Include:

  • merchantAccount: your merchant account.

  • amount.value: the amount in minor units. For a partial capture this must be less than the authorized amount.

  • amount.currency: must match the currency of the payment.

  • reference: your identifier for the capture, useful for reconciliation.

POST /v71/payments/{paymentPspReference}/captures
{
  "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
  "amount": { "currency": "USD", "value": 600 },
  "reference": "CAPTURE-ORDER-12345-1"
}

The response returns status: received. Capture is processed asynchronously, so wait for the webhook.

Partial refund

After a payment is captured, you can refund it. For payment methods that support partial refunds, you can return part of the captured amount. You can also make multiple partial refunds, as long as the sum of the refund amounts is not more than the captured amount.

Common uses:

  • Refunding one returned item from a larger order while keeping the rest.

  • Issuing a price-adjustment or goodwill credit for part of an order.

  • Refunding a cancelled portion of an order, for example one of several booked nights.

Refund request

Make a POST request to /payments/{paymentPspReference}/refunds, where paymentPspReference is the PSP reference of the payment. Include:

  • merchantAccount: your merchant account.

  • amount.value: the amount in minor units. For a partial refund this must be the same as or less than the captured amount.

  • amount.currency: must match the currency used in the authorization.

  • reference: your identifier for the refund, useful for reconciliation.

  • merchantRefundReason (optional): for example CUSTOMER REQUEST, RETURN, FRAUD, DUPLICATE, or OTHER.

POST /v71/payments/{paymentPspReference}/refunds
{
  "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
  "amount": { "currency": "USD", "value": 400 },
  "reference": "REFUND-ORDER-12345-1"
}

The response returns status: received. Refunds are processed asynchronously, and it can take time before the funds reach the shopper.

Amount and currency rules

  • A capture amount must be the same as or less than the authorized amount.

  • A refund amount must be the same as or less than the captured amount, and the sum of multiple refunds cannot exceed it.

  • The capture or refund currency must match the currency of the original authorization. A mismatch is rejected.

Webhooks

Captures and refunds are asynchronous, so rely on webhooks for the outcome rather than the immediate response:

  • CAPTURE with success: true means the capture request was valid and submitted. success: false includes a reason you can act on. A separate CAPTURE_FAILED is sent in the rare case the scheme later rejects the capture.

  • REFUND with success: true means the refund was validated and sent to the scheme. success: false includes a reason. A REFUND_FAILED is sent in the rare case the scheme later rejects the refund.

Note that automatically captured payments do not trigger a separate CAPTURE webhook. Contact Valpay Support to confirm multiple partial captures and the relevant webhooks are enabled.

Did this answer your question?