Test the integration
The integration test of Mercado Pago Point to your system is based on simulating different transaction statuses using our API. This way, you can ensure the correct functioning of your integration before going to production, through different test scenarios. It is not possible to process real payments on the physical terminal using test accounts; to perform real transactions on the Point device, you must use a production account with real payment methods.
In these tests, you must use test credentialsKeys from the application created in Mercado Pago. You can access them through Your integrations > Application details > Tests > Test credentials.Access test credentials. Although the simulation allows you to validate the integration without interaction with the terminal in each test transaction, it is essential that the terminal is previously linked to your test credentials. For more information on how to perform this association, access Configure terminal.
The status change may take up to 10 seconds to be processed and, during this process, the order will automatically change to the at_terminal status before reaching the requested final status, except in the case of the refunded status, which transitions directly. For more information about possible statuses, see the Order and transaction status documentation.
Simulate test scenarios
Below, select and execute the desired scenarios to validate your integration. To simulate the different test scenarios below, you must use the test Access TokenPrivate key of the application created in Mercado Pago, used in the backend. You can access it through Your integrations > Application details > Tests > Test credentials.Access test credentials.
To test the correct creation of an order and the processing of the associated payment, follow the steps below.
- Make a POST request to Create orderAPI using the test Access TokenPrivate key of the application created in Mercado Pago, used in the backend. You can access it through Your integrations > Application details > Tests > Test credentials.Access test credentials.
- Store the order identifier, returned in the response to its creation under the
idparameter. - Send a POST to the Simulate order statusAPI endpoint, replacing the
{order_id}in the request path with theidof the previously created order. In the request body, include thestatusfield with the valueprocessed, as shown below.
curl -X POST \
'https://api.mercadopago.com/v1/orders/{order_id}/events' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer TEST-232********97488-12********26f67454********f4c8b49c********9526408' \
-d '{
"status": "processed",
"payment_method_type": "credit_card",
"installments": 1,
"payment_method_id": "visa",
"status_detail": "accredited"
}'
See the table below for descriptions of the parameters that can be sent in this request.
| Attribute | Type | Description | Possible values | Required |
status | Body. String | Final status you want to simulate for the order. | processed | Required |
payment_method_type | Body. String | Type of payment method that will be used in the simulation. | debit_card, credit_card, qr | Optional |
installments | Body. Integer | Number of payment installments. | 1 | Conditional. Send this field only when payment_method_type is credit_card. |
payment_method_id | Body.String | Payment method brand. | amex, master, visa, debmaster, debvisa, argencard, cabal, cencosud, cmr, diners, naranja, debcabal | Conditional. Send this field when payment_method_type is debit_card or credit_card. |
status_detail | Body.String | Specific status detail you want to simulate. | accredited | Optional |
If the request is successful, the response will return a status 204 No Content, with no response body.
You will receive a Webhook notification from Mercado Pago with the action field set to order.processed. In the transactions.payments node, you can check the payment status, as shown in the example below.
Additionally, you can query the Get order by IDAPI endpoint to check the order status.
json
{ "action": "order.processed", "api_version": "v1", "application_id": "2644473656269379", "data": { "external_reference": "ext-ref", "id": "ORD01JY0PGGPZ4DBV73E2PXRBCQ84", "status": "processed", "status_detail": "accredited", "total_paid_amount": "5.00", "transactions": { "payments": [ { "amount": "5.00", "id": "PAY01JY0PGGPZ4DBV73E2Q0DQZQCJ", "paid_amount": "5.00", "payment_method": { "id": "visa", "installments": 1, "type": "credit_card" }, "reference": { "id": "115019989861" }, "status": "processed", "status_detail": "accredited" } ] }, "type": "point", "version": 3 }, "date_created": "2025-06-18T05:00:19.274162018Z", "live_mode": false, "type": "order", "user_id": "123456" }
To validate that your integration correctly handles failed payments, you can simulate the failed status of an order.
- Make a new POST request to Create orderAPI using the test Access TokenPrivate key of the application created in Mercado Pago, used in the backend. You can access it through Your integrations > Application details > Tests > Test credentials.Access test credentials.
- Store the order identifier, returned in the response to its creation under the
idparameter. - Send a POST to the Simulate order statusAPI endpoint, replacing the
{order_id}in the request path with theidof the previously created order. In the request body, include thestatusfield with the valuefailed.
curl -X POST \
'https://api.mercadopago.com/v1/orders/{order_id}/events' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer TEST-232********97488-12********26f67454********f4c8b49c********9526408' \
-d '{
"status": "failed",
"payment_method_type": "credit_card",
"installments": 1,
"payment_method_id": "visa",
"status_detail": "insufficient_amount"
}'
See the table below for descriptions of the parameters that can be sent in this request.
| Attribute | Type | Description | Possible values | Required |
status | Body. String | Final status you want to simulate for the order. | failed | Required |
payment_method_type | Body. String | Type of payment method that will be used in the simulation. | debit_card, credit_card, qr | Optional |
installments | Body. Integer | Number of payment installments. | 1 | Conditional. Send this field only when payment_method_type is credit_card. |
payment_method_id | Body. String | Payment method brand. | amex, master, visa, debmaster, debvisa, argencard, cabal, cencosud, cmr, diners, naranja, debcabal | Conditional. Send this field when payment_method_type is debit_card or credit_card. |
status_detail | Body. String | Specific status detail you want to simulate. | bad_filled_card_data, required_call_for_authorize, card_disabled, high_risk, insufficient_amount, invalid_installments, max_attempts_exceeded, rejected_other_reason, processing_error | Optional |
If the request is successful, the response will return a status 204 No Content, with no response body.
You will receive a Webhook notification from Mercado Pago with the action field set to order.failed. In the transactions.payments node, you can check the payment status, as shown in the example below.
Additionally, you can query the Get order by IDAPI endpoint to check the order status.
json
{ "action": "order.failed", "api_version": "v1", "application_id": "123456", "data": { "external_reference": "ext_ref_1234", "id": "ORD01K23219YK26BC6GK0HASE8VT6", "status": "failed", "status_detail": "failed", "transactions": { "payments": [ { "amount": "120", "id": "PAY01K22Y503EJ8JHGF64KGY1PZ2B", "payment_method": { "id": "debvisa", "installments": 1, "type": "debit_card" }, "reference": { "id": "123456789980" }, "status": "failed", "status_detail": "bad_filled_card_data" } ] }, "type": "point", "version": 3 }, "date_created": "2025-08-07T20:03:04.897928692Z", "live_mode": false, "type": "order", "user_id": "123456" }
To confirm that the refund flow is working correctly, you need to simulate the refunded status on a previously processed order. The simulation of this status can only be performed on orders that already have the processed status. Therefore, execute the "Create an order and process the payment" scenario first.
Send a POST to the Simulate order statusAPI endpoint, replacing the {order_id} in the request path with the id of the previously processed order. In the request body, include the status field with the value refunded.
curl -X POST \
'https://api.mercadopago.com/v1/orders/{order_id}/events' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer TEST-232********97488-12********26f67454********f4c8b49c********9526408' \
-d '{
"status": "refunded"
}'
See the table below for descriptions of the parameters that can be sent in this request.
| Attribute | Type | Description | Possible values | Required |
status | Body.String | Final status you want to simulate for the order. Important: To simulate this status, the order must have been previously processed. | refunded | Required |
If the request is successful, the response will return a status 204 No Content, with no response body.
You will receive a Webhook notification from Mercado Pago with the action field set to order.refunded, indicating that the order was refunded, as shown in the example below.
Additionally, you can query the Get order by IDAPI endpoint to check the order status.
json
{ "action": "order.refunded", "api_version": "v1", "application_id": "2644473656269379", "data": { "external_reference": "ext-ref", "id": "ORD01JY0PGGPZ4DBV73E2PXRBCQ84", "status": "refunded", "status_detail": "refunded", "total_paid_amount": "5.00", "type": "point", "version": 4 }, "date_created": "2025-06-18T05:05:08.255803326Z", "live_mode": false, "type": "order", "user_id": "123456" }
To validate that the payment cancellation flow works correctly, you can simulate the canceled status of an order.
- Make a POST request to Create orderAPI using the test Access TokenPrivate key of the application created in Mercado Pago, used in the backend. You can access it through Your integrations > Application details > Tests > Test credentials.Access test credentials.
- Store the order identifier, returned in the response to its creation under the
idparameter. - Send a POST to the Simulate order statusAPI endpoint, replacing the
{order_id}in the request path with theidof the previously created order. In the request body, include thestatusfield with the valuecanceled.
curl -X POST \
'https://api.mercadopago.com/v1/orders/{order_id}/events' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer TEST-232********97488-12********26f67454********f4c8b49c********9526408' \
-d '{
"status": "canceled"
}'
See the table below for descriptions of the parameters that can be sent in this request.
| Attribute | Type | Description | Possible values | Required |
status | Body. String | Final status you want to simulate for the order. | canceled | Required |
If the request is successful, the response will return a status 204 No Content, with no response body.
You will receive a Webhook notification from Mercado Pago with the action field set to order.canceled. In the transactions.payments node, you can check the payment status, as shown in the example below.
Additionally, you can query the Get order by IDAPI endpoint to check the order status.
json
{ "action": "order.canceled", "api_version": "v1", "application_id": "123456", "data": { "external_reference": "ext_ref_1234", "id": "ORD01JYH1Z1YJN4HZ8J3Q0RB3YP6D", "status": "canceled", "status_detail": "canceled", "transactions": { "payments": [ { "amount": "120", "id": "PAY01K22Y503EJ8JHGF64KGY1PZ2B", "status": "canceled", "status_detail": "canceled_on_terminal" } ] }, "type": "point", "version": 3 }, "date_created": "2025-08-07T19:30:44.741479284Z", "live_mode": false, "type": "order", "user_id": "123456" }
To validate that your integration correctly handles expired orders, you can simulate the expired status of an order.
- Make a POST request to Create orderAPI using the test Access TokenPrivate key of the application created in Mercado Pago, used in the backend. You can access it through Your integrations > Application details > Tests > Test credentials.Access test credentials.
- Store the order identifier, returned in the response to its creation under the
idparameter. - Send a POST to the Simulate order statusAPI endpoint, replacing the
{order_id}in the request path with theidof the previously created order. In the request body, include thestatusfield with the valueexpired.
curl -X POST \
'https://api.mercadopago.com/v1/orders/{order_id}/events' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer TEST-232********97488-12********26f67454********f4c8b49c********9526408' \
-d '{
"status": "expired"
}'
See the table below for descriptions of the parameters that can be sent in this request.
| Attribute | Type | Description | Possible values | Required |
status | Body. String | Final status you want to simulate for the order. | expired | Required |
If the request is successful, the response will return a status 204 No Content, with no response body.
You will receive a Webhook notification from Mercado Pago with the action field set to order.expired. In the transactions.payments node, you can check the payment status, as shown in the example below.
Additionally, you can query the Get order by IDAPI endpoint to check the order status.
json
{ "action": "order.expired", "api_version": "v1", "application_id": "123456", "data": { "external_reference": "ext_ref_1234", "id": "ORD01JYH1Z1YJN4HZ8J3Q0RB3YP6D", "status": "expired", "status_detail": "expired", "transactions": { "payments": [ { "amount": "120", "id": "PAY01K22Y503EJ8JHGF64KGY1PZ2B", "status": "expired", "status_detail": "expired" } ] }, "type": "point", "version": 3 }, "date_created": "2025-08-07T19:50:29.172256789Z", "live_mode": false, "type": "order", "user_id": "123456" }
After testing all scenarios and verifying the correct functioning of your integration with Mercado Pago Point, you can Go to production.
