Processar pagamentos
Com o Wallet Connect, os pagamentos são processados por meio da Orders API, uma API desenvolvida para simplificar a integração com o Mercado Pago. A order representa a intenção de compra e concentra as transações de pagamento associadas a ela, permitindo debitar o valor diretamente da carteira do comprador a partir do token de pagamento obtido na vinculação.
Antes de processar pagamentos, é necessário ter concluído o fluxo de vinculação e obtido o payer_token. Caso ainda não o tenha feito, consulte a seção Configurar a vinculação.
capture_mode, e determina se o pagamento será debitado imediato à criação da order (automatic) ou apenas autorizado para captura posterior (manual). Caso se defina que a captura será feita posteriormente, após a criação da order você deverá capturá-la através do endpoint de /v1/orders/{order_id}/capturePOST.A criação da order é a operação que efetiva a cobrança na carteira do comprador. Só é possível associar uma transação de pagamento por order em integrações com Wallet Connect.
Para isso, envie uma solicitação ao endpoint /v1/ordersPOST, incluindo seu Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 o payer_token obtido na vinculação.
additional_info.sub_merchant na criação da order, conforme o exemplo abaixo. Para mais informações, acesse a documentação de Facilitadores de pagamentos.curlcurl -X POST \ 'https://api.mercadopago.com/v1/orders' \ -H 'Content-Type: application/json' \ -H 'X-Idempotency-Key: {{SOME_UNIQUE_VALUE}}' \ -H 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \ -d '{ "type": "online", "external_reference": "ext_ref_1234", "total_amount": "24.90", "description": "Smartphone", "capture_mode": "automatic", "integration_data": { "platform_id": "123abc" }, "additional_info": { "sub_merchant": { "id": "123123", "legal_name": "LOJINHA DO ZE", "mcc": "5462", "document_type": "CNPJ", "document_number": "222222222222222", "phone": "5551999999999", "url": "www.nomedofacilitador.com.br", "address_street": "RUA A", "address_door_number": 123, "zip": "01310100", "city": "Sao Paulo", "region_code_iso": "BR-SP", "region_code": "BR", "country": "BRA" } }, "transactions": { "payments": [ { "amount": "24.90", "payment_method": { "type": "wallet", "id": "wallet", "token": "PAYER_TOKEN", "statement_descriptor": "My Store" } } ] } }'
Consulte na tabela abaixo as descrições dos parâmetros que são obrigatórios na requisição e daqueles que, embora sejam opcionais, possuem alguma particularidade importante de ser destacada.
| Parâmetro | Tipo | Descrição | Obrigatoriedade |
X-Idempotency-Key | Header | Chave de idempotência. Essa chave garante que cada solicitação seja processada apenas uma vez, evitando cobranças duplicadas em caso de reenvio da requisição. Use um valor exclusivo por tentativa de pagamento, como um UUID V4 ou uma string aleatória, com tamanho entre 1 e 64 caracteres. | Obrigatório |
Authorization | Header | Refere-se ao Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 |
type | Body. String | Tipo de order, associada à solução do Mercado Pago para a qual foi criada. Para pagamentos com Wallet Connect, o único valor possível é online. | Obrigatório |
external_reference | Body. String | Referência externa da order, atribuída no momento da sua criação. Deve ser um valor único para cada order e não pode conter dados PII. O limite máximo é de 64 caracteres e os permitidos são: letras maiúsculas e minúsculas, números e os símbolos de hífen (-) e sublinhado (_). | Obrigatório |
total_amount | Body. String | Valor total a ser pago. O campo deve obrigatoriamente conter 2 casas decimais, mesmo quando for um número inteiro (por exemplo, "10.00"). | Obrigatório |
description | Body. String | Descrição do produto ou serviço comprado, ou seja, a razão da order de pagamento. | Opcional |
capture_mode | Body. String | Define quando o pagamento é capturado. Os valores possíveis são: - automatic: debita o valor da carteira do comprador imediatamente na criação da order. É o valor padrão caso o campo não seja enviado. - manual: apenas autoriza o pagamento na criação da order, sendo necessário capturá-lo posteriormente pelo endpoint de captura. | Opcional |
integration_data.platform_id | Body. String | Identificador da plataforma atribuído pelo Mercado Pago. | Opcional |
transactions.payments.amount | Body. String | Valor da transação de pagamento. Deve coincidir com o valor informado em total_amount e seguir a mesma regra de casas decimais. | Obrigatório |
transactions.payments.payment_method.type | Body. String | Tipo do meio de pagamento. Para transações com Wallet Connect, o único valor possível é wallet. | Obrigatório |
transactions.payments.payment_method.id | Body. String | Identificador do meio de pagamento. Para transações com Wallet Connect, o único valor possível é wallet. | Obrigatório |
transactions.payments.payment_method.token | Body. String | Token de pagamento (payer_token) obtido ao concluir o fluxo de vinculação da carteira. Deve conter exatamente 32 caracteres alfanuméricos, sem caracteres especiais. | Obrigatório |
transactions.payments.payment_method.statement_descriptor | Body. String | Descrição com a qual o pagamento aparecerá na fatura do comprador. Aceita até 50 caracteres. | Opcional |
transactions.payments.stored_credential | Body. Object | Credencial de pagamento previamente autorizada pelo comprador, utilizada para processar pagamentos recorrentes iniciados pelo vendedor (MIT — Merchant Initiated Transaction). Envie os campos reason com o valor recurring e payment_initiator com o valor merchant apenas em pagamentos recorrentes, omitindo o parâmetro em pagamentos únicos. | Opcional |
additional_info.sub_merchant | Body. Object | Informações sobre o subcomerciante envolvido na transação. Necessário apenas para integrações de Facilitadores de pagamentos — entidades obrigadas pela Circular BCB nº 3978/2020 a identificar os subcomerciantes no momento da transação. | Opcional |
additional_info.sub_merchant.id | Body. String | Código do subcomerciante. | Obrigatório |
additional_info.sub_merchant.legal_name | Body. String | Nome do subcomerciante. | Obrigatório |
additional_info.sub_merchant.mcc | Body. String | MCC (Merchant Category Code) do subcomerciante, conforme deliberação da Abecs e/ou CNAE primário. | Obrigatório |
additional_info.sub_merchant.document_type | Body. String | Tipo de documento do subcomerciante, podendo ser CPF ou CNPJ. | Obrigatório |
additional_info.sub_merchant.document_number | Body. String | Número do CPF ou CNPJ do subcomerciante. | Obrigatório |
additional_info.sub_merchant.phone | Body. String | Telefone do subcomerciante. | Obrigatório |
additional_info.sub_merchant.url | Body. String | URL do facilitador de pagamento. | Obrigatório |
additional_info.sub_merchant.address_street | Body. String | Rua onde o subcomerciante está localizado. | Obrigatório |
additional_info.sub_merchant.address_door_number | Body. Integer | Número do endereço onde o subcomerciante está localizado. | Obrigatório |
additional_info.sub_merchant.zip | Body. String | CEP do subcomerciante. | Obrigatório |
additional_info.sub_merchant.city | Body. String | Cidade onde o subcomerciante está localizado. | Obrigatório |
additional_info.sub_merchant.region_code_iso | Body. String | Código ISO do estado onde o subcomerciante está localizado. | Obrigatório |
additional_info.sub_merchant.region_code | Body. String | Código do país do subcomerciante. | Obrigatório |
additional_info.sub_merchant.country | Body. String | País em que o subcomerciante está localizado. | Obrigatório |
Se a solicitação for bem-sucedida, a resposta retornará o status 201 com a order criada. Para orders com capture_mode=automatic, o pagamento retornará com status=processed e status_detail=accredited, indicando que o valor já foi debitado da carteira do comprador.
json{ "id": "ORDBTA01KJZ06DEJX3DMY26FAB44BXNN", "type": "online", "processing_mode": "automatic", "external_reference": "ext_ref_1234", "description": "Smartphone", "total_amount": "24.90", "total_paid_amount": "24.90", "status": "processed", "status_detail": "accredited", "capture_mode": "automatic", "transactions": { "payments": [ { "id": "PAY01KJZ06DEJX3DMXXXXXXXXXXXX", "amount": "24.90", "paid_amount": "24.90", "status": "processed", "status_detail": "accredited", "payment_method": { "id": "wallet", "type": "wallet", "statement_descriptor": "My Store", "installments": 1 } } ] } }
Dentre os parâmetros retornados, temos os indicados na tabela abaixo.
| Parâmetro | Tipo | Descrição |
id | String | Identificador da order criada, gerado automaticamente pelo Mercado Pago. Utilize-o para consultar, capturar, cancelar ou reembolsar a order. |
status | String | Retorna o status da order. Os valores possíveis são processed, action_required, failed e canceled. |
status_detail | String | Detalha o motivo do status da order. Nos pagamentos aprovados, retorna accredited. Em orders criadas com capture_mode igual a manual, retorna waiting_capture até que a captura seja realizada. |
total_paid_amount | String | Valor efetivamente pago da order, incluindo eventuais descontos aplicados. |
transactions.payments.id | String | Identificador da transação de pagamento, gerado automaticamente pelo Mercado Pago. É necessário para realizar reembolsos parciais. |
transactions.payments.status | String | Retorna o status da transação de pagamento. |
transactions.payments.attempts | Array | Lista ordenada das tentativas de processamento realizadas para este pagamento, com o status e o meio de pagamento de cada uma. |
Caso tenha criado a order em modo manual, ou seja, com o campo capture_mode=manual, lembre-se de que o processamento do pagamento requer uma etapa adicional. Nesse cenário, o valor é apenas autorizado na criação da order e a resposta retornará status=action_required com status_detail=waiting_capture, indicando que a transação aguarda a captura. Para efetivar a cobrança e debitar o valor da carteira do comprador, é necessário realizar uma solicitação ao endpoint /v1/orders/{order_id}/capturePOST. Após a captura, a order passará a retornar status=processed com status_detail=accredited.
A consulta permite obter os dados atualizados de uma order, incluindo o status do pagamento e as tentativas de processamento realizadas. Recomendamos utilizá-la como alternativa às notificações quando for necessário confirmar o resultado de uma transação.
Para realizar a consulta, envie uma solicitação ao endpoint /v1/orders/{order_id}GET, incluindo seu Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 o ID da order (order_id) obtido na resposta à sua criação.
curlcurl -X GET \ 'https://api.mercadopago.com/v1/orders/{{ORDER_ID}}' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}'
| Parâmetro | Tipo | Descrição | Obrigatoriedade |
order_id | Path. String | Identificador da order que se deseja consultar, obtido na resposta à sua criação. | Obrigatório |
Authorization | Header | Refere-se ao Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 |
Se a solicitação for bem-sucedida, a resposta retornará o status 200 com os dados atualizados da order.
json{ "id": "ORDBTA01KJZ06DEJX3DMY26FAB44BXNN", "type": "online", "processing_mode": "automatic", "external_reference": "ext_ref_1234", "description": "Smartphone", "total_amount": "24.90", "total_paid_amount": "24.90", "status": "processed", "status_detail": "accredited", "transactions": { "payments": [ { "id": "PAY01KJZ06DEJX3DMXXXXXXXXXXXX", "amount": "24.90", "paid_amount": "24.90", "status": "processed", "status_detail": "accredited" } ] } }
O cancelamento libera a autorização de um pagamento que ainda não foi capturado, sem que nenhum valor seja transferido da carteira do comprador. Aplica-se apenas a orders no status action_required, ou seja, criadas com capture_mode=manual e ainda pendentes de captura.
Para cancelar uma order, envie uma solicitação ao endpoint /v1/orders/{order_id}/cancelPOST sem enviar o body na requisição. Certifique-se de incluir seu Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 o ID da order (order_id) que deseja cancelar.
curlcurl -X POST \ 'https://api.mercadopago.com/v1/orders/{{ORDER_ID}}/cancel' \ -H 'Content-Type: application/json' \ -H 'X-Idempotency-Key: {{SOME_UNIQUE_VALUE}}' \ -H 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}'
| Parâmetro | Tipo | Descrição | Obrigatoriedade |
order_id | Path. String | Identificador da order que se deseja cancelar, obtido na resposta à sua criação. | Obrigatório |
X-Idempotency-Key | Header | Chave de idempotência. Use um valor exclusivo por requisição para evitar o reprocessamento do cancelamento. | Obrigatório |
Authorization | Header | Refere-se ao Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 |
Se a solicitação for bem-sucedida, a resposta trará a order com status=canceled e status_detail=canceled_transaction, indicando que a autorização foi liberada.
order_already_canceled em novas tentativas.Os reembolsos são transações realizadas quando determinada cobrança é revertida e os valores pagos são devolvidos ao comprador. Com o Wallet Connect, é possível realizar a devolução total ou parcial de uma order já processada.
Escolha a opção que melhor se adequa às suas necessidades e siga as instruções correspondentes.
Para realizar o reembolso total de uma order, envie uma solicitação ao endpoint /v1/orders/{order_id}/refundPOST sem enviar o body na requisição. Certifique-se de incluir seu Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 o ID da order (order_id) que deseja reembolsar.
curlcurl -X POST \ 'https://api.mercadopago.com/v1/orders/{{ORDER_ID}}/refund' \ -H 'Content-Type: application/json' \ -H 'X-Idempotency-Key: {{SOME_UNIQUE_VALUE}}' \ -H 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}'
| Parâmetro | Tipo | Descrição | Obrigatoriedade |
order_id | Path. String | Identificador da order que se deseja reembolsar, obtido na resposta à sua criação. | Obrigatório |
X-Idempotency-Key | Header | Chave de idempotência. Use um valor exclusivo por requisição para evitar o reprocessamento do reembolso. | Obrigatório |
Authorization | Header | Refere-se ao Access Token de testeChave privada utilizada no backend para autenticar as requisições. Na integração com Wallet Connect, em um primeiro momento o seu Access Token será repassado pela equipe responsável por criar a sua aplicação no Mercado Pago, mas após ter acesso a essa aplicação você poderá visualizá-lo 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 |
Se a solicitação for bem-sucedida, a resposta trará o status=refunded e um novo nó transactions.refunds, que irá conter os detalhes do reembolso, além do id da transação de pagamento original e o id da transação de reembolso.
json{ "id": "ORDBTA01KJZ0AYZPD3SXDYCQ109Q69EA", "status": "refunded", "status_detail": "refunded", "transactions": { "refunds": [ { "id": "REF01KJZ0BPKX0BQ0KG1VPBMJDX9G", "transaction_id": "PAY01KJZ0AYZPD3SXDYCQ10RYPF8E", "amount": "24.90", "status": "processed" } ] } }