Pay an Order
Pay an order.
This method starts the collection process and changes the status of the order from created to pending. If the payment method is card, the status changes automatically from pending to paid when the payment is captured.
This method triggers the following webhooks:
Order Payment Succeeded - This webhook contains the same information as the response.
The following asynchronous webhooks provide information about later changes to the Order object:
Depending on the request values, some of these webhooks are triggered synchronously.
Note
Before you pay an order with a token for a payment method, verify that the value of
is_tokenizablefor the payment method type is true. See also Payment Method Type.If the payment method category is card, certain operations require 3DS authentication. To simulate this authentication in the sandbox, use the URL from the
redirect_urlfield that appears in the response and in the Order Payment Succeeded webhook and Payment Succeeded Webhook. See Simulating 3DS Authentication.A card payment that requires 3DS authentication must be authenticated within 15 minutes.
The code samples include successful requests (200) and bad requests (400).
For error messages that appear due to bad requests (400), see: General Errors
For information about unauthorized request (401) and other authentication errors, see Order Errors.
order
ID of the order to pay. String starting with order_.
Code Samples
.NET
using System; using System.Text.Json; namespace RapydApiRequestSample { class Program { static void Main(string[] args) { try { string order = "order_20bdf9df5841e57ba80e0a68085871ea"; var metadata = new { merchant_defined = "paid" }; var requestObj = new { payment_method = "card_4accae8b711dfc01601311646b59b2af", metadata, }; string request = JsonSerializer.Serialize(requestObj); string result = RapydApiRequestSample.Utilities.MakeRequest("POST", $"/v1/orders/{order}/pay", request); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Error completing request: " + e.Message); } } } }
JavaScript
const makeRequest = require('<path-to-your-utility-file>/utilities').makeRequest; async function main() { try { const body = { payment_method: 'card_4accae8b711dfc01601311646b59b2af', metadata: { merchant_defined: 'paid' } }; const result = await makeRequest( 'POST', '/v1/orders/order_b2d864f246339d580a3cc5061c428ea8/pay', body ); console.log(result); } catch (error) { console.error('Error completing request', error); } }
PHP
<?php $path = $_SERVER['DOCUMENT_ROOT']; $path .= "/<path-to-your-utility-file>/utilities.php"; include($path); try { $object = make_request('post', '/v1/orders/order_20bdf9df5841e57ba80e0a68085871ea/pay'); var_dump($object); } catch(Exception $e) { echo "Error: $e"; } ?>
Python
from pprint import pprint from utilities import make_request order_pay = { "payment_method": "card_b80d265cdd4d316396ca9e2cb0373136", "metadata": { "merchant_defined": True } } result = make_request(method='post', path='/v1/orders/order_cff57e0330d60098fe5f127b9ef5a747/pay', body=order_pay) pprint(result)
/v1/orders/:order/pay
Pay an Order - Payment Method
curl -X post 'https://sandboxapi.rapyd.net/v1/orders/order_07f883eacb9bc126a60d7e147a58e057' \ -H 'access_key: your-access-key-here' \ -H 'Content-Type: application/json' \ -H 'idempotency: your-idempotency-parameter-here' \ -H 'salt: your-random-string-here' \ -H 'signature: your-calculated-signature-here' \ -H 'timestamp: your-unix-timestamp-here' \ --data-raw '{ "payment_method": "card_b9548d9b53a565b2315fecdc6c87f158" }'{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "7ea2ade2-09ed-463a-a668-c855c3b15a97" }, "data": { "id": "order_07f883eacb9bc126a60d7e147a58e057", "amount": 410, "amount_returned": 0, "payment": { "id": "payment_da7d77feb61f599eff1323795bfbbd8e", "amount": 410, "original_amount": 410, "is_partial": false, "currency_code": "USD", "country_code": "GB", "status": "CLO", "description": "", "merchant_reference_id": "", "customer_token": "cus_4e25112ac20e144ad073a614dc46934b", "payment_method": "card_b9548d9b53a565b2315fecdc6c87f158", "payment_method_data": { "id": "card_b9548d9b53a565b2315fecdc6c87f158", "type": "gb_visa_card", "category": "card", "metadata": {}, "image": "", "webhook_url": "", "supporting_documentation": "", "next_action": "not_applicable", "name": "John Doe", "last4": "1111", "acs_check": "unchecked", "cvv_check": "unchecked", "bin_details": { "type": "DEBIT", "brand": "VISA", "level": "CLASSIC", "issuer": "CONOTOXIA SP. Z O.O", "country": "PL", "bin_number": "411111" }, "expiration_year": "35", "expiration_month": "12", "fingerprint_token": "ocfp_e599f990674473ce6283b245e9ad2467", "network_reference_id": "196308", "rapyd_fingerprint_token": "rcfp_0bfddd6cd4ab11ea95b9121ff706f893", "payment_account_reference": "V001TX4ACEB6BBLEGEEMO52B8WLWS" }, "auth_code": null, "expiration": 1764083406, "captured": true, "refunded": false, "refunded_amount": 0, "receipt_email": "johndoe@rapyd.net", "redirect_url": "", "complete_payment_url": "", "error_payment_url": "", "receipt_number": "", "flow_type": "", "address": null, "statement_descriptor": "Doc Team", "transaction_id": "", "created_at": 1763478606, "metadata": {}, "failure_code": "", "failure_message": "", "paid": true, "paid_at": 1763478606, "dispute": null, "refunds": null, "order": null, "outcome": null, "visual_codes": {}, "textual_codes": {}, "instructions": [], "ewallet_id": "ewallet_c1943cfeda5f98247ab117e5d2648861", "ewallets": [ { "ewallet_id": "ewallet_c1943cfeda5f98247ab117e5d2648861", "amount": 410, "percent": 100, "refunded_amount": 0 } ], "payment_method_options": {}, "payment_method_type": "gb_visa_card", "payment_method_type_category": "card", "fx_rate": 1, "merchant_requested_currency": null, "merchant_requested_amount": null, "fixed_side": "", "payment_fees": null, "invoice": "", "escrow": null, "group_payment": "", "cancel_reason": null, "initiation_type": "customer_present", "mid": "", "next_action": "not_applicable", "error_code": "", "remitter_information": {} }, "created": 1763478577, "customer": "cus_4e25112ac20e144ad073a614dc46934b", "currency": "USD", "email": "johndoe@rapyd.net", "external_coupon_code": "", "items": [ { "amount": 200, "currency": "USD", "description": "Deluxe Gamer's Chair", "parent": "sku_6eb43887fd478baaf9223ec7ec17da21", "quantity": 2, "type": "sku" }, { "amount": 10, "currency": "USD", "description": "Shipping", "parent": "", "quantity": 1, "type": "shipping" } ], "metadata": {}, "returns": [], "shipping_address": { "id": "address_fe79d8908a332afa55009f7ddf91dbad", "name": "John Doe", "line_1": "123 First Street", "line_2": "", "line_3": "", "city": "Anytown", "state": "NY", "country": "US", "zip": "12345", "phone_number": "12125559999", "metadata": {}, "canton": "", "district": "", "created_at": 1763478577 }, "status": "paid", "status_transitions": { "canceled": 0, "fulfilled": 0, "paid": 1763478606, "returned": 0, "pending": 1763478606, "partial": 0 }, "updated": 1763478606, "upstream_id": "2025-11-18a", "tax_percent": 0 } }
Pay an Order - Customer
curl -X post 'https://sandboxapi.rapyd.net/v1/orders/order_22d01f7d9122c819212da78b2f3a3cad' \ -H 'access_key: your-access-key-here' \ -H 'Content-Type: application/json' \ -H 'idempotency: your-idempotency-parameter-here' \ -H 'salt: your-random-string-here' \ -H 'signature: your-calculated-signature-here' \ -H 'timestamp: your-unix-timestamp-here' \ --data-raw '{ "customer": "cus_4e25112ac20e144ad073a614dc46934b" }'{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "a43422b8-d4aa-4f85-bce7-1b1661ce18c2" }, "data": { "id": "order_22d01f7d9122c819212da78b2f3a3cad", "amount": 410, "amount_returned": 0, "payment": { "id": "payment_3de65b9f0d0a639b17b9cec49eb71e33", "amount": 410, "original_amount": 410, "is_partial": false, "currency_code": "USD", "country_code": "GB", "status": "CLO", "description": "", "merchant_reference_id": "", "customer_token": "cus_4e25112ac20e144ad073a614dc46934b", "payment_method": "card_b9548d9b53a565b2315fecdc6c87f158", "payment_method_data": { "id": "card_b9548d9b53a565b2315fecdc6c87f158", "type": "gb_visa_card", "category": "card", "metadata": {}, "image": "", "webhook_url": "", "supporting_documentation": "", "next_action": "not_applicable", "name": "John Doe", "last4": "1111", "acs_check": "unchecked", "cvv_check": "unchecked", "bin_details": { "type": "DEBIT", "brand": "VISA", "level": "CLASSIC", "issuer": "CONOTOXIA SP. Z O.O", "country": "PL", "bin_number": "411111" }, "expiration_year": "35", "expiration_month": "12", "fingerprint_token": "ocfp_e599f990674473ce6283b245e9ad2467", "network_reference_id": "196308", "rapyd_fingerprint_token": "rcfp_0bfddd6cd4ab11ea95b9121ff706f893", "payment_account_reference": "V001CGKH4PLK6DGD549CNOC3VZV3X" }, "auth_code": null, "expiration": 1764083596, "captured": true, "refunded": false, "refunded_amount": 0, "receipt_email": "johndoe@rapyd.net", "redirect_url": "", "complete_payment_url": "", "error_payment_url": "", "receipt_number": "", "flow_type": "", "address": null, "statement_descriptor": "Doc Team", "transaction_id": "", "created_at": 1763478796, "metadata": {}, "failure_code": "", "failure_message": "", "paid": true, "paid_at": 1763478797, "dispute": null, "refunds": null, "order": null, "outcome": null, "visual_codes": {}, "textual_codes": {}, "instructions": [], "ewallet_id": "ewallet_c1943cfeda5f98247ab117e5d2648861", "ewallets": [ { "ewallet_id": "ewallet_c1943cfeda5f98247ab117e5d2648861", "amount": 410, "percent": 100, "refunded_amount": 0 } ], "payment_method_options": {}, "payment_method_type": "gb_visa_card", "payment_method_type_category": "card", "fx_rate": 1, "merchant_requested_currency": null, "merchant_requested_amount": null, "fixed_side": "", "payment_fees": null, "invoice": "", "escrow": null, "group_payment": "", "cancel_reason": null, "initiation_type": "customer_present", "mid": "", "next_action": "not_applicable", "error_code": "", "remitter_information": {} }, "created": 1763478744, "customer": "cus_4e25112ac20e144ad073a614dc46934b", "currency": "USD", "email": "johndoe@rapyd.net", "external_coupon_code": "", "items": [ { "amount": 200, "currency": "USD", "description": "Deluxe Gamer's Chair", "parent": "sku_6eb43887fd478baaf9223ec7ec17da21", "quantity": 2, "type": "sku" }, { "amount": 10, "currency": "USD", "description": "Shipping", "parent": "", "quantity": 1, "type": "shipping" } ], "metadata": {}, "returns": [], "shipping_address": { "id": "address_0a29bdf86ef5e1e0110da358efc20ee7", "name": "John Doe", "line_1": "123 First Street", "line_2": "", "line_3": "", "city": "Anytown", "state": "NY", "country": "US", "zip": "12345", "phone_number": "12125559999", "metadata": {}, "canton": "", "district": "", "created_at": 1763478745 }, "status": "paid", "status_transitions": { "canceled": 0, "fulfilled": 0, "paid": 1763478797, "returned": 0, "pending": 1763478797, "partial": 0 }, "updated": 1763478797, "upstream_id": "2025-11-18a", "tax_percent": 0 } }
Bad Request - Order Already Paid
curl -X post 'https://sandboxapi.rapyd.net/v1/orders/order_33e0b16297f5143d8291a17e3beab69a' \ -H 'access_key: your-access-key-here' \ -H 'Content-Type: application/json' \ -H 'idempotency: your-idempotency-parameter-here' \ -H 'salt: your-random-string-here' \ -H 'signature: your-calculated-signature-here' \ -H 'timestamp: your-unix-timestamp-here' \ --data-raw '{ "customer": "card_b9548d9b53a565b2315fecdc6c87f158" }'{ "status": { "error_code": "ERROR_PAY_ORDER", "status": "ERROR", "message": "The request tried to pay an order, but the order was already paid. The request was rejected. Corrective action: None. Determine why multiple attempts were made to pay the same order.", "response_code": "ERROR_PAY_ORDER", "operation_id": "abf8a160-d101-4b5a-9bcc-543f8927aeb8" } }
Bad Request - Customer Not Found
curl -X post 'https://sandboxapi.rapyd.net/v1/orders/order_22d01f7d9122c819212da78b2f3a3cad' \ -H 'access_key: your-access-key-here' \ -H 'Content-Type: application/json' \ -H 'idempotency: your-idempotency-parameter-here' \ -H 'salt: your-random-string-here' \ -H 'signature: your-calculated-signature-here' \ -H 'timestamp: your-unix-timestamp-here' \ --data-raw '{ "customer": "cus_2dbecd82aacdc2a4217b1c5a91344a7b" }'{ "status": { "error_code": "ERROR_GET_CUSTOMER", "status": "ERROR", "message": "The request attempted an operation that requires the ID of a customer, but the customer was not found. The request was rejected. Corrective action: Use the correct ID of the customer, a string starting with 'cus_'.", "response_code": "ERROR_GET_CUSTOMER", "operation_id": "b75021c9-429d-491c-84b5-1045dac6dc7a" } }