Esquema
| Campo | Tipo | Descrição |
|---|---|---|
subscriptionId | UUIDv7 | Identificador único |
organizationId | UUIDv7 | FK para Organization |
planId | UUIDv7 | FK para Plan |
planIntervalId | UUIDv7 | FK para PlanInterval |
externalPlanRef | string? | Subscription do Stripe (plano) |
externalFeeRef | string? | Subscription do Stripe (taxas) |
currency | enum | USD, BRL, EUR |
status | enum | Veja abaixo |
pastDueReason | enum? | PLAN, FEE, PLAN_FEE |
pastDueAt | datetime? | Quando ficou inadimplente |
pausedBy | UUIDv7? | Quem pausou |
pausedAt | datetime? | Quando pausou |
cancelledBy | UUIDv7? | Quem cancelou |
cancelledAt | datetime? | Quando cancelou |
createdBy | UUIDv7 | Criador |
createdAt | datetime | Criação |
updatedBy | UUIDv7 | Último atualizador |
updatedAt | datetime | Última atualização |
A subscription possui duas referências externas separadas no Stripe:
externalPlanRef para a cobrança fixa do plano e externalFeeRef para as taxas de uso variável. Isso permite que cada componente tenha seu próprio ciclo de cobrança.Transições de Estado
Relacionamentos
- Belongs to Organization
- Belongs to Plan / PlanInterval
- Has many Invoices
- Has many SubscriptionCoupons
Regras de Negócio
- Criada com status
ACTIVE pastDueReasonindica o componente que falhou no pagamento- Pausa suporta
collectionBehavior:KEEP_AS_DRAFTouMARK_UNCOLLECTIBLE - Suporta aplicação de cupons via SubscriptionCoupon