Overview

The API endpoints for the live and sandbox servers are:

  • Live: https://api.peachpayments.com/v1/checkout/refund
  • Sandbox: https://testapi.peachpayments.com/v1/checkout/refund

Perform a refund against a successful payment by referencing the unique payment ID provided in the payment status request or in the successful payment webhook.

Perform the refund by sending a POST request over HTTPS to the API endpoint. The POST request must contain the authentication parameters, the initial payment ID, the payment type (RF), refund amount, and currency.

📘

The content-type header must be application/x-www-form-urlencoded or application/json.

Parameters

ParameterDescriptionFormatCondition
authentication.entityIdThe entity for the request. By default this is the channel's ID.AN32
[a-f0-9]{32}
Required
amountThe amount of the payment request. The dot is the decimal separator.N10.N2
[0-9]{1,10}(.[0-9]{2})?
Required
paymentTypeThe payment type for the request. The RF type is supported.A2Required
currencyThe currency code of the payment request amount.A3
[A-Z]{3}
Required
idThe unique identifier of the initial payment that is being refundedAN32
[a-f0-9]{32}
Required
signatureThe signature for the request.AN64
[a-f0-9]{64}
Required

📘

All refund requests require a signature and the API signs all responses with a signature using the secret token as the key.

Example request

curl --location --head 'https://testapi.peachpayments.com/v1/checkout/refund' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'amount=5' \
--data-urlencode 'authentication.entityId=8ac7a4ca7802ed8e0178176ca52222dz' \
--data-urlencode 'id=8ac7a4a284c684140184c7a8f19a553z' \
--data-urlencode 'currency=ZAR' \
--data-urlencode 'paymentType=RF' \
--data-urlencode 'signature=714187e25b25052701ad05cd28ef2be17707868197124595ab5747b3573b7e0z'

Example concatenated string: amount5.00authentication.entityId8ac7a4ca7802ed8e0178176ca52222dzcurrencyZARid8ac7a4a284c684140184c7a8f19a553zpaymentTypeRF

Example responses

{
    "id": "8ac7a49f8af08e94018af09246760e3z",
    "referencedId": "8ac7a4a284c684140184c7a8f19a553z",
    "paymentType": "RF",
    "amount": "5.00",
    "currency": "ZAR",
    "descriptor": " Checkout - All Methods 2700.8920.1608",
    "merchantTransactionId": "021023152z",
    "result": {
        "code": "000.100.110",
        "description": "Request successfully processed in 'Merchant in Integrator Test Mode'"
    },
    "resultDetails": {
        "ConnectorTxID1": "{E5516170-7BE4-4B99-91A2-A38D7E3E442Z}",
        "ConnectorTxID2": "{ADE5D9F2-7CD0-431E-BA4E-2DA4EAC67D9Z}|1757.3833.312Z",
        "AuthorisationCode": "952700",
        "AcquirerReference": "28383:04488500",
        "AcquirerResponse": "0"
    },
    "buildNumber": "1d15c0c7fcf47edcb2d03ab60a7499d6e0b2fdaz@2023-10-02 10:06:28 +0000",
    "timestamp": "2023-10-02 13:27:12+0000",
    "ndc": "8ac7a4c9791c31ee01791f27b739110z_f6f65c64bbe643858a7ed8258bab1e2z"
}
{
    "id": "9307b175ca864c7fa26fa664e55d0204",
    "paymentType": "RF",
    "result": {
        "code": "000.100.110",
        "description": "Request successfully processed in 'Merchant in Integrator Test Mode'"
    },
    "timestamp": "2023-10-03T09:43:04.337734Z",
    "amount": "5.00",
    "currency": "ZAR"
}
{
    "id": "9330a6737db943f29d58a80eeb9bda6z",
    "paymentType": "RF",
    "result": {
        "code": "100.550.701",
        "description": "amounts not matched"
    },
    "timestamp": "2023-10-02T13:33:23.152141Z",
    "amount": "1.00",
    "currency": "ZAR"
}
{
    "id": "ec6dcc1b9ac241ada0cb3da43fef73e1",
    "paymentType": "RF",
    "result": {
        "code": "700.400.200",
        "description": "cannot refund (refund volume exceeded or tx reversed or invalid workflow?)"
    },
    "timestamp": "2023-10-03T09:43:57.955323Z",
    "amount": "6.00",
    "currency": "ZAR"
}
{
    "result": {
        "code": "700.300.100",
        "description": "referenced tx can not be refunded, captured or reversed (invalid type)"
    }
}