Skip to main content

Como aprovar ou rejeitar uma antecipação via API?

Quando a empresa pagadora exige aprovação, cada antecipação solicitada pelo beneficiário fica no status PENDING antes da liquidação (Pix Out). Você aprova ou rejeita cada solicitação via API antes que o pagamento seja enviado.

AçãoEndpointEscopo
Listar pendentesGET /api/v1/anticipation?status=PENDINGanticipation.request.read
AprovarPOST /api/v1/anticipation/{id}/approveanticipation.request.approve
RejeitarPOST /api/v1/anticipation/{id}/rejectanticipation.request.approve

O {id} é o id da antecipação retornado na listagem. Todas as respostas são escopadas à sua empresa (uma antecipação de outra empresa responde 404).

1. Descubra as solicitações pendentes

Faça polling das solicitações PENDING (o beneficiaryTaxID ajuda a reconciliar com o seu sistema):

curl 'https://api.woovi.com/api/v1/anticipation?status=PENDING' \
-H "Authorization: {SEU_APP_ID}"

Exemplo de resposta

{
"anticipations": [
{
"id": "6290ccfd42831958a405debc",
"status": "PENDING",
"beneficiaryTaxID": "12345678909",
"requestedAmount": 100000,
"feeAmount": 7000,
"netAmount": 93000,
"feeMode": "PERCENTAGE",
"monthlyFeePercentage": 7,
"daysUntilDue": 7,
"dueDate": "2026-07-25T03:00:00.000Z",
"approvedAt": null,
"cancelledAt": null,
"cancelReason": null,
"endToEndId": null,
"failureCode": null,
"failureReason": null,
"createdAt": "2026-07-18T11:59:00.000Z"
}
],
"count": 1
}

2. Aprove (dispara o Pix Out)

curl 'https://api.woovi.com/api/v1/anticipation/{id}/approve' -X POST \
-H "Content-Type: application/json" \
-H "Authorization: {SEU_APP_ID}"

Aprovar dispara a liquidação: o status passa a PROCESSING e depois a CONFIRMED quando o pagamento é enviado.

Exemplo de resposta

{
"anticipation": {
"id": "6290ccfd42831958a405debc",
"status": "PROCESSING",
"beneficiaryTaxID": "12345678909",
"requestedAmount": 100000,
"feeAmount": 7000,
"netAmount": 93000,
"feeMode": "PERCENTAGE",
"monthlyFeePercentage": 7,
"daysUntilDue": 7,
"dueDate": "2026-07-25T03:00:00.000Z",
"approvedAt": "2026-07-18T12:00:00.000Z",
"cancelledAt": null,
"cancelReason": null,
"endToEndId": null,
"failureCode": null,
"failureReason": null,
"createdAt": "2026-07-18T11:59:00.000Z"
}
}

3. Rejeite (opcionalmente com motivo)

curl 'https://api.woovi.com/api/v1/anticipation/{id}/reject' -X POST \
-H "Content-Type: application/json" \
-H "Authorization: {SEU_APP_ID}" \
-d '{"reason": "acima do limite"}'

Exemplo de resposta

{
"anticipation": {
"id": "6290ccfd42831958a405debc",
"status": "CANCELED",
"beneficiaryTaxID": "12345678909",
"requestedAmount": 100000,
"feeAmount": 7000,
"netAmount": 93000,
"feeMode": "PERCENTAGE",
"monthlyFeePercentage": 7,
"daysUntilDue": 7,
"dueDate": "2026-07-25T03:00:00.000Z",
"approvedAt": null,
"cancelledAt": "2026-07-18T12:05:00.000Z",
"cancelReason": "acima do limite",
"endToEndId": null,
"failureCode": null,
"failureReason": null,
"createdAt": "2026-07-18T11:59:00.000Z"
}
}

Idempotência e estados

  • As duas ações são idempotentes: reenviar a mesma decisão retorna 200 com o estado atual. Aprovar uma solicitação já aprovada, ou rejeitar uma já cancelada, é um no-op.
  • Uma decisão que conflita com o estado atual (ex.: aprovar uma rejeitada) retorna 409.
  • Se você não decidir, a solicitação expira automaticamente conforme o prazo configurado (expirationDays) e é cancelada.