Skip to main content
GET
https://api.econpay.com.br
/
transactions
/
{id}
curl --request GET \
  --url https://api.econpay.com.br/transactions/123 \
  --header 'Authorization: Bearer SEU_TOKEN_JWT'
{
  "id": 123,
  "order_number": "ORD-20240122-123456",
  "status": 2,
  "status_payment_name": "APPROVED",
  "amount": 10000,
  "payment_type": "pix",
  "installments": 1,
  "customer": {
    "id": 45,
    "name": "João da Silva",
    "email": "[email protected]",
    "document": "12345678900",
    "phone": "+55 11 999999999"
  },
  "items": [
    {
      "name": "Produto Teste",
      "quantity": 1,
      "price": 10000
    }
  ],
  "pix_qr_code": "00020126580014br.gov.bcb.pix...",
  "pix_qr_code_url": "https://api.econpay.com.br/qrcode/123.png",
  "created_at": "2024-01-22T10:30:00Z",
  "updated_at": "2024-01-22T10:35:00Z",
  "paid_at": "2024-01-22T10:35:00Z"
}

Descrição

Retorna informações detalhadas de uma transação específica, incluindo dados do cliente, itens, status e informações de pagamento.
Consulta na Adquirente: Use o query parameter payment_type para consultar o status atualizado diretamente na Firebank (PIX, CREDIT_CARD, BILLET).

Headers

Authorization
string
required
Bearer token JWT obtido no login

Path Parameters

id
number
required
ID da transação

Query Parameters

payment_type
string
Tipo de pagamento para consulta e sincronização com a adquirente (opcional)
  • PIX - Consulta PIX na Firebank e sincroniza status automaticamente
  • CREDIT_CARD - Consulta cartão de crédito na Firebank
  • BILLET - Consulta boleto na Firebank
Importante: Quando fornecido, o sistema:
  1. Consulta o status atualizado na Firebank
  2. Sincroniza automaticamente o status local se estiver desatualizado
  3. Retorna dados atualizados no campo acquirer_status
Se não informado, retorna apenas dados do banco local (sem sincronização).

Response

id
number
ID da transação
order_number
string
Número do pedido
status
number
Código numérico do status (sincronizado automaticamente quando payment_type é fornecido)
  • 1 = PENDING
  • 2 = APPROVED
  • 3 = FAILED
  • 4 = REFUNDED
status_payment_name
string
Nome legível do status do pagamento
  • PENDING - Aguardando pagamento
  • APPROVED - Pagamento aprovado ✅
  • FAILED - Pagamento falhou ❌
  • REFUNDED - Pagamento estornado 💰
acquirer_status
object
Status atualizado consultado diretamente na Firebank (apenas quando payment_type é fornecido)
amount
number
Valor total em centavos
payment_type
string
Tipo de pagamento: pix, credit, debit, invoice
installments
number
Número de parcelas
customer
object
items
array
Lista de itens do pedido
pix_qr_code
string
QR Code PIX (apenas para PIX)
pix_qr_code_url
string
URL da imagem do QR Code (apenas para PIX)
boleto_url
string
URL do boleto (apenas para boleto)
boleto_barcode
string
Código de barras (apenas para boleto)
created_at
string
Data de criação (ISO 8601)
updated_at
string
Data da última atualização (ISO 8601)
paid_at
string
Data do pagamento (ISO 8601)
refunded_at
string
Data do estorno (ISO 8601)
curl --request GET \
  --url https://api.econpay.com.br/transactions/123 \
  --header 'Authorization: Bearer SEU_TOKEN_JWT'
{
  "id": 123,
  "order_number": "ORD-20240122-123456",
  "status": 2,
  "status_payment_name": "APPROVED",
  "amount": 10000,
  "payment_type": "pix",
  "installments": 1,
  "customer": {
    "id": 45,
    "name": "João da Silva",
    "email": "[email protected]",
    "document": "12345678900",
    "phone": "+55 11 999999999"
  },
  "items": [
    {
      "name": "Produto Teste",
      "quantity": 1,
      "price": 10000
    }
  ],
  "pix_qr_code": "00020126580014br.gov.bcb.pix...",
  "pix_qr_code_url": "https://api.econpay.com.br/qrcode/123.png",
  "created_at": "2024-01-22T10:30:00Z",
  "updated_at": "2024-01-22T10:35:00Z",
  "paid_at": "2024-01-22T10:35:00Z"
}

Status das Transações

CódigoStatusDescriçãoAções Disponíveis
1PENDINGAguardando pagamentoCancelar
2APPROVEDPagamento aprovadoEstornar
3FAILEDPagamento falhouTentar novamente
4REFUNDEDPagamento estornadoNenhuma

Exemplos de Uso

Verificar Status

async function checkPaymentStatus(transactionId) {
  const response = await fetch(
    `https://api.econpay.com.br/transactions/${transactionId}`,
    {
      headers: { 'Authorization': `Bearer ${token}` }
    }
  );
  
  const transaction = await response.json();
  
  const statusMap = {
    1: 'Aguardando pagamento',
    2: 'Pago',
    3: 'Falhou',
    4: 'Estornado'
  };
  
  return {
    orderNumber: transaction.order_number,
    status: statusMap[transaction.status],
    amount: transaction.amount / 100,
    isPaid: transaction.status === 2,
    canRefund: transaction.status === 2
  };
}

const status = await checkPaymentStatus(123);
console.log(`Pedido ${status.orderNumber}: ${status.status}`);

if (status.canRefund) {
  console.log('Pode ser estornado');
}

Exibir QR Code PIX

async function displayPixQRCode(transactionId) {
  const response = await fetch(
    `https://api.econpay.com.br/transactions/${transactionId}`,
    {
      headers: { 'Authorization': `Bearer ${token}` }
    }
  );
  
  const transaction = await response.json();
  
  if (transaction.payment_type !== 'pix') {
    throw new Error('Transação não é PIX');
  }
  
  if (transaction.status !== 1) {
    throw new Error('Pagamento já foi processado');
  }
  
  return {
    qrCodeImage: transaction.pix_qr_code_url,
    qrCodeString: transaction.pix_qr_code,
    expiresIn: '30 minutos'
  };
}

// Uso em React
function PixPayment({ transactionId }) {
  const [qrCode, setQrCode] = useState(null);
  
  useEffect(() => {
    displayPixQRCode(transactionId).then(setQrCode);
  }, [transactionId]);
  
  if (!qrCode) return <div>Carregando...</div>;
  
  return (
    <div>
      <h2>Pague com PIX</h2>
      <img src={qrCode.qrCodeImage} alt="QR Code PIX" />
      <p>Ou copie o código:</p>
      <code>{qrCode.qrCodeString}</code>
      <p>Expira em: {qrCode.expiresIn}</p>
    </div>
  );
}

Gerar Recibo

async function generateReceipt(transactionId) {
  const response = await fetch(
    `https://api.econpay.com.br/transactions/${transactionId}`,
    {
      headers: { 'Authorization': `Bearer ${token}` }
    }
  );
  
  const transaction = await response.json();
  
  if (transaction.status !== 2) {
    throw new Error('Pagamento não foi aprovado');
  }
  
  return {
    orderNumber: transaction.order_number,
    date: new Date(transaction.paid_at).toLocaleDateString('pt-BR'),
    customer: {
      name: transaction.customer.name,
      email: transaction.customer.email,
      document: transaction.customer.document
    },
    items: transaction.items.map(item => ({
      name: item.name,
      quantity: item.quantity,
      unitPrice: item.price / 100,
      total: (item.price * item.quantity) / 100
    })),
    subtotal: transaction.items.reduce((sum, item) => 
      sum + (item.price * item.quantity), 0) / 100,
    shipping: transaction.shipping?.price / 100 || 0,
    total: transaction.amount / 100,
    paymentMethod: transaction.payment_type.toUpperCase(),
    installments: transaction.installments
  };
}

const receipt = await generateReceipt(123);
console.log('RECIBO DE PAGAMENTO');
console.log(`Pedido: ${receipt.orderNumber}`);
console.log(`Data: ${receipt.date}`);
console.log(`Cliente: ${receipt.customer.name}`);
console.log(`Total: R$ ${receipt.total.toFixed(2)}`);

Polling de Status

async function waitForPayment(transactionId, maxAttempts = 60) {
  for (let i = 0; i < maxAttempts; i++) {
    const response = await fetch(
      `https://api.econpay.com.br/transactions/${transactionId}`,
      {
        headers: { 'Authorization': `Bearer ${token}` }
      }
    );
    
    const transaction = await response.json();
    
    // Se foi pago ou falhou, retornar
    if (transaction.status === 2) {
      return { success: true, transaction };
    }
    
    if (transaction.status === 3) {
      return { success: false, transaction };
    }
    
    // Aguardar 5 segundos antes de tentar novamente
    await new Promise(resolve => setTimeout(resolve, 5000));
  }
  
  throw new Error('Timeout aguardando pagamento');
}

// Uso
try {
  const result = await waitForPayment(123);
  
  if (result.success) {
    console.log('✅ Pagamento aprovado!');
  } else {
    console.log('❌ Pagamento falhou');
  }
} catch (error) {
  console.log('⏱️ Timeout - pagamento ainda pendente');
}
Importante: Use webhooks em vez de polling sempre que possível. Polling consome recursos e pode ter atrasos.

Próximos Passos