Contas a receber
Ciclo de vida das contas a receber — criar, receber via alocação de transação, parcelar, cancelar — e os endpoints de vencidas e resumo.
Uma conta a receber (/receivables) é um valor que um cliente deve ao tenant, vinculado a uma conta financeira e com data de vencimento. Este recurso é mais do que um CRUD: ele tem uma máquina de estado e o recebimento acontece por alocação de transações.
Permissão exigida: receivables (ações create, read, update, delete).
Ciclo de vida
O campo status reflete a situação do recebível:
| Status | Significado |
|---|---|
pending | Criado, nada recebido ainda |
partial | Parcialmente recebido (há alocação, mas ainda resta valor) |
paid | Totalmente recebido |
overdue | Vencido e não quitado (marcado pelo sistema após o vencimento) |
cancelled | Cancelado |
Um recebível nasce em pending. Conforme você aloca transações (recebe), ele recalcula o status automaticamente: se o valor restante chega a zero, vira paid; se ainda resta algo, vira partial. Remover uma alocação recalcula no sentido inverso (paid → partial → pending). O cancel leva a cancelled.
aloca (quita) aloca (parcial)
pending ──────────────────► paid pending ──────────► partial ──► paid
│ │ │
│ cancel │ remove alocação │ remove alocação
▼ ▼ ▼
cancelled pending partial/pendingO status
overduenão é definido nas suas chamadas — ele é aplicado por uma rotina do sistema quando o vencimento passa e a conta ainda estápending/partial. Você não pode alterarstatusdiretamente (é um campo bloqueado noPATCH); mude o estado usando as ações (allocate,cancel).
Criar uma conta a receber
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
customer_id | UUID | Sim | Cliente devedor |
financial_account_id | UUID | Sim | Conta financeira (deve estar ativa) |
amount | string | Sim | Valor a receber (> 0) — decimal numeric(18,6) como string (ex.: "1500.000000") |
issue_date | date | Sim | Data de emissão (YYYY-MM-DD) |
due_date | date | Sim | Data de vencimento |
payment_method_id | UUID | Não | Forma de pagamento (do país do tenant) |
financial_category_id | UUID | Não | Categoria financeira |
reference_code | string | Não | Auto-gerado (REC-…) se omitido; único por tenant |
discount_amount | string | Não | Desconto (≥ 0) — decimal como string |
surcharge_amount | string | Não | Acréscimo/juros (≥ 0) — decimal como string |
origin_type / origin_id | enum / UUID | Não | Origem do lançamento (manual, quote, sale_order, invoice, contract, recurring) |
sales_order_id | UUID | Não | Pedido de venda de origem |
description / notes | string | Não | |
auto_generate_transaction | boolean | Não | Em conta manual (cash/digital_wallet), gera a transação de crédito, aloca e marca como paid |
metadata | object | Não |
curl -X POST https://api.biterp.ai/receivables \
-H "Authorization: Bearer sk_abc123_secretXYZ" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "9f1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",
"financial_account_id": "1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071",
"amount": "1500.000000",
"issue_date": "2026-07-01",
"due_date": "2026-08-01",
"description": "Venda de serviços - julho/2026"
}'Receber: alocar uma transação
Receber um valor é alocar uma transação de crédito ao recebível. POST /receivables/{id}/allocate:
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
financial_transaction_id | UUID | Sim | Transação de crédito (amount positivo) |
allocated_amount | string | Sim | Valor a alocar (> 0) — decimal como string |
notes | string | Não |
Regras de validação:
- O recebível não pode estar
paidnemcancelled. - A transação deve pertencer à mesma
financial_account_iddo recebível e ser um crédito (positiva). allocated_amountnão pode exceder o valor restante do recebível nem o saldo restante da transação.
O status é recalculado após a alocação, e a transação é marcada como conciliada.
curl -X POST https://api.biterp.ai/receivables/{id}/allocate \
-H "Authorization: Bearer sk_abc123_secretXYZ" \
-H "Content-Type: application/json" \
-d '{
"financial_transaction_id": "b1c2d3e4-f5a6-4b7c-8d9e-0f1a2b3c4d5e",
"allocated_amount": "500.000000",
"notes": "Recebimento parcial via PIX"
}'Para desfazer, use DELETE /receivables/{id}/allocate/{allocationId} — a alocação é removida e o status recalculado (204 No Content).
Cancelar
POST /receivables/{id}/cancel cancela o recebível (e suas alocações, de forma atômica). É bloqueado se a conta já estiver paid.
Parcelar
POST /receivables/installments gera várias contas a receber de uma vez, todas com o mesmo installment_group_id:
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
customer_id | UUID | Sim | |
financial_account_id | UUID | Sim | |
total_amount | string | Sim | Valor total (> 0), dividido entre as parcelas — decimal como string |
installment_count | int | Sim | Número de parcelas (2–120) — inteiro, não string |
issue_date | date | Sim | |
first_due_date | date | Sim | Vencimento da 1ª parcela; as demais somam 1 mês cada |
reference_code_prefix | string | Não | Gera PREFIXO/1, PREFIXO/2… (senão, sequência REC-) |
description / notes | string | Não |
O total é dividido igualmente (6 casas decimais); as sobras de arredondamento são distribuídas nas primeiras parcelas. O retorno é o array das parcelas criadas.
curl -X POST https://api.biterp.ai/receivables/installments \
-H "Authorization: Bearer sk_abc123_secretXYZ" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "9f1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",
"financial_account_id": "1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071",
"total_amount": "1200.000000",
"installment_count": 3,
"issue_date": "2026-07-01",
"first_due_date": "2026-08-05",
"reference_code_prefix": "REC-2026-PED-15"
}'Vencidas e resumo
GET /receivables/overduelista as contas vencidas — critério dinâmico: statuspendingoupartialedue_dateno passado. Retorno paginado.GET /receivables/summaryretorna um agregado por status, cada linha com a contagem e a soma dos valores:
{
"data": [
{ "status": "pending", "total_count": 12, "total_amount": "18400.000000" },
{ "status": "paid", "total_count": 30, "total_amount": "52310.500000" }
]
}Filtros
Campos filtráveis em GET /receivables: reference_code, status, amount, due_date, issue_date, customer_id, financial_account_id, financial_category_id, payment_method_id, installment_group_id, origin_type, sales_order_id, invoice_id, created_at, updated_at. Ver paginação e filtros.
Referência dos endpoints
| Método | Endpoint | Referência |
|---|---|---|
| POST | /receivables | Criar |
| GET | /receivables | Listar |
| POST | /receivables/installments | Criar parcelas |
| GET | /receivables/overdue | Listar vencidas |
| GET | /receivables/summary | Resumo por status |
| GET | /receivables/{id} | Buscar por ID |
| PATCH | /receivables/{id} | Atualizar |
| DELETE | /receivables/{id} | Remover |
| POST | /receivables/{id}/cancel | Cancelar |
| POST | /receivables/{id}/allocate | Alocar transação |
| DELETE | /receivables/{id}/allocate/{allocationId} | Remover alocação |

