Esquema
| Campo | Tipo | Descrição |
|---|---|---|
invoiceId | UUIDv7 | Identificador único |
organizationId | UUIDv7 | FK para Organization |
subscriptionId | UUIDv7? | FK para Subscription |
externalRef | string | ID da invoice no Stripe (único) |
type | enum | PLAN, FEE |
paymentMethod | enum? | CARD, BOLETO |
card | JSON? | {brand, last4, expMonth, expYear} |
boleto | JSON? | {url} |
currency | enum | USD, BRL, EUR |
totalAmount | integer | Total em centavos |
discountAmount | integer | Desconto em centavos |
payableAmount | integer | Valor a pagar em centavos |
discounts | array | Descontos aplicados |
lines | array | Itens InvoiceLine |
status | enum | Veja abaixo |
issuedAt | datetime | Data de emissão |
dueDate | datetime | Data de vencimento |
paidAt | datetime? | Data do pagamento |
createdAt | datetime | Criação |
updatedAt | datetime | Última atualização |
Existem dois tipos de invoice:
PLAN para a cobrança fixa da assinatura e FEE para as taxas de uso variável. Cada tipo corresponde a uma subscription separada no Stripe (externalPlanRef e externalFeeRef).Transições de Estado
Relacionamentos
- Belongs to Organization
- Belongs to Subscription (opcional)
- Has many InvoiceLines
- Has many CouponUsages / VoucherUsages
- Has one InvoiceBillingThreshold (opcional)
Regras de Negócio
- Sincronizada com o Stripe
- Pode incluir descontos de cupom + voucher simultaneamente
- Suporta upsert por externalRef para invoices manuais