Skip to content
Last updated

Managing Refunds

Overview

This section provides a detailed guide on how Main Account holders can manage refunds for In-Person Payments processed through Ryft.

Presenting Refunds on the Terminal

When processing a refund for an In-Person Payment, it is important to ensure that the refund is presented correctly on the payment terminal. This involves sending the appropriate refund request to the terminal and confirming that the refund has been successfully processed.

To initiate a refund after a previously successful in-person payment, you can use any of your registered terminals.

You can send a request to our terminal API - create refund endpoint, providing your terminal's unique ID, the original payment ID, the refund amount, currency, and any other required details.

Example Request:

inPersonTerminalInitRefund - Payload Example
{
    "paymentSession": {
        "id": "ps_XXXXXXX" // The ID of the payment you want to refund
    }
}

If the payment you wish to refund was for a Sub-Account, make sure you include the Account field in your request headers.

In the example above, we are requesting a refund for the payment with the ID ps_XXXXXXX. You can optionally include:

  • an amount object if you wish to process a partial refund;
  • a refundPlatformFee boolean field if you want to refund any platform fees associated with the original payment (as applicable for marketplace accounts).

Provided the request is successful, the API will return a payload containing various details about the initiated refund, after which the terminal will prompt the customer to present their card for the refund.

Example Response:

inPersonTerminalInitRefund - Response Example
{
    "id": "tml_XXXXXXXX",
    "name": "Main Desk Terminal",
    "location": {"id": "iploc_XXXXXXXXX"},
    "device": {"type": "A920Pro", "serialNumber": "1853777898"},
    "action": {
        "type": "Transaction",
        "status": "InProgress",
        "id": "tmlact_XXXXXXXXX",
        "transaction": {
            "type": "Refund",
            "paymentSessionId": "ps_XXXXXXXX",
            "amounts": {"requested": 1742},
            "currency": "GBP",
            "settings": {"receiptPrintingSource": "Terminal"},
        },
        "createdTimestamp": 1761231259,
    },
    "createdTimestamp": 1760456293,
    "lastUpdatedTimestamp": 1761231259,
}

The action object contains important information about the current status of the refund.

Next Steps

  • Monitoring Refunds: You can monitor the status of refunds through the Ryft Portal or by using the relevant API endpoints to check the status of the refund transaction. You can find more information on how to do this in the Managing Payments section.
  • Webhooks: Also mirroring online payments, you will receive webhooks for in-person refund events. For more details on the available webhooks and how to set them up, please refer to the Webhooks section.