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 Token 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 items[].unit_price × items[].quantity. | "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 | No | Buyer information. The payer.email field is required. | {"email": "buyer@email.com"} |
items | array | No | List of items to be paid. The title, quantity, and unit_price fields are required per item. | [{"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" |
curl
curl -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 and currency values 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.ar/checkout/v1/redirect?order_id=ORDTST01KS5AJ6HTK2HRQ3XJ3C2JCKP9", "client_token": "eyJhbGciOiJSUzI1NiIs...", "expiration_time": "P1D", "country_code": "ARG", "user_id": "1858095454", "currency": "ARS", "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 configure the frontend to redirect the buyer.
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:
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.