QRA
Quick Reference
WhatPagamentos QRA (Argentina)
WhyPagamentos instantâneos por QR na Argentina — interoperáveis entre todos os bancos e fintechs
Reading Time10 min
DifficultyBeginner
PrerequisitesAutenticação → Ambiente
Contexto do mercado argentino
Transferencias 3.0 (regulada pelo BCRA) entrega pagamentos por QR interoperáveis entre bancos e fintechs. Um único QR funciona com qualquer app participante.
Por que QRA
| Vantagem | Detalhe |
|---|---|
| Interoperável | Qualquer app bancária ou de carteira argentina pode escanear e pagar |
| Liquidação instantânea | Transferência em tempo real via compensação do BCRA |
| Sem chargeback | Pagamento push — irrevogável após confirmação |
| Amplo alcance | Mais de 90% dos adultos com acesso bancário ou a carteira |
Fluxo de pagamento
Passo a passo
- Criar cobrança —
POSTcomtype_charge: "qra"ecurrency: "ARS". - Renderizar o QR — Use
qra_payload.qr_code(PNG em Base64). - Pagador escaneia — Qualquer app compatível conclui a transferência.
- Webhook — Escute
paid,canceledou erros terminais.
Criar uma cobrança QRA
- cURL
- Python
- JavaScript
curl -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "María García",
"payer_email": "maria.garcia@example.com",
"payer_tax_id": "27123456789",
"payer_cell_phone": "+5491155551234",
"installment_value": 5000,
"installment_count": 1,
"items": [{"name":"Zapatillas","quantity":1,"total_amount":5000,"unit_amount":5000,"sku":"ZAP-001","code":"Z001"}],
"payer_address": {"street":"Corrientes","address_number":"1200","complement":"","neighborhood":"Centro","city":"CABA","state":"C","postal_code":"C1043","country":"AR"},
"currency": "ARS",
"due_date": "2026-12-31T23:59:59Z",
"description": "Compra via QRA",
"type_charge": "qra",
"webhook_url": "https://yoursite.com/webhook",
"redirect_url": "https://yoursite.com/"
}'
import requests
charge = requests.post(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
headers={"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"},
json={
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "María García",
"payer_email": "maria.garcia@example.com",
"payer_tax_id": "27123456789",
"payer_cell_phone": "+5491155551234",
"installment_value": 5000,
"installment_count": 1,
"items": [{"name": "Zapatillas", "quantity": 1, "total_amount": 5000, "unit_amount": 5000, "sku": "ZAP-001", "code": "Z001"}],
"payer_address": {"street": "Corrientes", "address_number": "1200", "complement": "", "neighborhood": "Centro", "city": "CABA", "state": "C", "postal_code": "C1043", "country": "AR"},
"currency": "ARS",
"due_date": "2026-12-31T23:59:59Z",
"description": "Compra via QRA",
"type_charge": "qra",
"webhook_url": "https://yoursite.com/webhook",
"redirect_url": "https://yoursite.com/",
},
)
qr_image = charge.json()["qra_payload"]["qr_code"]
const response = await fetch(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
wallet_uuid: "00000000-0000-0000-0000-000000000000",
merchant_id: "11111111-1111-1111-1111-111111111111",
payer_name: "María García",
payer_email: "maria.garcia@example.com",
payer_tax_id: "27123456789",
payer_cell_phone: "+5491155551234",
installment_value: 5000,
installment_count: 1,
items: [{ name: "Zapatillas", quantity: 1, total_amount: 5000, unit_amount: 5000, sku: "ZAP-001", code: "Z001" }],
payer_address: { street: "Corrientes", address_number: "1200", complement: "", neighborhood: "Centro", city: "CABA", state: "C", postal_code: "C1043", country: "AR" },
currency: "ARS",
due_date: "2026-12-31T23:59:59Z",
description: "Compra via QRA",
type_charge: "qra",
webhook_url: "https://yoursite.com/webhook",
redirect_url: "https://yoursite.com/",
}),
}
);
const { qra_payload } = await response.json();
Encoding UTF-8
Codifique qra_payload para geração do QR em UTF-8 e sem transformações — bytes alterados quebram a leitura.
Exemplo de resposta
{
"charge_uuid": "81f0045c-301a-45c4-96bc-5395f7cf35f9",
"local_currency": 5000,
"currency": "ARS",
"type": "qra",
"status": "issued",
"qra_payload": {
"qr_code": "data:image/png;base64,iVBORw0KGgoAAAANSUh…",
"expiration_date": "2026-01-15 18:30:00.000000"
}
}
Ciclo de vida do status
| Status | Descrição |
|---|---|
issued | QR emitido; aguardando pagamento |
paid | Confirmado pela rede de compensação |
canceled | Expirou ou foi anulado |
refunded | Estorno processado quando elegível |