A customer's recurring revenue gets invoiced through the Cycle Invoice — either you trigger it yourself, or PortaPro drafts it for you automatically overnight.
Generate Cycle Invoice — the on-demand path
The Generate Cycle Invoice button on a customer's Rate Card tab is an on-demand action. Click it any time and PortaPro sweeps the customer's active Rate Card rows for the current billing cycle window and creates a draft invoice, one line item per row (plus one per Additional Charge). Nothing sends automatically — you review the draft and click Send when it's ready.
Auto-drafting — the nightly path
You don't have to remember to click the button. A nightly cron job can pre-draft Cycle Invoices for you before each customer's cycle closes. Turn it on at Settings → Finance → Cycle Billing → Auto-cycle-draft. The toggle has three pieces:
Auto-drafted invoices are still drafts. They don't send themselves — the nightly job hands you a reviewed-and-ready starting point, not a finished send.
Billing source determines what gets billed
Each customer has a billing source, set in Edit Customer → Billing:
The Cycle Invoice path only pulls Rate Card rows when the billing source includes Rate Card (i.e., "Rate Card" or "Both").
Double-billing guard
If a customer has both an active autopay schedule and billable Rate Card rows, you'll see an amber banner on the Rate Card tab, and clicking Generate Cycle Invoice shows a warning toast before it creates the draft. Autopay and the Rate Card's cycle invoicing are independent billing engines — running both against the same charges double-bills the customer. The guard doesn't block you (there are legitimate reasons to run both briefly during a transition), but it makes sure you can't miss it. Pause one engine once you've confirmed which should be authoritative.
How the cycle window resolves
The service period on a Cycle Invoice is resolved in this order: the customer's own billing cycle settings (Calendar month, Anniversary, Fixed-day/28-day, or Manual) first; if those aren't configured, the org's default billing cycle; and if neither is set, a calendar-month fallback. In practice nearly every customer has an explicit cycle configured, so the fallback layers rarely get exercised — they exist so a newly imported or partially set up customer still gets a sane invoice period instead of an error.
Duplicate prevention
Whether triggered on-demand or via the nightly auto-draft, a customer can only have one Cycle Invoice per billing period from the Rate Card path. Clicking Generate Cycle Invoice a second time for a period that's already billed returns "Already billed" instead of creating a duplicate.
