PagoEfectivo ATM
Com o Checkout API do Mercado Pago, também é possível oferecer pagamentos com PagoEfectivo ATM para compradores no Peru. Com esse meio de pagamento, o comprador realiza um pagamento diferido em caixas eletrônicos (ATM) e pontos de pagamento da rede PagoEfectivo. O comprador recebe um código de referência (CIP) e um código de verificação para concluir o pagamento no terminal, dentro do prazo de vencimento definido pelo integrador. A compra é considerada concluída somente após a confirmação do pagamento.
Se você já tem o ambiente de desenvolvimento configurado e deseja oferecer PagoEfectivo ATM como meio de pagamento, siga os passos abaixo.
processing_mode. Para mais informações, acesse a seção Modelo de integração.Para receber pagamentos com PagoEfectivo ATM, é necessário adicionar ao frontend um formulário que capture os dados do pagador de forma segura.
Se você já tem um formulário de pagamento, certifique-se de incluir PagoEfectivo ATM entre as opções disponíveis conforme indicado abaixo e continue para a etapa de Enviar pagamento.
| Meio de pagamento | payment_method_id |
| PagoEfectivo ATM | pagoefectivo_atm |
html<form id="form-checkout" action="/process_payment" method="post"> <div> <label for="payerFirstName">Nome</label> <input id="form-checkout__payerFirstName" name="payerFirstName" type="text"> </div> <div> <label for="payerLastName">Sobrenome</label> <input id="form-checkout__payerLastName" name="payerLastName" type="text"> </div> <div> <label for="email">E-mail</label> <input id="form-checkout__email" name="email" type="text"> </div> <div> <label for="identificationType">Tipo de documento</label> <select id="form-checkout__identificationType" name="identificationType"></select> </div> <div> <label for="identificationNumber">Número do documento</label> <input id="form-checkout__identificationNumber" name="identificationNumber" type="text"> </div> <div> <input type="hidden" name="transactionAmount" id="transactionAmount" value="200"> <button type="submit">Pagar</button> </div> </form>
Os dados de nome, sobrenome e identificação são opcionais para PagoEfectivo ATM. Caso opte por coletar a identificação, obtenha os tipos de documento dinamicamente com o MercadoPago.js já configurado no ambiente de desenvolvimento.
javascript(async function getIdentificationTypes() { try { const identificationTypes = await mp.getIdentificationTypes(); const identificationTypeElement = document.getElementById("form-checkout__identificationType"); createSelectOptions(identificationTypeElement, identificationTypes); } catch (error) { return console.error("Error getting identificationTypes: ", error); } })(); function createSelectOptions(element, options, labelsAndKeys = { label: "name", value: "id" }) { const { label, value } = labelsAndKeys; element.options.length = 0; const fragment = document.createDocumentFragment(); options.forEach((option) => { const item = document.createElement("option"); item.value = option[value]; item.textContent = option[label]; fragment.appendChild(item); }); element.appendChild(fragment); }
O envio do pagamento é realizado criando uma order com a transação de pagamento associada.
Para isso, envie uma requisição com o seu Access Token de testeChave privada da aplicação criada no Mercado Pago, utilizada no backend. Acesse-a em Suas integrações > Dados da integração > Testes > Credenciais de teste. O Access Token de teste começa com o prefixo `APP_USR`. e os parâmetros indicados abaixo para o endpoint /v1/ordersPOST e execute a requisição.
curlcurl --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": "200.00", "description": "Compra de produto MPE", "payer": { "email": "test_user_pe@testuser.com", "first_name": "João", "last_name": "Silva", "identification": { "type": "DNI", "number": "12345678" } }, "transactions": { "payments": [ { "amount": "200.00", "expiration_time": "P1D", "payment_method": { "id": "pagoefectivo_atm", "type": "atm" } } ] } }'
429 Too Many Requests, aguarde o tempo indicado no header Retry-After da resposta antes de tentar novamente. Consulte Possíveis erros para mais detalhes.| Parâmetro | Tipo | Descrição | Obrigatoriedade |
Authorization | Header | Faz referência à sua chave privada, o Access Token de testeChave privada da aplicação criada no Mercado Pago, utilizada no backend. Acesse-a em Suas integrações > Dados da integração > Testes > Credenciais de teste. O Access Token de teste começa com o prefixo `APP_USR`.. | Obrigatório |
X-Idempotency-Key | Header | Chave de idempotência. Garante que cada solicitação seja processada apenas uma vez. Use um valor exclusivo no header da requisição, como um UUID V4 ou uma string aleatória. | Obrigatório |
processing_mode | Body. String | Modo de processamento da order: automatic para criar e processar automaticamente, ou manual para processar em etapa separada. Para mais informações, acesse Modelo de integração. | Obrigatório |
total_amount | Body. String | Valor total da transação. | Obrigatório |
description | Body. String | Descrição do pedido. Aparece no comprovante de pagamento exibido ao comprador no terminal ATM. Mínimo 1 e máximo 150 caracteres. | Obrigatório para pagoefectivo_atm |
payer.email | Body. String | E-mail do comprador. | Obrigatório |
payer.first_name | Body. String | Nome do comprador. | Opcional |
payer.last_name | Body. String | Sobrenome do comprador. | Opcional |
payer.identification.type | Body. String | Tipo de documento do comprador, obtido dinamicamente com mp.getIdentificationTypes(). | Opcional |
payer.identification.number | Body. String | Número do documento do comprador. | Opcional |
transactions.payments.payment_method.id | Body. String | Identificador do meio de pagamento. Neste caso, o valor deve ser pagoefectivo_atm. | Obrigatório |
transactions.payments.payment_method.type | Body. String | Tipo do meio de pagamento. Neste caso, o valor deve ser atm. | Obrigatório |
transactions.payments.expiration_time | Body. String | Prazo de vencimento em formato de duração ISO 8601. Embora seja possível configurá-lo entre 1 e 30 dias após a criação do pagamento, recomendamos definir entre P1D e P3D para evitar conflitos entre o vencimento e a acreditação do pagamento, que pode demorar até 2 horas úteis a partir de sua realização. Caso o pagamento seja realizado após a data de vencimento estabelecida, o valor será devolvido à conta do Mercado Pago do pagador. | Opcional |
A criação do pagamento ocorre de forma assíncrona na order. Enquanto está sendo processada, a order é devolvida com o status de processing e sem informações.
Após a conclusão do processamento, e por se tratar de um meio de pagamento offline, a order passa para o status action_required com o detalhe waiting_payment, indicando que o comprador ainda precisa concluir o pagamento no terminal ATM, como mostrado no exemplo de resposta a seguir. Recomendamos configurar as notificações do tópico Order para receber atualizações sobre a mudança de status, incluindo os dados atualizados da order. Alternativamente, você pode optar por enviar uma requisição ao endpoint /v1/orders/{id}GET para consultar o status atualizado.
json{ "id": "ORDPE01EXAMPLEPE1234NCAKKBF68N64S", "type": "online", "processing_mode": "automatic", "external_reference": "ext_ref_1234", "description": "Compra de produto MPE", "total_amount": "200.00", "total_paid_amount": "0.00", "country_code": "PER", "user_id": "1234567890", "status": "action_required", "status_detail": "waiting_payment", "capture_mode": "automatic_async", "currency": "PEN", "created_date": "2026-07-29T21:03:42.252Z", "last_updated_date": "2026-07-29T21:03:43.985Z", "integration_data": { "application_id": "1234567890123456" }, "transactions": { "payments": [ { "id": "PAYPE01EXAMPLEPE1234BSAR5ZWXX5YZG", "amount": "200.00", "expiration_time": "P1D", "date_of_expiration": "2026-07-30T03:59:59.999+00:00", "reference_id": "1234567890", "status": "action_required", "status_detail": "waiting_payment", "payment_method": { "id": "pagoefectivo_atm", "type": "atm", "ticket_url": "https://www.mercadopago.com.pe/payments/1234567890/ticket?caller_id=1234567890&payment_method_id=pagoefectivo_atm&payment_id=1234567890&payment_method_reference_id=1234567890&hash=00000000-0000-0000-0000-000000000000", "reference": "1234567890", "verification_code": "1234567890", "financial_institution": "PagoEfectivo" } } ] } }
Após criar a order, exiba ao comprador as informações necessárias para concluir o pagamento em um terminal ATM da rede PagoEfectivo. Esses dados estão disponíveis nos campos payment_method da resposta.
| Campo | Descrição |
ticket_url | URL com as instruções completas de pagamento. Redirecione ou exiba esse link ao comprador. |
verification_code | Código de verificação que o comprador usa no terminal ATM. |
reference | Número de referência CIP da transação. |
financial_institution | Rede de pagamento. Retorna "PagoEfectivo". |
O comprador deve utilizar o verification_code e o reference no terminal ATM para concluir o pagamento dentro do prazo de vencimento definido em date_of_expiration.
Depois que o comprador realizar o pagamento, a order passa para status: processed. Se você configurou suas notificações, isso será notificado via webhook.
Caso deseje, você pode cancelar um pagamento criado, desde que esteja pendente ou em processamento. Ou seja, com status=action_required.
Além disso, recomendamos cancelar os pagamentos que não foram realizados dentro da data de vencimento estabelecida, para evitar problemas de cobrança e conciliação.
Para obter mais informações, consulte a seção Reembolsos e cancelamentos.