# MD for: https://www.mercadopago.com.co/developers/pt/docs/checkout-api-orders/payment-integration/websites/efecty.md \# Efecty With Mercado Pago's Checkout API, you can also offer payments with \*\*Efecty\*\* for buyers in Colombia. With this payment method, the buyer makes a deferred cash payment at any Efecty location, within the expiration period defined by the integrator. The purchase is considered complete only after the payment is confirmed. If you already have the \[development environment\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/development-environment) set up and want to offer Efecty as a payment method, follow the steps below. > NOTE > > Remember: before setting up the payment methods, choose the way you will process your transactions. The processing mode, whether \*\*manual or automatic\*\*, will be defined at the time of order creation, using the \`processing\_mode\` parameter. For more information, visit the section \[Integration Model\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/integration-model). :::AccordionComponent{title="Add payment form" pill="client-side"} To receive payments with Efecty, add a form to the frontend that securely captures the payer's data. If you already have a payment form, make sure to include Efecty among the available options as shown below and continue to the \[Submit payment\](#bookmark\_submit\_payment) step. | Payment method | \`payment\_method\_id\` | |:---:|:---:| | Efecty | \`efecty\` | \`\`\`html First name Last name E-mail Document type CC CE NIT Document number Pay \`\`\` ::: :::AccordionComponent{title="Submit payment" pill="server-side"} Submit the payment by creating an order that contains the associated payment transaction. To do this, send a request with your :toolTipComponent\[test Access Token\]{content="Private key for the application created in Mercado Pago, used in the backend. Access it at Your integrations > Integration data > Tests > Test credentials. The test Access Token starts with the \`APP\_USR\` prefix."} and the parameters listed below to the :TagComponent{tag="POST" text="/v1/orders" href="/developers/en/reference/online-payments/checkout-api/create-order/post" color="green"} endpoint and run the request. \`\`\`curl curl --location --request POST 'https://api.mercadopago.com/v1/orders' \\ --header 'Content-Type: application/json' \\ --header 'Authorization: Bearer {{YOUR\_ACCESS\_TOKEN}}' \\ --header 'X-Idempotency-Key: {{SOME\_UNIQUE\_VALUE}}' \\ --data-raw '{ "type": "online", "external\_reference": "ext\_ref\_1234", "processing\_mode": "automatic", "total\_amount": "50000", "payer": { "email": "test\_user\_co@testuser.com", "entity\_type": "individual", "first\_name": "John", "last\_name": "Doe", "identification": { "type": "CC", "number": "12345678" }, "phone": { "area\_code": "57", "number": "3001234567" }, "address": { "street\_name": "Calle 10", "street\_number": "100", "zip\_code": "110111", "neighborhood": "Centro", "city": "Bogota" } }, "transactions": { "payments": \[ { "amount": "50000", "expiration\_time": "P1D", "payment\_method": { "id": "efecty", "type": "ticket" } } \] } }' \`\`\` > NOTE > > Order creation is subject to per-client request limits. If you receive a \`429 Too Many Requests\` error, wait the time indicated in the \`Retry-After\` response header before retrying. See \[Possible errors\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/payment-management/integration-errors) for more details. | Parameter | Type | Description | Required | |---|---|---|---| | \`Authorization\` | Header | Refers to your private key, the :toolTipComponent\[test Access Token\]{content="Private key for the application created in Mercado Pago, used in the backend. Access it at Your integrations > Integration data > Tests > Test credentials. The test Access Token starts with the \`APP\_USR\` prefix."}. | Required | | \`X-Idempotency-Key\` | Header | Idempotency key. Ensures each request is processed only once. Use a unique value in the request header, such as a UUID V4 or a random string. | Required | | \`processing\_mode\` | Body. String | Order processing mode: \`automatic\` to create and process automatically, or \`manual\` to process in a separate step. For more information, see \[Integration model\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/integration-model). | Required | | \`total\_amount\` | Body. String | Total transaction amount in Colombian pesos. In the request, send a whole-number numeric string without decimal places. | Required | | \`transactions.payments.amount\` | Body. String | Payment amount in Colombian pesos. It must be equal to \`total\_amount\` and sent as a whole-number numeric string without decimal places. | Required | | \`payer.email\` | Body. String | Buyer's email address. | Required | | \`payer.identification.type\` | Body. String | Buyer's document type. For Colombia: \`CC\` (Cédula de Ciudadanía), \`CE\` (Cédula de Extranjería), \`NIT\`, among others. | Required | | \`payer.identification.number\` | Body. String | Buyer's document number. | Required | | \`transactions.payments.payment\_method.id\` | Body. String | Payment method identifier. For this method, the value must be \`efecty\`. | Required | | \`transactions.payments.payment\_method.type\` | Body. String | Payment method type. For this method, the value must be \`ticket\`. | Required | | \`transactions.payments.expiration\_time\` | Body. String | Voucher expiration period in ISO 8601 duration format. Although you can set it between 1 and 30 days after the payment is created, we recommend setting it between \`P1D\` and \`P3D\` to avoid conflicts between the expiration and the payment crediting, which can take up to 2 business hours after completion. If the payment is made after the established expiration date, the amount will be refunded to the payer's Mercado Pago account. | Optional | > SUCCESS\_MESSAGE > > To learn in detail about all the parameters sent and returned in this request, please refer to our :TagComponent{tag="API" text="API Reference" href="/developers/en/reference/online-payments/checkout-api/overview" color="accent"}. Additionally, if you receive an error when submitting the payment, you can consult our \[list of errors\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/payment-management/integration-errors). The creation of the payment occurs asynchronously in the order. While it is being processed, the order is returned with a \`processing\` status and without information. Once processing is complete, and since this is an offline payment method, the order transitions to \`action\_required\` with the detail \`waiting\_payment\`, indicating that the buyer still needs to complete the payment, as shown in the following response example. We recommend setting up \[Order topic notifications\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/notifications) to receive updates on the status change, including the updated order data. Alternatively, you can choose to send a request to the :TagComponent{tag="GET" text="/v1/orders/{id}" href="/developers/en/reference/online-payments/checkout-api/get-order/get" color="accent"} endpoint to retrieve the updated status. \`\`\`json { "id": "ORDBTA01M0WS8YTXXA36FK58BZKTDQ8S", "type": "online", "processing\_mode": "automatic", "external\_reference": "ext\_ref\_1234", "total\_amount": "50000", "total\_paid\_amount": "0", "country\_code": "COL", "user\_id": "1234567890", "status": "action\_required", "status\_detail": "waiting\_payment", "capture\_mode": "automatic\_async", "currency": "COP", "created\_date": "2026-08-25T15:40:27.396Z", "last\_updated\_date": "2026-08-25T15:40:28.407Z", "transactions": { "payments": \[ { "id": "PAY01M0WS8YW3Z669ASQX7D0YPFE8", "amount": "50000", "expiration\_time": "P1D", "date\_of\_expiration": "2026-08-27T04:59:59.000+00:00", "reference\_id": "123456789012", "status": "action\_required", "status\_detail": "waiting\_payment", "payment\_method": { "id": "efecty", "type": "ticket", "ticket\_url": "https://www.mercadopago.com.co/payments/123456789012/ticket?caller\_id=1234567890&payment\_method\_id=efecty&payment\_id=123456789012&payment\_method\_reference\_id=1234567890&hash=00000000-0000-0000-0000-000000000000", "barcode\_content": "123456789012", "reference": "1234567890", "verification\_code": "1234567890" } } \] } } \`\`\` Although COP amounts must be sent without decimal places in the request, the corresponding fields may be returned with two decimal places in the response, as shown in the example above. > WARNING > > If you have created the order in manual mode, remember that payment processing requires an additional step, sending a request to the :TagComponent{tag="POST" text="Process order" href="/developers/en/reference/online-payments/checkout-api/process-order/post" color="green"} endpoint. ::: :::AccordionComponent{title="Display payment instructions to the buyer" pill="client-side"} After creating the order, display to the buyer the information needed to complete the payment at an Efecty location. This data is available in the \`payment\_method\` fields of the response. | Field | Description | |---|---| | \`ticket\_url\` | URL with full payment instructions. Redirect or display this link to the buyer. | | \`barcode\_content\` | Voucher identifier used as the barcode at the Efecty payment location. | | \`reference\` | Payment reference code. | | \`verification\_code\` | Payment verification code. | The buyer must use the \`ticket\_url\`, or the \`barcode\_content\`/\`reference\`/\`verification\_code\`, at an Efecty location to complete the payment before the \`date\_of\_expiration\` deadline. Once the buyer completes the payment, the order transitions to \`status: processed\`. If you have set up your \[notifications\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/notifications), you will be notified of this via webhook. ::: :::AccordionComponent{title="Cancel payment" pill="server-side"} If you wish, you can cancel a payment created, as long as it is pending or in process; that is, with \`status=action\_required\`. Additionally, we recommend canceling payments that were not made by the established due date to avoid billing and reconciliation issues. > RED\_MESSAGE > > If 30 days pass after the established due date for a payment and it has not been made, Mercado Pago will consider it expired. In these cases, it is not possible to perform a manual cancellation, and the payment status will change to canceled or expired. For more information, please consult the \[Refunds and cancellations\](https://www.mercadopago.com.co/developers/en/docs/checkout-api-orders/payment-management/refunds-cancellations) section. :::