Create a payment
Tutorials
- Learn how to Create a payment.
- Learn how to Create a third-party payment.
create payment request
ID of the quote you want to accept to initiate this payment. Must be in UUID format. This will be used as paymentId.
The identity ID of the payment originator in UUID format. You can find the identity ID using the GET /identities operation.
The identity ID of the payment beneficiary in UUID format. You can find the identity ID using the GET /identities operation.
Customer defined value, such as an invoice number.
Purpose Code may be required depending on corridor and payout partner. Valid Purpose Code values vary by corridor.
Source of Cash may be required depending on corridor and payout partner. Valid Source of Cash values vary by corridor.
Application-defined labels for grouping and categorizing payments (e.g., campaign IDs, workflow tags, or batch identifiers). Labels are optional and mutable; they can be added or removed over the payment’s lifetime.
Optional, transaction-specific memo carried with the payment for beneficiary reconciliation. Validation rules (required, allowed characters, max length) vary by corridor. Consult the data requirements for your corridor. Not stored in PII; persisted on the payment object and forwarded to compliance and payout partners. Where possible, the memo will also be delivered to the final beneficiary's credit record, but delivery cannot be guaranteed in all cases due to payout partner or downstream constraints. If omitted, Ripple may generate a memo automatically.
- Mock serverhttps://docs.ripple.com/_mock/products/payments-direct-2/v2025.11/api-docs/payments-direct-api/payments-direct-2-api/v2/payments
- UAT environment with simulated currencyhttps://api.test.ripple.com/v2/payments
- Production environmenthttps://api.ripple.com/v2/payments
curl -i -X POST \
https://docs.ripple.com/_mock/products/payments-direct-2/v2025.11/api-docs/payments-direct-api/payments-direct-2-api/v2/payments \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"quoteId": "7ea3399c-1234-5678-8d8f-d320ea406630",
"originatorIdentityId": "7ea3399c-1234-5678-8d8f-d320ea406630",
"beneficiaryIdentityId": "7ea3399c-1234-5678-8d8f-d320ea406630",
"internalId": "Invoice-123",
"purposeCode": "PAYR",
"sourceOfCash": "EMIN",
"paymentLabels": [
"batchId=aaaaaaaa-1111-bbbb-abab-123412341234"
],
"paymentMemo": "ORDER 2025-09-001 PAYMENT"
}'Valid payment
The unique ID that identifies this payment. This value is the same as the quote ID.
Transaction hash of the crypto payment on the destination blockchain network
The time at which the payment was initiated, specified in UTC.
The time at which this payment expires, specified in UTC.
The time at which JIT funding for this payment expires, specified in UTC.
The time at which the payment state was last updated for this payment, specified in UTC.
| Enum Value | Description |
|---|---|
| INITIATED | You, the payment originator, have initiated a payment. The payment now has a unique |
| VALIDATING | Ripple validates the payment details and reserves funds from your available balance to complete the payment. |
| TRANSFERRING | The payment is moving through the network to the ultimate beneficiary. The payment amount is debited from your available balance. |
| COMPLETED | The payment is complete and the beneficiary has received the funds. |
| FAILED | The payment failed. The failure reason, if available, is listed in the response. Funds that were previously reserved to complete the payment are released and added back to the available balance. |
| QUOTED | A quote has been created, but you haven't accepted it yet to initiate a payment. Note: This state is not shown as part of the payment detail as the payment doesn't exist yet. |
| RETURNED | The payment is returned. The return reason, if available, is listed in the response. Funds that were previously reserved and debited to complete the payment are returned and added back to the available balance. |
The source of cash may be required depending on corridor and payout partner. Valid values for the source of cash vary by corridor.
Purpose Code may be required depending on corridor and payout partner. Valid Purpose Code values vary by corridor.
Application-defined labels for grouping and categorizing payments (e.g., campaign IDs, workflow tags, or batch identifiers). Labels are optional and mutable; they can be added or removed over the payment’s lifetime.
Optional, transaction-specific memo carried with the payment for beneficiary reconciliation. Validation rules (required, allowed characters, max length) vary by corridor. Consult the data requirements for your corridor. Not stored in PII; persisted on the payment object and forwarded to compliance and payout partners. Where possible, the memo will also be delivered to the final beneficiary's credit record, but delivery cannot be guaranteed in all cases due to payout partner or downstream constraints. If omitted, Ripple may generate a memo automatically.
{ "paymentId": "7ea3399c-1234-5678-8d8f-d320ea406630", "cryptoTransactionHash": "0x2b1f8b57dd6008143ff926ea9d9cd2365774cd0c5e6f379558a88c61c52071eb", "initiatedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "jitFundingExpiresAt": "2019-08-24T14:15:22Z", "lastStateUpdatedAt": "2019-08-24T14:15:22Z", "paymentState": "INITIATED", "originator": { "originatorIdentityId": "7ea3399c-1234-5678-8d8f-d320ea406630", "originatorIdentityIdVersion": 1, "originatorIdentityNickName": "Successful Business Sender", "internalId": "Invoice-123", "sourceCurrency": "USD", "sourceAmount": 100, "payin": "FUNDED" }, "destination": { "destinationAmount": 1234.111223, "destinationCountry": "US", "destinationCurrency": "USD", "destinationBlockchainNetwork": "Ethereum, TRON", "beneficiaryIdentityId": "7ea3399c-1234-5678-8d8f-d320ea406630", "beneficiaryIdentityVersion": 1, "beneficiaryIdentityNickName": "Successful business beneficiary", "payout": "BANK" }, "adjustedExchangeRate": { "adjustedRate": 2 }, "fees": [ { … } ], "taxes": [ { … } ], "sourceOfCash": "EMIN", "purposeCode": "PAYR", "transactionDetails": { "paymentProduct": "string", "flowType": "B2B", "thirdPartyPayment": false, "businessUseCase": "ON_RAMP" }, "paymentLabels": [ "batchId=aaaaaaaa-1111-bbbb-abab-123412341234" ], "paymentMemo": "ORDER 2025-09-001 PAYMENT" }