Pular para o conteúdo principal

Faturamento

Gerenciamento de faturas (Invoices) e pagamentos (Payments).

Endpoints de Faturas

MétodoEndpointDescriçãoPermissão
POST/billing/api/v1/invoicesCriar faturaBILLING_INVOICES_CREATE
GET/billing/api/v1/invoicesListar faturasBILLING_INVOICES_READ
GET/billing/api/v1/invoices/:idObter fatura por IDBILLING_INVOICES_READ
PATCH/billing/api/v1/invoices/:idAtualizar faturaBILLING_INVOICES_UPDATE
POST/billing/api/v1/invoices/:id/finalizeFinalizar faturaBILLING_INVOICES_FINALIZE
POST/billing/api/v1/invoices/:id/voidAnular faturaBILLING_INVOICES_VOID
POST/billing/api/v1/invoices/:id/line-itemsAdicionar linha à faturaBILLING_INVOICES_UPDATE
POST/billing/api/v1/invoices/generateGerar fatura de assinaturaBILLING_INVOICES_CREATE

Endpoints de Pagamentos

MétodoEndpointDescriçãoPermissão
POST/billing/api/v1/paymentsRegistrar pagamentoBILLING_PAYMENTS_RECORD
GET/billing/api/v1/paymentsListar pagamentosBILLING_PAYMENTS_READ
GET/billing/api/v1/payments/:idObter pagamento por IDBILLING_PAYMENTS_READ
POST/billing/api/v1/payments/:id/refundProcessar reembolsoBILLING_PAYMENTS_REFUND

Atributos da Fatura

CampoTipoDescrição
billingAccountIdstring (UUID)ID da conta de faturamento
invoiceNumberstringNúmero da fatura (gerado automaticamente)
statusenumStatus da fatura
currencystringMoeda
periodStartdatetimeInício do período de cobrança
periodEnddatetimeFim do período de cobrança
subtotalnumberSubtotal antes de taxas
taxAmountnumberValor de impostos
discountAmountnumberValor de descontos
totalnumberValor total
amountPaidnumberValor já pago
amountDuenumberValor em aberto
dueDatedatetimeData de vencimento
finalizedAtdatetimeData de finalização
paidAtdatetimeData do pagamento completo
voidedAtdatetimeData de anulação
notesstringObservações
lineItemsarrayItens da fatura
createdAtdatetimeData de criação
updatedAtdatetimeData da última atualização

Status da Fatura

StatusDescrição
DRAFTRascunho - pode ser editada
PENDINGFinalizada - aguardando pagamento
PAIDPaga integralmente
OVERDUEVencida - pagamento atrasado
CANCELEDCancelada (antes de finalizar)
VOIDAnulada (após finalizar)

Tipos de Cobrança (chargeType)

TipoDescrição
SUBSCRIPTIONCobrança de assinatura
USAGECobrança por uso
ONE_TIMECobrança única
PRORATIONAjuste proporcional
CREDITCrédito (valor negativo)

Atributos do Pagamento

CampoTipoDescrição
billingAccountIdstring (UUID)ID da conta de faturamento
invoiceIdstring (UUID)ID da fatura (opcional)
statusenumStatus do pagamento
amountnumberValor do pagamento
currencystringMoeda
paymentMethodstringMétodo de pagamento
externalRefstringReferência externa (gateway)
refundedAmountnumberValor reembolsado
refundedAtdatetimeData do reembolso
processedAtdatetimeData do processamento
failedAtdatetimeData da falha
failureReasonstringMotivo da falha
metadataobjectDados adicionais
createdAtdatetimeData de criação
updatedAtdatetimeData da última atualização

Status do Pagamento

StatusDescrição
PENDINGAguardando processamento
PROCESSINGEm processamento
COMPLETEDConcluído com sucesso
FAILEDFalhou
REFUNDEDReembolsado (total ou parcial)

Criar Fatura

POST /api/v1/invoices

Cria uma nova fatura para uma conta de faturamento.

Atributos

CampoTipoObrigatórioDescrição
billingAccountIdstringSimID da conta de faturamento
periodStartdatetimeSimInício do período
periodEnddatetimeSimFim do período
dueDatedatetimeNãoData de vencimento
notesstringNãoObservações
curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/invoices' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "invoices",
"attributes": {
"billingAccountId": "550e8400-e29b-41d4-a716-446655440010",
"periodStart": "2024-02-01T00:00:00Z",
"periodEnd": "2024-02-29T23:59:59Z",
"dueDate": "2024-03-10T23:59:59Z"
}
}
}'

Response (201 Created)

{
"data": {
"type": "invoices",
"id": "550e8400-e29b-41d4-a716-446655440050",
"links": {
"self": "/api/v1/invoices/550e8400-e29b-41d4-a716-446655440050"
},
"attributes": {
"billingAccountId": "550e8400-e29b-41d4-a716-446655440010",
"invoiceNumber": "INV-2024-0001",
"status": "DRAFT",
"currency": "BRL",
"periodStart": "2024-02-01T00:00:00Z",
"periodEnd": "2024-02-29T23:59:59Z",
"subtotal": 0,
"taxAmount": 0,
"discountAmount": 0,
"total": 0,
"amountPaid": 0,
"amountDue": 0,
"dueDate": "2024-03-10T23:59:59Z",
"lineItems": [],
"createdAt": "2024-02-28T10:00:00Z",
"updatedAt": "2024-02-28T10:00:00Z"
}
},
"links": {
"self": "/api/v1/invoices/550e8400-e29b-41d4-a716-446655440050"
}
}

Adicionar Linha à Fatura

POST /billing/api/v1/invoices/:id/line-items

Adiciona um item de cobrança à fatura (somente para faturas em DRAFT).

Atributos

CampoTipoObrigatórioDescrição
subscriptionIdstringNãoID da assinatura relacionada
chargeTypeenumSimTipo de cobrança
descriptionstringSimDescrição do item
quantitynumberSimQuantidade
unitPricenumberSimPreço unitário
periodStartdatetimeNãoInício do período
periodEnddatetimeNãoFim do período
metadataobjectNãoDados adicionais
curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/invoices/550e8400-e29b-41d4-a716-446655440050/line-items' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "invoice-line-items",
"attributes": {
"chargeType": "SUBSCRIPTION",
"description": "Plano Pro - Fevereiro 2024",
"quantity": 5,
"unitPrice": 299.90,
"periodStart": "2024-02-01T00:00:00Z",
"periodEnd": "2024-02-29T23:59:59Z"
}
}
}'

Response (200 OK)

Retorna a fatura atualizada com o novo item.

{
"data": {
"type": "invoices",
"id": "550e8400-e29b-41d4-a716-446655440050",
"attributes": {
"invoiceNumber": "INV-2024-0001",
"status": "DRAFT",
"subtotal": 1499.50,
"taxAmount": 0,
"discountAmount": 0,
"total": 1499.50,
"amountDue": 1499.50,
"lineItems": [
{
"chargeType": "SUBSCRIPTION",
"description": "Plano Pro - Fevereiro 2024",
"quantity": 5,
"unitPrice": 299.90,
"amount": 1499.50,
"periodStart": "2024-02-01T00:00:00Z",
"periodEnd": "2024-02-29T23:59:59Z"
}
],
"updatedAt": "2024-02-28T10:30:00Z"
}
}
}

Finalizar Fatura

POST /api/v1/invoices/:id/finalize

Finaliza uma fatura, tornando-a pronta para pagamento. Após finalizada, a fatura não pode mais ser editada.

curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/invoices/550e8400-e29b-41d4-a716-446655440050/finalize' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "invoices",
"id": "550e8400-e29b-41d4-a716-446655440050",
"attributes": {
"invoiceNumber": "INV-2024-0001",
"status": "PENDING",
"total": 1499.50,
"amountDue": 1499.50,
"dueDate": "2024-03-10T23:59:59Z",
"finalizedAt": "2024-02-28T11:00:00Z",
"updatedAt": "2024-02-28T11:00:00Z"
}
}
}

Anular Fatura

POST /api/v1/invoices/:id/void

Anula uma fatura finalizada. Use quando a fatura foi emitida incorretamente.

curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/invoices/550e8400-e29b-41d4-a716-446655440050/void' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "invoices",
"id": "550e8400-e29b-41d4-a716-446655440050",
"attributes": {
"invoiceNumber": "INV-2024-0001",
"status": "VOID",
"total": 1499.50,
"amountDue": 0,
"voidedAt": "2024-02-28T12:00:00Z",
"updatedAt": "2024-02-28T12:00:00Z"
}
}
}

Listar Faturas

GET /api/v1/invoices

Lista todas as faturas com suporte a paginação e filtros.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da página
page[size]integerItens por página
filter[billingAccountId]UUIDFiltrar por conta
filter[status]enumFiltrar por status
filter[startDate]datetimeData inicial
filter[endDate]datetimeData final
curl 'https://billing.stg.catalisa.app/billing/api/v1/invoices?filter[status]=PENDING&filter[billingAccountId]=550e8400-e29b-41d4-a716-446655440010' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": [
{
"type": "invoices",
"id": "550e8400-e29b-41d4-a716-446655440050",
"attributes": {
"invoiceNumber": "INV-2024-0001",
"status": "PENDING",
"currency": "BRL",
"total": 1499.50,
"amountDue": 1499.50,
"dueDate": "2024-03-10T23:59:59Z"
}
}
],
"meta": {
"totalItems": 1,
"totalPages": 1,
"currentPage": 1,
"itemsPerPage": 20
}
}

Registrar Pagamento

POST /api/v1/payments

Registra um pagamento recebido.

Atributos

CampoTipoObrigatórioDescrição
billingAccountIdstringSimID da conta de faturamento
invoiceIdstringNãoID da fatura (se aplicável)
amountnumberSimValor do pagamento
paymentMethodstringNãoMétodo de pagamento
externalRefstringNãoReferência externa
metadataobjectNãoDados adicionais
curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/payments' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "payments",
"attributes": {
"billingAccountId": "550e8400-e29b-41d4-a716-446655440010",
"invoiceId": "550e8400-e29b-41d4-a716-446655440050",
"amount": 1499.50,
"paymentMethod": "PIX",
"externalRef": "E12345678901234567890123456789012"
}
}
}'

Response (201 Created)

{
"data": {
"type": "payments",
"id": "550e8400-e29b-41d4-a716-446655440060",
"links": {
"self": "/api/v1/payments/550e8400-e29b-41d4-a716-446655440060"
},
"attributes": {
"billingAccountId": "550e8400-e29b-41d4-a716-446655440010",
"invoiceId": "550e8400-e29b-41d4-a716-446655440050",
"status": "COMPLETED",
"amount": 1499.50,
"currency": "BRL",
"paymentMethod": "PIX",
"externalRef": "E12345678901234567890123456789012",
"processedAt": "2024-02-28T14:00:00Z",
"createdAt": "2024-02-28T14:00:00Z",
"updatedAt": "2024-02-28T14:00:00Z"
}
},
"links": {
"self": "/api/v1/payments/550e8400-e29b-41d4-a716-446655440060"
}
}

Processar Reembolso

POST /api/v1/payments/:id/refund

Processa um reembolso total ou parcial de um pagamento.

Query Parameters

ParâmetroTipoDescrição
amountnumberValor do reembolso (omitir para total)
# Reembolso total
curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/payments/550e8400-e29b-41d4-a716-446655440060/refund' \
-H 'Authorization: Bearer SEU_TOKEN'

# Reembolso parcial
curl -X POST 'https://billing.stg.catalisa.app/billing/api/v1/payments/550e8400-e29b-41d4-a716-446655440060/refund?amount=500.00' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "payments",
"id": "550e8400-e29b-41d4-a716-446655440060",
"attributes": {
"billingAccountId": "550e8400-e29b-41d4-a716-446655440010",
"invoiceId": "550e8400-e29b-41d4-a716-446655440050",
"status": "REFUNDED",
"amount": 1499.50,
"currency": "BRL",
"paymentMethod": "PIX",
"refundedAmount": 1499.50,
"refundedAt": "2024-02-28T15:00:00Z",
"updatedAt": "2024-02-28T15:00:00Z"
}
}
}

Listar Pagamentos

GET /api/v1/payments

Lista todos os pagamentos com suporte a paginação e filtros.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da página
page[size]integerItens por página
filter[billingAccountId]UUIDFiltrar por conta
filter[invoiceId]UUIDFiltrar por fatura
filter[status]enumFiltrar por status
curl 'https://billing.stg.catalisa.app/billing/api/v1/payments?filter[status]=COMPLETED&page[size]=10' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": [
{
"type": "payments",
"id": "550e8400-e29b-41d4-a716-446655440060",
"attributes": {
"billingAccountId": "550e8400-e29b-41d4-a716-446655440010",
"invoiceId": "550e8400-e29b-41d4-a716-446655440050",
"status": "COMPLETED",
"amount": 1499.50,
"currency": "BRL",
"paymentMethod": "PIX",
"processedAt": "2024-02-28T14:00:00Z"
}
}
],
"meta": {
"totalItems": 25,
"totalPages": 3,
"currentPage": 1,
"itemsPerPage": 10
}
}

Ciclo de Vida da Fatura

Estados da Fatura

DRAFT (Rascunho)

  • Fatura pode ser editada
  • Permite adicionar/remover linhas de cobrança
  • Não está disponível para pagamento
  • Transições:
    • PENDING: Chamada de finalize() (finalizar)
    • CANCELED: Chamada de cancel() (cancelar antes de finalizar)

PENDING (Pendente)

  • Fatura finalizada e aguardando pagamento
  • Não pode mais ser editada
  • Disponível para pagamento
  • Transições:
    • PAID: Pagamento completo recebido
    • VOID: Chamada de void() (anular após finalizar)
    • OVERDUE: Data de vencimento passou sem pagamento

PAID (Paga)

  • Fatura paga integralmente
  • Estado final
  • Não permite mais transições

OVERDUE (Vencida)

  • Vencimento passou sem pagamento completo
  • Ainda pode receber pagamentos
  • Transições:
    • PAID: Quando receber pagamento completo

CANCELED (Cancelada)

  • Fatura cancelada antes de ser finalizada
  • Estado final
  • Não permite mais transições

VOID (Anulada)

  • Fatura anulada após ter sido finalizada
  • Usado quando fatura foi emitida incorretamente
  • Estado final
  • Não permite mais transições

Erros Comuns

Faturas

CódigoErroDescrição
400VALIDATIONDados inválidos
404NOT_FOUNDFatura ou conta não encontrada
409CONFLICTFatura não está em DRAFT (edição)
409CONFLICTFatura não está PENDING (anulação)
409CONFLICTFatura já foi paga ou anulada

Pagamentos

CódigoErroDescrição
400VALIDATIONDados inválidos
404NOT_FOUNDPagamento, fatura ou conta não encontrada
409CONFLICTPagamento já foi reembolsado
409CONFLICTValor de reembolso excede o disponível
409CONFLICTPagamento não está COMPLETED (reembolso)