Skip to main content

Advanced Billing Patterns

Beyond standard recurring billing, Recurso supports advanced billing patterns that let you add one-time or metered charges to subscriptions and pre-bill customers for future periods. These capabilities cover common SaaS scenarios like overage charges, professional services fees, and annual prepayment.

Unbilled Charges

Unbilled charges are line items attached to a subscription that accumulate until the next invoice is generated. They are ideal for:
  • Metered add-ons — additional API calls, storage, or compute beyond the plan allowance
  • One-time charges — setup fees, professional services, custom development
  • Overage fees — charges triggered when usage exceeds a threshold
  • Ad hoc adjustments — manual billing adjustments applied by your team

How Unbilled Charges Work

Unbilled charges sit in a pending state until the subscription’s billing period ends. At that point, Recurso rolls them into the next invoice alongside the regular plan amount. Once invoiced, the charges are cleared from the pending queue.

Add an Unbilled Charge

Request Parameters

Charge Object

List Unbilled Charges

Retrieve all pending charges for a subscription that have not yet been invoiced.

How Charges Appear on Invoices

When the billing period ends, all pending charges are added as line items on the invoice alongside the recurring plan amount:

Advance Invoicing

Advance invoicing lets you generate an invoice for one or more future billing periods. This is commonly used for:
  • Annual prepayment — Bill a customer for 12 months upfront at a discounted rate
  • Multi-period commitments — Collect payment for a committed contract term
  • Cash flow optimization — Collect revenue earlier in the contract

Generate an Advance Invoice

Request Parameters

Advance invoicing does not change the subscription’s billing cycle. Regular invoices will be skipped for the pre-billed periods. If the subscription is canceled before the advance-billed periods are consumed, the remaining amount becomes eligible for credit or refund per your cancellation policy.

How Advance Invoicing Interacts with Revenue Recognition

When an advance invoice is issued, the full amount enters the Deferred Revenue account (2100); payment then settles the receivable. Revenue is recognized month by month as each period elapses, following the standard recognition schedule described in the Revenue Recognition guide.

Use Cases

Your plan includes 10GB of storage. When a customer exceeds the limit, add an unbilled charge for the overage:
Charge a setup fee when onboarding a new customer:
The setup fee will appear on the customer’s first invoice alongside their initial plan charge.
Bill for consulting or implementation hours consumed during the period:
Offer a discount for paying annually. Generate an advance invoice for 12 periods:
For enterprise customers signing a 24-month contract, generate an advance invoice for the full term:

Webhook Events

API Reference Summary

Best Practices

Describe Charges Clearly

Always include a detailed description with dates and quantities. Customers see these on their invoices and vague descriptions cause support tickets.

Match Currency

The charge currency must match the subscription’s currency. If a subscription is billed in EUR, all charges must also be in EUR.

Review Before Billing

Use the list endpoint to review pending charges before the billing cycle closes. This gives your team a chance to correct errors.

Limit Advance Periods

Avoid invoicing too far in advance. Long advance periods increase refund risk if the customer cancels. For most cases, 3-12 periods is appropriate.
Combine unbilled charges with advance invoicing for maximum flexibility. For example, add a one-time implementation charge and then generate an advance invoice for 12 months — the one-time charge rolls into the next regular invoice while the advance invoice covers future periods separately.
Unbilled charges are not prorated. If you add a charge mid-cycle, the full amount appears on the next invoice. If you need prorated charges, calculate the prorated amount before calling the add charge endpoint.