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/refunds1curl --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
1{
2 "paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3 "paymentStatus": "AUTHORIZED",
4 "clientReferenceId": "REFUND-1234"
5}
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}
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.