Adyen-for-platform icon

Refund with original split ratio

Split a refund between the balance accounts in your platform, according to the original payment's split ratio.

If you want to split the refund amount between the balance accounts in your platform the exact same way as you defined in the original payment request, you do not need to include the split instructions in your reversal request.

Requirements

In addition to the general requirements for in-person payments with an Adyen for Platforms integration, take into account the following information.

Requirement Description
Integration type A Terminal API integration with payment terminals or with a Mobile solution.
Webhooks Listen to the following webhook events:

Make a refund without split instructions

  1. From the POIData.POITransactionID object in the Terminal API payment response, get the TransactionID and TimeStamp of the original payment. You need to specify this information in your reversal request.

  2. Make a Terminal API reversal request specifying:

    • The standard SaleToPOIRequest.MessageHeader object, with MessageClass set to Service and MessageCategory set to Reversal.

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Service
      MessageCategory -white_check_mark- Reversal
      MessageType -white_check_mark- Request
      ServiceID -white_check_mark- Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (POIID) being used.
      SaleID -white_check_mark- Your unique ID for the POS system component to send this request from.
      POIID -white_check_mark- The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
    • The ReversalRequest object with:

      Parameter Required Description
      OriginalPOITransaction.POITransactionID -white_check_mark- An object with:
      • TransactionID: The transaction identifier of the original payment in the format tenderReference.pspReference. For example, BV0q001765198054002.CWBC43ZX2VTFWR82
      • TimeStamp: The date and time of the original payment request in UTC format.
      ReversalReason -white_check_mark- Set to MerchantCancel.

    The following Terminal API request example splits a full refund of a USD 188.00 payment according to the original payment split:

    The payment terminal shows a waiting screen until you receive a response.

  3. When you receive the ReversalResponse, note the following:

    Parameter Description
    Response.Result Success means we received your request. The refund itself will be processed asynchronously.
    POIData.POITransactionID.TransactionID The PSP reference for this refund request.
    PaymentReceipt The generated receipt data. This includes REFUND REQUESTED.
    Response.AdditionalResponse This includes:
    • posOriginalAmountValue: The amount (in minor units) of the original payment.
    • posAuthAmountValue: The refund amount (in minor units) that we will try to get authorized.
    • pspReference: The PSP reference for this refund request.

    If your request failed, the ReversalResponse.Response contains:

    • Result: Failure
    • AdditionalResponse: This includes a message explaining why the request failed. For example:
      • Original pspReference required for this operation: Messages like this tell you how to fix the request so you can try again.
      • Transaction is already voided: This message tells you that we already received a full reversal request for the original transaction.
  4. Wait for the CANCEL_OR_REFUND webhook event to learn the outcome of the refund request. Refunds are always processed asynchronously.

Track fund movements

To track the status of the fund transfers initiated by a refund, listen to the following webhooks:

Webhook examples

In the example below, you can see the webhooks you receive when you send a refund request. We send webhooks for each balance account involved in the refund, and each split of the refunded amount.

The following tabs show the webhooks you receive when:

  • The refund amount is deducted from your user's balance account.
  • The commission amount is deducted from your liable balance account.
  • The transaction fees are deducted from the specified balance account.

See also