Skip to main content

Issue a Refund


Given a paymentId, makes a refund request for a provided amount.

Headers

    Content-Type String - (Required)
    application-json


    Accept String - (Required)
    application-json


    Authorization String - (Required)
    Bearer {ACCESS_TOKEN} (See Authentication)


Parameters

    Content-Type String - (Required)
    application-json


    Accept String - (Required)
    application-json


    Authorization String - (Required)
    Bearer {ACCESS_TOKEN} (See Authentication)


    paymentId String - (Required)
    Link Money-generated payment-related ID (See Make Payments)


    amount Object - (Required)
    An object containing two fields: currency='USD', value={DOLLAR_VALUE}. Note: Payment amount must be a decimal number with a maximum of two decimal digits after decimal separator.


    clientRefefenceId String - (Optional)
    Unique merchant-generated ID that identifies this payment. This ID is stored along with the payment request for ease of reconciling.


    softDescriptor String - (Optional)
    This is an optional freeform text field that will travel with the payment instruction to the RDFI. Please note that this information may or may not be displayed to the customer, based on the bank’s capabilities, and method of access (i.e., online banking, statement, etc.) - 80 Alphanumeric Character Limit.


    requestKey String - (Required)
    Merchant-generated unique key for this specific payment call. This is used to avoid duplicate payment calls (idempotency). The payment call is rejected if a payment record already exists in the system with the same request key.


Returns

    paymentId String
    Link Money-generated payment-related ID


    paymentStatus enum
    PENDING, AUTHORIZED, or TERMINAL_FAILED - indicates if the refund was initiated successfully


    clientReferenceId String
    Unique merchant-generated ID that identifies this payment. This ID is the same value that was submitted with the payment request.


    errorDetails enum
    Detailed information on why a refund request has been rejected or failed.


Post Request

POST - /v1/refunds
POST Request
1curl --location --request POST '{API_BASE_URL}/v1/refunds' \
2--header 'Content-Type: application/json' \
3--header 'Accept: application/json' \
4--header 'Authorization: Bearer {ACCESS_TOKEN}' \
5--data-raw '{ 
6	"paymentId": "{DEBIT-PAYMENT_ID}", 
7	"amount": { 
8		"currency": "USD", 
9		"value": 1.00 
10	}, 
11	"clientReferenceId": "{PAYMENT-RELATED_ID}", 
12	"softDescriptor": "{ENTRY_IN_CUSTOMER_BANK_STATEMENT}", 
13	"requestKey": "{UNIQUE_KEY}" 
14}'

Response Body

AUTHORIZED
1{
2	"paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3	"paymentStatus": "AUTHORIZED",
4	"clientReferenceId": "REFUND-1234"
5}
TERMINAL_FAILED
1{
2	"paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3	"paymentStatus": "TERMINAL_FAILED",
4	"clientReferenceId": "REFUND-1234",
5	"errorDetails": {
6		"errorCode": "CUSTOMER_NOT_DEBITED",
7		"errorMessage": "Original debit transaction was not successful"
8	}
9}
PENDING
1{
2	"paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3	"paymentStatus": "PENDING",
4	"clientReferenceId": "REFUND-1234"
5}

Once your customer has linked their account, and successfully completed a payment you can call the Refunds API to make a refund request for that payment. The original paymentId is required to complete the request.

If a payment is still processing or has been settled for less than 3 business days, the refund request will be returned with a PENDING status until the 3-business day threshold has been met.

Once the 3-business days post-settlement have passed the refund request will fall into AUTHORIZED status meaning that the money movement has commenced.

Lastly, if the original transaction encounters an error at any point or falls into Link Money’s cover it will return a FAILED status for the refund request.