Initiate a return request
In this tutorial, you will learn how to use the Global Payments 2 API to initiate a payments return for receivables using the original incoming payment reference numbers. By the end of this tutorial, you will know how to:
- Create a well-formed return request payload.
- Interpret a successful response.
Before you begin
To use return requests, you will need the following:
- A registered and fully onboarded developer account on the J.P. Morgan Payments Developer Portal.
- An active project that provides you with the credentials used to make a request.
- A bank account configured for each country where you want to perform an RTP transaction.
Send a status request
In this step, you’ll learn how to create and send return requests.
curl
--request POST \
--url https://api.payments.jpmorgan.com/payment/v2/payments/returns \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 1b036f9c-8c84-4ce6-b1dd-5979472945a1' \
--header 'Request-Id: 1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p' \
--data '{
"paymentType": "RTP",
"originalPaymentIdentifiers": {
"bankReferenceNumber": "ABC12346000"
},
"paymentIdentifiers": {
"endToEndId": "RT202109311350000"
},
"country": "BR",
"returnType": "PARTIAL",
"value": {
"amount": "50.00",
"currency": "BRL"
},
"additionalInformation": [
"OrderNumber:OD-1234000"
]
}'
This example shows how to create a client-iniciated return using the payment ID of the original transaction.
curl
--request POST \
--url https://api.payments.jpmorgan.com/payment/v2/payments/returns \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 1b036f9c-8c84-4ce6-b1dd-5979472945a1' \
--header 'Request-Id: 1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p' \
--data '{
"paymentType": "RTP",
"originalPaymentIdentifiers": {
"paymentId": "bre4c092-b90d-4b33-bd19-1a3843370bpt"
},
"paymentIdentifiers": {
"endToEndId": "RT202109311350000"
},
"country": "BR",
"returnType": "PARTIAL",
"value": {
"amount": "50.00",
"currency": "BRL"
},
"additionalInformation": [
"OrderNumber:OD-1234000"
]
}'
The following example shows to process a client-iniciated return using the original incoming payments details, including amount, currency, and value date.
--request POST \
--url https://api.payments.jpmorgan.com/payment/v2/payments/returns \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 1b036f9c-8c84-4ce6-b1dd-5979472945a1' \
--header 'Request-Id: 1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p' \
--data '{
"paymentType": "RTP",
"originalPaymentIdentifiers": {
"endToEndId": "RT202109311350000"
"originalValue": {
"currency": "BRL",
"amount": "100.00"
},
"valueDate": "2025-04-15",
},
"paymentIdentifiers": {
"endToEndId": "RT202109311350000"
},
"country": "BR",
"returnType": "PARTIAL",
"value": {
"amount": "50.00",
"currency": "BRL"
},
"additionalInformation": [
"OrderNumber:OD-1234000"
]
}'
Confirm the response
For all use cases, you should receive a successful response containing a returnId
. These values can be used to retrieve the status of your request.
Related
- For more information about return request payment parameters, see Payment parameters.
- For more information about status responses and error codes supported by the Global Payments 2 API, see Global Payments 2 status responses and error codes.
Next steps
Learn how to retrieve the status of your RTP request.