Pular para o conteúdo principal

Capturar cobrança

Quick Reference

WhatCapturar uma cobrança previamente autorizada
WhyReserve os fundos primeiro, cobre o valor final depois — essencial para hotéis, locadoras de veículos e marketplaces
Reading Time5 min
DifficultyIntermediate
PrerequisitesAuthentication → Create charge (with capture: false)
POST/api/v1/bank/wallet/charge/capture/Bearer TokenCapturar uma cobrança autorizada

Por que separar autorização e captura

Sem autorização + capturaCom autorização + captura
Hotel cobra R$ 500 mesmo que o hóspede gaste R$ 320Hotel autoriza R$ 500 no check-in, captura R$ 320 no checkout
Locadora não consegue reter depósito de danosLocadora autoriza R$ 2.000 de depósito, captura apenas as despesas reais
Marketplace cobra o comprador antes do vendedor confirmar estoqueMarketplace retém os fundos até o vendedor enviar o item
Cobranças a mais levam a reembolsos, disputas e churnCaptura parcial cobra apenas o valor devido — sem necessidade de reembolso
Restaurantes não conseguem adicionar gorjetas após autorizaçãoRestaurante autoriza a conta, captura conta + gorjeta depois

Fluxo de autorização e captura


Autenticação

Requer token Bearer. Veja Autenticação.

Corpo da requisição

CampoTipoObrigatórioDescrição
charge_uuidstring (UUID)SimCobrança autorizada a capturar
wallet_uuidstring (UUID)SimCarteira proprietária da cobrança
amountnumberNãoValor da captura. Omita para captura total. Passe um valor menor para captura parcial
Captura parcial

Quando amount é menor que o valor original autorizado, a A55 captura apenas o valor especificado e libera a reserva restante. Nem todos os adquirentes suportam captura parcial — consulte Capacidades dos provedores para detalhes.


Exemplos de código

Captura total

curl -s -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/capture/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}'

Captura parcial (exemplo de checkout de hotel)

curl -s -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/capture/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"amount": 320.00
}'

Campos da resposta

A resposta segue a mesma estrutura de Criar cobrança com o status atualizado para confirmed:

CampoTipoDescrição
charge_uuidstringIdentificador único da cobrança
statusstringconfirmed após captura bem-sucedida
local_currencynumberValor capturado na moeda de liquidação
currencystringCódigo de moeda ISO 4217
usd_currencynumberValor capturado em USD
eur_currencynumberValor capturado em EUR
typestringMétodo de pagamento (credit_card, debit_card)
datestringData de criação original da cobrança
descriptionstringDescrição da cobrança
due_datestringData de vencimento do pagamento
messagearray/nullnull em sucesso, detalhes do erro em falha
installment_countintegerNúmero de parcelas
installmentsarrayDetalhamento por parcela com valores atualizados

Exemplo completo de resposta

{
"status": "confirmed",
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"local_currency": 320.00,
"currency": "BRL",
"usd_currency": 57.41,
"eur_currency": 50.33,
"type": "credit_card",
"date": "2026-03-15",
"description": "Hotel reservation — Grand Suite",
"due_date": "2026-03-20",
"message": null,
"installment_count": 1,
"installments": [
{
"local_currency": 320.00,
"currency": "BRL",
"usd_currency": 57.41,
"eur_currency": 50.33,
"due_date": "2026-03-20",
"status": "confirmed",
"installment_number": 1
}
]
}

Respostas de erro

StatusCódigoDescriçãoResolução
400errors.wallet.charge_capture_not_availableCobrança não está em estado capturávelVerifique se o status da cobrança é authorized. Cobranças já capturadas, expiradas ou falhadas não podem ser capturadas
401unauthorizedToken Bearer inválido ou expiradoRenove seu token de acesso via Cognito
404errors.wallet.not_foundUUID da carteira não existeVerifique se o wallet_uuid está correto
404CHARGE_NOT_FOUNDCobrança não encontrada para esta carteiraVerifique se ambos os UUIDs correspondem à cobrança original
422amount_exceeds_authorizationValor da captura excede o valor autorizadoO valor da captura deve ser ≤ ao valor originalmente autorizado
Capture em até 7 dias

Reservas de autorização expiram após 7 dias na maioria das bandeiras de cartão. Capture antes da reserva expirar, ou a autorização será anulada automaticamente e você precisará criar uma nova cobrança.

Este endpoint usa POST, não PUT

Apesar de ser uma operação de atualização, a spec OpenAPI define captura como POST /charge/capture/. Use POST na sua integração.

Configurando cobranças somente autorização

Para usar a captura, você deve primeiro criar uma cobrança com capture: false na requisição de Criar cobrança. Se capture for true (padrão), a cobrança é autorizada e capturada em uma única etapa — não há nada para capturar separadamente.