Create and configure a payment order
Server-Side
An order is the central resource of the Orders API that unifies the payment lifecycle. When creating an order for Checkout Pro, you define the transaction details, including products, prices, and buyer data, and obtain a checkout_url to redirect the buyer to the Mercado Pago payment form.
From its creation, the order id will be the unique identifier you use to query, cancel, or refund the transaction throughout the entire flow.
Create the order
To create an order, send a POST with your Test Access TokenTest private key of the application created in Mercado Pago, used in the backend. You can access it through Your integrations > Integration data > Test credentials. and the required parameters to the endpoint Create orderAPI and execute the request. Create one order per payment or transaction flow you want to initiate.
Always include the X-Idempotency-Key header with a unique UUID per attempt to avoid creating duplicate orders.
| Parameter | Type | Required | Description | Example |
type | string | Yes | order type. For Checkout Pro, the only possible value is online. | "online" |
total_amount | string | Yes | Total amount to be paid. Must equal the sum of the unit_price multiplied by the quantity of all items. | "1000.00" |
external_reference | string | No | External reference for the order, used to identify the transaction origin. | "order_pro_123" |
processing_mode | string | Yes | Processing mode. For Checkout Pro, the only possible value is manual. | "manual" |
capture_mode | string | No | Capture mode. Use automatic for an immediate result or automatic_async for asynchronous flows. | "automatic_async" |
marketplace_fee | string | No | Fee charged by the marketplace, credited to the marketplace account. | "50.00" |
expiration_time | string | No | order availability duration in ISO 8601 format. | "P1D" |
payer | object | Conditional | Buyer information. If the object is included, payer.email is required within it. | {"email": "buyer@email.com"} |
items | array | Conditional | List of items to be paid. If included, the title, quantity, and unit_price fields are required per item, and the sum of the unit_price multiplied by the quantity of all items must equal total_amount. | [{"title": "My product", "unit_price": "1000.00", "quantity": 1}] |
config | object | No | order settings: return URLs, payment method restrictions, and checkout behavior. | — |
additional_info | object | No | Supplementary data for fraud prevention. Required for vertical industries such as travel. | — |
description | string | No | Description of the product or service. | "Smartphone" |
curlcurl -X POST \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ENV_ACCESS_TOKEN' \ -H 'X-Idempotency-Key: UNIQUE_KEY' \ 'https://api.mercadopago.com/v1/orders' \ -d '{ "type": "online", "processing_mode": "manual", "total_amount": "1000.00", "external_reference": "order_pro_123", "payer": { "email": "buyer@email.com" }, "items": [ { "title": "My product", "unit_price": "1000.00", "quantity": 1, "unit_measure": "unit", "total_amount": "1000.00" } ] }'
Get the redirect URL ("checkout_url")
When the request is executed, the response will contain the order id and the checkout_url field with the redirect URL to the Mercado Pago payment form. This URL is the address to which you must redirect the buyer so they can complete the transaction. Save the order id for future operations, such as status queries, cancellations, and refunds. Note that country_code, currency, and the checkout_url domain vary depending on the seller's account country.
json{ "id": "ORDTST01KS5AJ6HTK2HRQ3XJ3C2JCKP9", "type": "online", "processing_mode": "manual", "status": "created", "status_detail": "created", "capture_mode": "automatic_async", "external_reference": "order_pro_123", "description": "My product", "total_amount": "1000.00", "total_paid_amount": "0.00", "checkout_url": "https://www.mercadopago.com.mx/checkout/v1/redirect?order_id=ORDTST01KS5AJ6HTK2HRQ3XJ3C2JCKP9", "client_token": "eyJhbGciOiJSUzI1NiIs...", "expiration_time": "P1D", "country_code": "MEX", "user_id": "1858095454", "currency": "MXN", "created_date": "2026-05-21T13:10:56.845Z", "last_updated_date": "2026-05-21T13:10:56.845Z", "integration_data": { "application_id": "8772548647196351" }, "config": { "online": { "retries": { "allowed": false } }, "payment_method": {} }, "items": [ { "title": "My product", "unit_price": "1000.00", "quantity": 1, "unit_measure": "unit", "total_amount": "1000.00" } ] }
See the table below for a description of the main fields returned in the response.
| Field | Type | Description | Example |
id | string | Unique identifier of the order, automatically generated by Mercado Pago. | "ORDTST01KS5AJ6HTK2HRQ3XJ3C2JCKP9" |
type | string | order type. For Checkout Pro, always online. | "online" |
processing_mode | string | order processing mode. For Checkout Pro, always manual. | "manual" |
status | string | Current order status. When created, returns created. | "created" |
status_detail | string | order status detail. | "created" |
capture_mode | string | Payment capture mode. | "automatic_async" |
external_reference | string | External reference of the order defined at creation time. | "order_pro_123" |
description | string | Description of the product or service. | "My product" |
total_amount | string | Total order amount. | "1000.00" |
total_paid_amount | string | Total amount paid so far. | "0.00" |
checkout_url | string | URL to redirect the buyer to the Mercado Pago payment form. | "https://www.mercadopago.com.ar/checkout/..." |
client_token | string | Client token generated for use in the frontend SDK. | "eyJhbGci..." |
expiration_time | string | order availability duration in ISO 8601 format. | "P1D" |
country_code | string | Country code of the seller's account. | "ARG" |
user_id | string | Seller user identifier in Mercado Pago. | "1858095454" |
currency | string | Transaction currency, according to the seller's country. | "ARS" |
created_date | string | order creation date and time in ISO 8601 format. | "2026-05-21T13:10:56.845Z" |
last_updated_date | string | Date and time of the last order update in ISO 8601 format. | "2026-05-21T13:10:56.845Z" |
integration_data | object | Integration data, including the application_id. | {"application_id": "8772548647196351"} |
config | object | Applied order settings, including retry behavior and payment methods. | — |
items | array | List of order items. | — |
With the checkout_url available, the next step is to redirect the buyer to the checkout. Go to Redirect the buyer to the checkout to continue the integration. If you want, you can also see below how to manage the order once it is created.
Manage the order
Once the order is created, you can check its status or search for it at any time using the id returned in the response. Use the following endpoints:
capture_mode, payment method restrictions, or expiration date—, see the Additional settings section.Choose the integration type
Choose the integration type that best suits your needs, whether for a website or a mobile application, and follow the detailed steps to complete the Checkout Pro integration.