Criar Transacao
Cria uma transacao de pagamento. Suporta PIX, BOLETO e CREDIT_CARD. Valores monetarios sao sempre em centavos (inteiros).
POST
/api/v1/transactions/createHeaders
| Header | Valor | Status |
|---|---|---|
| Content-Type | application/json | Obrigatorio |
| Accept | application/json | Obrigatorio |
| X-Client-Id | <client_id> | Obrigatorio |
| X-API-Key | <api_key> | Obrigatorio |
| Idempotency-Key | tx_<unique> | Recomendado |
O header Idempotency-Key e recomendado para evitar duplicidade de transacoes.
Importante
Todos os valores monetarios (amount, unitPrice, fee) devem ser informados em centavos (inteiros).
Request Body (PIX)
Body
{ "amount": 500, "currency": "BRL", "paymentMethod": "PIX", "installments": 1, "customer": { "id": "CUST-1729131560000", "name": "Joao Teste", "email": "joao.teste+1729131560000@exemplo.com", "document": { "number": "24577481600", "type": "CPF" }, "phone": "11987654321", "externalRef": "LEAD-1234" }, "shipping": { "fee": 0, "address": { "street": "Rua dos Testes", "streetNumber": "123", "complement": "Sala 2", "zipCode": "01001000", "neighborhood": "Centro", "city": "Sao Paulo", "state": "SP", "country": "BR" } }, "items": [ { "title": "Produto X", "unitPrice": 500, "quantity": 1, "tangible": true, "externalRef": "SKU-001" } ], "pix": { "expiresInDays": 1 }, "postbackUrl": "", "metadata": "{\"origem\":\"n8n\",\"ambiente\":\"homologacao\"}", "traceable": true, "ip": "177.123.45.67"}Response 200 (PIX)
Exemplo Minimo
Retorno basico ja observado em producao:
Response
{ "data": { "id": "ebe485c6-cdf4-4736-aa3e-464044c4d4eb", "externalRef": "686725", "amount": 500, "refundedAmount": 0, "providerCompanyId": "b6877393-8a98-4e4e-8a20-e086aacf3d8c", "companyId": null, "installments": 1, "paymentMethod": "PIX", "status": "WAITING_PAYMENT", "postbackUrl": "", "metadata": null, "traceable": true, "secureId": null, "secureUrl": null }, "status": 200, "message": "Transacao criada com sucesso."}Exemplo Completo
Quando o provedor retorna campos adicionais:
Response Completo
{ "data": { "id": "43836dbe-be02-47bc-965b-c51487b83b06", "externalRef": "686671", "amount": 500, "refundedAmount": 0, "providerCompanyId": "b6877393-8a98-4e4e-8a20-e086aacf3d8c", "installments": 1, "paymentMethod": "PIX", "status": "WAITING_PAYMENT", "postbackUrl": "", "metadata": null, "traceable": true, "createdAt": "2025-10-17T01:38:51.943Z", "updatedAt": "2025-10-17T01:38:51.943Z", "paidAt": "2025-10-17T01:38:58.193Z", "ip": "146.190.148.63", "endToEndId": null, "externalNsu": null, "currency": "BRL", "pix": { "qrcode": "0002010102122682...6304", "url": null, "expirationDate": "2025-10-18T01:38:51.943Z" } }, "status": 200, "message": "Transacao criada com sucesso."}Observacoes Importantes
- •
amount,unitPrice,feeestao em centavos - •
providerCompanyIde o GUID do provedor (diferente do companyId interno) - •Em PIX, se
pix.urlvier null, use oqrcodecomo BR Code - •Datas podem nao vir em todos os cenarios; quando presentes, sao ISO-8601 UTC
- •Guarde o
data.idcomoproviderTxIdpara consultas posteriores e reconciliacao
Erros
Todos os erros seguem o formato RFC 7807 Problem Details:
Erro
{ "type": "https://httpstatuses.com/400", "title": "Bad Request", "status": 400, "detail": "Campo 'amount' e obrigatorio", "errors": { "amount": ["O valor precisa ser inteiro em centavos."] }, "traceId": "00-3a2b...-01"}| Codigo | Descricao |
|---|---|
| 400 | Bad Request: Dados invalidos ou campos obrigatorios ausentes |
| 401 | Unauthorized: Credenciais invalidas ou ausentes |
| 403 | Forbidden: Acesso negado ao recurso |
| 404 | Not Found: Recurso nao encontrado |
| 409 | Conflict: Conflito de estado (ex: transacao duplicada) |
| 422 | Unprocessable Entity: Validacao de negocio falhou |
| 500 | Internal Server Error: Erro interno do servidor |
Exemplo cURL
cURL
curl -X POST https://vorexy.com/api/v1/transactions/create \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "X-Client-Id: <CLIENT_ID>" \ -H "X-API-Key: <API_KEY>" \ -H "Idempotency-Key: tx_$(date +%s)_$RANDOM" \ -d '{ "amount": 500, "currency": "BRL", "paymentMethod": "PIX", "installments": 1, "customer": { "id": "CUST-123", "name": "Joao", "email": "joao@ex.com", "document": {"number": "24577481600", "type": "CPF"}, "phone": "11987654321" }, "items": [{ "title": "Produto X", "unitPrice": 500, "quantity": 1, "tangible": true }], "pix": { "expiresInDays": 1 }, "postbackUrl": "", "traceable": true, "ip": "177.123.45.67" }'Exemplo JavaScript (fetch)
JavaScript
const response = await fetch("https://vorexy.com/api/v1/transactions/create", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json", "X-Client-Id": "<CLIENT_ID>", "X-API-Key": "<API_KEY>", "Idempotency-Key": `tx_${Date.now()}_${Math.floor(Math.random()*1e6)}` }, body: JSON.stringify({ amount: 500, currency: "BRL", paymentMethod: "PIX", installments: 1, customer: { id: "CUST-123", name: "Joao", email: "joao@ex.com", document: { number: "24577481600", type: "CPF" }, phone: "11987654321" }, items: [{ title: "Produto X", unitPrice: 500, quantity: 1, tangible: true }], pix: { expiresInDays: 1 }, postbackUrl: "", traceable: true, ip: "177.123.45.67" })});const data = await response.json();console.log(data);Notas Finais
Salve o id retornado como providerTxId para consultas posteriores e reconciliacao.
Atualizacoes de status tambem chegam via webhook configurado no postbackUrl.
O polling com GET /api/checkout/status/{id} e opcional, mas util para verificar o status atual da transacao.