Billing

Billing overview

What Billing does, the main records it manages, and how it connects to Antly Base.

Product Purpose

Billing manages accounts, subscription plans, subscriptions, invoices, invoice items, payments, payment providers, payment attempts, transactions, wallets, and invoice preferences.

Billing is a launchpad module, but it is not isolated from the rest of Antly. It shares tenant identity, permissions, workflow automation, reports, pages, and JQL access with Base so teams can run the module as part of a wider operating system rather than as a separate silo.

Use this overview when deciding what belongs in the module, what should stay in Base objects, and how the module should connect to tasks, tickets, workflows, pages, and reports.

Entity Table

AreaSource entitiesWhy it matters
CatalogueAccount, ProductCategory, SubscriptionPlan, SubscriptionPlanItemBilling accounts, plan catalogue, and priced plan items.
SubscriptionsSubscription, SubscriptionItem, SubscriptionCycle, SubscriptionCycleItemRecurring customer commitments and generated cycles.
InvoicesInvoice, InvoiceItem, InvoicePreferenceAmounts due, line detail, and invoice preferences.
PaymentsPayment, PaymentProvider, PaymentAttempt, PaymentLogProvider configuration, attempts, payment records, and logs.
Wallets and transactionsDedicatedAccount, Transaction, RecordBalance, RecordWallet, RecordWalletLogBalances, wallets, dedicated accounts, and transaction history.
IntegrationsWebhookEventInbound payment or provider webhook history.

How It Connects To Base

  • Objects and records: Module records can be referenced from Base objects or can enrich object-backed workflows when teams need a tailored schema.
  • Tasks: Operational exceptions, approvals, handoffs, and reminders should create tasks with owners and due dates.
  • Tickets: Customer-facing or service-desk follow-up can be represented as tickets when the work needs queueing, SLA, or support ownership.
  • Workflows: Create/update/status events can trigger approvals, notifications, cross-module updates, and scripted transformations.
  • Pages and sites: Internal pages, portals, and public surfaces can expose selected module data when permissions allow it.
  • Reports: Module reports should be combined with Base reports when leaders need cross-functional visibility.
  • Reference: API and automation details live in /reference/billing.

Launchpad Path And Routes

  • Open the module from Launchpad -> Billing.
  • Frontend source reviewed: Base app billing routes in packages/antly-app.
  • Backend source reviewed: src/billing/models.py plus controllers or automation files where available.
  • Main route: /billing/[...page]
  • Main route: /billing/invoices/pay-integration/[invoiceId]

Who Uses It

  • Billing administrators.
  • Finance teams.
  • Subscription operations.
  • Customer success teams resolving invoice issues.
  • Developers integrating payment providers.

What To Keep In This Module

  • Use Billing for the records listed above when users need the module screens, module actions, and module reports.
  • Use Base objects when the data is a tenant-specific schema that does not need module-specific lifecycle actions.
  • Use tasks for human follow-up that needs an owner, due date, comments, or completion tracking.
  • Use tickets for support or service work that benefits from queues, requesters, SLA thinking, or customer conversation history.
  • Use workflows when a record change should notify people, request approval, create related work, or synchronize another module.
  • Use pages when a role needs a focused workspace over a subset of the module data.
  • Use reports when the team needs recurring visibility rather than one-off exports.
  • Use JQL and reference namespaces when integrations or scripts need structured access to records.

Operating Notes From Source

  • The backend app is src/billing and the primary models define the durable record names used by JQL and reports.
  • Most important work happens through model lifecycle actions, status fields, or controller endpoints rather than free-form notes.
  • Where automation event constants exist, prefer those event names in workflows instead of inventing parallel naming.
  • Where no explicit event class exists, build workflows around create, update, status change, and assignment changes for the module records.
  • Permissions should follow the module role model first, then be narrowed by Base pages or object exposure only when needed.
  • Imported data should be reconciled against module reports before it is trusted by downstream finance, payroll, inventory, or customer flows.
  • Avoid duplicating module records in custom objects unless the custom object is only an extension or intake surface.
  • Keep launchpad access, settings access, and API access aligned so users cannot automate records they cannot operate in the UI.
  • Setup: /billing-setup for configuration, prerequisites, and permissions.
  • Working guide: /billing-working for day-to-day flows.
  • Data and automation: /billing-data-automation for namespaces, workflow triggers, and reports.
  • Reference: /reference/billing.