# MD for: https://www.mercadopago.com.ar/developers/en/docs/checkout-api-orders/integration-model.md \# Integration model Checkout API now processes payments with \*\*Orders\*\*. This API is designed to simplify your development with Mercado Pago: with a single integration, you can access various payment solutions. Additionally, the API makes the integration code more intuitive and provides more detailed error messages, streamlining the development process. ## Differences in processing Previously, payments via Checkout API were processed exclusively through the \*\*Payments API\*\*. Now, it is also possible to process them through Orders, which offers an efficient and straightforward integration alternative. Below are the main differences between the two options. | Feature | Payments API | Orders API | | --- | --- |--- | | Payment processing | Automatic (create and process your transaction). | \[Automatic and manual\](https://www.mercadopago.com.ar/developers/en/docs/checkout-api-orders/integration-model#bookmark\_processing\_modes\_for\_orders) (choosing when to process your transaction). | | Transactions | One transaction per request. | Multiple transactions per request. | | Operations | \[Online payments\](https://www.mercadopago.com.ar/developers/en/docs#online-payments). | \[Online payments\](https://www.mercadopago.com.ar/developers/en/docs#online-payments) and \[In-person payments\](https://www.mercadopago.com.ar/developers/en/docs#inperson-payments) (Mercado Pago Point).| | Notifications | Advanced setup via \`notification\_url\`. | Simpler setup available in the \[Notifications\](https://www.mercadopago.com.ar/developers/en/docs/checkout-api-orders/notifications) section under \[Your integrations\](https://www.mercadopago.com.ar/developers/panel/app). | | Error validation | Returns one error at a time. | Returns a list of all errors in the request. | ## Processing modes for Orders An online payment order can be created to be processed in two modes: \*\*Automatic mode\*\* and \*\*Manual mode\*\*. The definition of the processing mode will be done at the time of creating the order, using the \`processing\_mode\` parameter. Its value should be \`automatic\` for automatic processing, or \`manual\` to process the order manually. See below the characteristics of each mode. > NOTE > > The \`capture\_mode\` parameter indicates how the order will be processed and defines whether the creation response will have a final or intermediate status. It only applies when \`processing\_mode\` is \`automatic\`. In manual mode, it defines whether the previously authorized amount will need to be captured later. For more details, see the :TagComponent{tag="API" text="API Reference" href="/developers/en/reference/online-payments/checkout-api/create-order/post"}. ::::TabsComponent :::TabComponent{title="Automatic mode"} The \*\*automatic mode\*\* is the default mode of the application. Through it, the transaction is completed in a single step and modifications are limited. It is suitable for scenarios where all information needed to complete the transaction is already available at order creation time, including buyer data, items, and payment method information properly tokenized. In this flow, all information is sent in a single request, and the API is responsible for orchestrating communication with the processing layers. The status returned in the order creation response will depend on the \`capture\_mode\` parameter configuration. To create the order in automatic mode, set the \`processing\_mode\` field, which defines the creation and processing format of the transaction, to \`automatic\`. In the \`transactions\` object, the \`payments\` node must contain the complete \`payment\_method\` object, including the card token generated via SDK or API, as shown in the example below: \`\`\`curl { "type": "online", "processing\_mode": "automatic", "external\_reference": "order\_oneshot\_123", "total\_amount": "1000.00", "payer": { "email": "test@testuser.com" }, "transactions": { "payments": \[ { "amount": "1000.00", "payment\_method": { "id": "master", "type": "credit\_card", "token": "677859ef5f18ea7e3a87c41d02c3fbe3", "installments": 12 } } \] } } \`\`\` The API returns the order object with the transaction status already updated (for example, \`processed\` or \`accredited\`): \`\`\`json { "id": "01JC1KVZ0WJY8Y4WA7MZAD5S2T", "status": "processed", "status\_detail": "accredited", "transactions": { "payments": \[ { "id": "pay\_01JC1KVZ0WJY8Y4WA7MZG3A8F2", "status": "processed", "status\_detail": "accredited", "payment\_method": { "id": "master", "type": "credit\_card", "installments": 12 } } \] } } \`\`\` The allowed operations are: - :TagComponent{tag="API" text="Create and process order" href="/developers/en/reference/online-payments/checkout-api/create-order/post"}: responsible for creating the order and simultaneously processing the transaction. - :TagComponent{tag="API" text="Get order" href="/developers/en/reference/online-payments/checkout-api/get-order/get"}: allows you to obtain information about an order, including its status in real time. - :TagComponent{tag="API" text="Search order" href="/developers/en/reference/online-payments/checkout-api/search-order/get"}: allows you to search orders in a massive way using various filters and pagination information. - :TagComponent{tag="API" text="Capture order" href="/developers/en/reference/online-payments/checkout-api/capture-order/post"}: enables the capture of the authorized amount of an order. This option is only valid for credit cards. - :TagComponent{tag="API" text="Cancel order" href="/developers/en/reference/online-payments/checkout-api/cancel-order/post"}: responsible for canceling an existing order that has not yet been processed/finalized. - :TagComponent{tag="API" text="Refund order" href="/developers/en/reference/online-payments/checkout-api/refund-order/post"}: allows the total or partial refund of a payment. The order will be fully refunded if all transactions are refunded completely. - \*\*Total refund\*\*: the value to be refunded should not be indicated in the request’s \`body\`, that must be empty. - \*\*Partial refund\*\*: the amount to be refunded must be specified in the request’s \`body\` along with de transaction ID. All other transactions will remain as they are, and only the modified transaction will be refunded. ::: :::TabComponent{title="Manual mode"} The \*\*manual mode\*\* is the customizable mode of the application, which allows dividing payment processing into configurable steps executed incrementally, adapting to different needs and scenarios. The order is created with initial status \`created\`, without immediate payment processing. The response returns a \`client\_token\` that allows the frontend, via JavaScript SDK, to retrieve the order and add transactions securely, without exposing server credentials. It is also possible to add information in subsequent requests, such as shipping data or payment method selection. To create the order in manual mode, set the \`processing\_mode\` field to \`manual\`. Send the basic sale data (\`items\`, \`total\_amount\`, \`payer\`) and do not include the \`transactions\` object (or send it empty), as transactions will be added later via API or frontend with the \`client\_token\`. Processing is done through the :TagComponent{tag="API" text="Process transaction" href="/developers/en/reference/online-payments/checkout-api/process-order/post"} endpoint. See the request example below: \`\`\`body { "type": "online", "external\_reference": "order\_manual\_123", "total\_amount": "200.00", "payer": { "id": "840634289", "type": "registered" }, "items": \[ { "title": "Produto Exemplo", "quantity": 1, "unit\_price": "200.00" } \] } \`\`\` The API returns the order created with status \`created\` and the \`client\_token\` for the frontend to take over the payment flow: \`\`\`json { "id": "01JCEKQQ43SM391558CF38D6GS", "status": "created", "client\_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "total\_amount": "200.00" } \`\`\` The allowed operations are: - :TagComponent{tag="API" text="Create order (with or without transactions)" href="/developers/en/reference/online-payments/checkout-api/create-order/post"}: responsible for creating and authorizing the order without simultaneous processing. - :TagComponent{tag="API" text="Add transaction" href="/developers/en/reference/online-payments/checkout-api/add-transaction-order/post"}: this operation can only be performed in manual mode and is responsible for adding more than one transaction in the same payload. - :TagComponent{tag="API" text="Modify" href="/developers/en/reference/online-payments/checkout-api/update-transaction-order/put"} and/or :TagComponent{tag="API" text="remove transaction" href="/developers/en/reference/online-payments/checkout-api/delete-transaction-order/delete"}: modifying and removing transactions can only be done in manual mode, and allow to change payment information that had been previously added to the order. These are operations that modifies an item within any field of the \`transactions\` parameter. - :TagComponent{tag="API" text="Capture order" href="/developers/en/reference/online-payments/checkout-api/capture-order/post"}: responsible for capturing the authorized amount of an order. This option is only valid for credit cards. - :TagComponent{tag="API" text="Process transaction" href="/developers/en/reference/online-payments/checkout-api/process-order/post"}: allows executing the transactions created and/or modified in manual mode. - :TagComponent{tag="API" text="Get order" href="/developers/en/reference/online-payments/checkout-api/get-order/get"}: allows you to locate an existing order intent. - :TagComponent{tag="API" text="Search order" href="/developers/en/reference/online-payments/checkout-api/search-order/get"}: allows you to search orders in a massive way using various filters and pagination information. - :TagComponent{tag="API" text="Cancel order" href="/developers/en/reference/online-payments/checkout-api/cancel-order/post"}: responsible for canceling an existing order that has not yet been processed. - :TagComponent{tag="API" text="Refund order or transaction" href="/developers/en/reference/online-payments/checkout-api/refund-order/post"}: in manual mode, total or partial refunds can be created for a payment. The order will be fully refunded if all transactions are refunded completely. - \*\*Total refund\*\*: the value to be refunded should not be indicated in the request’s \`body\`, that must be empty. - \*\*Partial refund\*\*: the amount to be refunded must be specified in the request’s \`body\` along with de transaction ID. All other transactions will remain as they are, and only the modified transaction will be refunded. ::: :::: [ Start integrating ](https://www.mercadopago.com.ar/developers/en/docs/checkout-api-orders/create-application)