Skip to main content

Make a Payment


Once your customer has linked their account, you can call the API's payments endpoint to make a payment. The auth token is required to make this request. The customerId returned by the account linking process is also required. Note that the customerId should be stored in your backend systems for this and future payments requests.

Headers

    Content-Type String - (Required)
    application-json


    Accept String - (Required)
    application-json


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


Parameters

    source Object - (Required)
    An object containing two fields: id={CUSTOMER_ID}, type='CUSTOMER'


    destination Object - (Required)
    An object containing two fields: id={MERCHANT_ID}, type='MERCHANT'. Note: Your merchant would have been provided at onboarding and is available from the Merchant Portal.


    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

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


    paymentId String
    Link Money-generated payment-related ID


    paymentStatus enum
    PENDING or AUTHORIZED or TERMINAL_FAILED - indicates whether payment was initiated successfully


Post Request

POST - /v1/payments
POST Request
1curl --location --request POST '{API_BASE_URL}/v1/payments' \
2--header 'Content-Type: application/json' \
3--header 'Accept: application/json' \
4--header 'Authorization: Bearer {ACCESS_TOKEN}' \
5--data-raw '{ 
6	source: { 
7		"id": "{CUSTOMER_ID}", 
8		"type": "CUSTOMER" 
9	}, 
10	destination: { 
11		"id": "{MERCHANT_ID}", 
12		"type": "MERCHANT" 
13	}, 
14	"amount": { 
15		"currency": "USD", 
16		"value": 1.00 
17	}, 
18	"clientReferenceId": "{PAYMENT-RELATED_ID}", 
19	"softDescriptor": "{ENTRY_IN_CUSTOMER_BANK_STATEMENT}", 
20	"requestKey": "{UNIQUE_KEY}" 
21}'

Response Body

AUTHORIZED
1{
2	"paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3	"paymentStatus": "AUTHORIZED",
4	"clientReferenceId": "TXN-1234"
5}
TERMINAL_FAILED
1{
2	"paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3	"paymentStatus": "TERMINAL_FAILED",
4	"clientReferenceId": "TXN-1234",
5	"errorDetails": {
6		"errorCode": "PAYMENT_DECLINED",
7		"errorMessage": "Transaction amount is greater than the limit."
8	}
9}
PENDING
1{
2	"paymentId": "5914646d1-7ab5-9553-8389-db80c5c5dda",
3	"paymentStatus": "PENDING",
4	"clientReferenceId": "TXN-1234"
5}