Back to Subscription & Recurring Billing

Process Runbook / SOP

How the automation works day-to-day: what is automatic, what needs a human, how exceptions are handled, and who to contact.

4 pagesPDF · Operations
FS-DOC-03Operations

Process Runbook / SOP

Subscription & Recurring Billing

[YourCompany.com] · Finance Department · Prepared by FullSpec · [Today's Date]

This runbook is the plain-English operating guide for your billing admin and bookkeeper. It tells you exactly what the automation handles on your behalf, where your one human checkpoint sits, how to respond when something unexpected happens, and who to call when you need help. FullSpec builds, monitors, and maintains the automated workflow end to end. Your team's job is to review flagged exceptions, keep subscriber and contact data current, and act on the exception alerts the system sends you.

01Process overview

Every billing period, the automation detects that a cycle start date has arrived and runs the full billing sequence without manual input. It pulls active subscriber records from HubSpot, creates correctly priced invoices in Xero, charges each subscriber via Stripe, sends confirmation or failure emails through Gmail, retries any failed payments after 72 hours, reconciles confirmed payments in Xero, and posts a billing summary to your Slack finance channel. The only step your team handles is reviewing any reconciliation items the system could not automatically match, which the system flags and routes to you directly. Everything else runs on schedule, every cycle, without anyone needing to remember to start it.

Process name
Subscription & Recurring Billing
Trigger
Billing period start date is reached for any active subscription stored in HubSpot
Final output
All invoices raised and marked paid in Xero, failed payments retried, confirmation emails sent, and a billing run summary posted to Slack
Agents running
Billing Cycle Agent, Failed Payment Recovery Agent, Reconciliation and Notification Agent
Tools involved
HubSpot, Xero, Stripe, Gmail, Slack
Weekly volume
~120 invoices per billing cycle (monthly); daily failed-payment retry checks
Human checkpoint
Review unmatched reconciliation items flagged by the system in Xero
Process owner
[Your name] — Billing Admin
Process Runbook / SOPPage 1 of 4
FS-DOC-03Operations

02Step-by-step: what happens and who acts

What you actually need to do: Your one active step in this process is reviewing unmatched reconciliation items in Xero. When the system cannot automatically match a Stripe payment to a Xero invoice, it flags the item and notifies you via Slack. You open Xero, review the flagged item, and either match it manually or escalate to the bookkeeper. Everything else in the table below runs automatically.
Step
What happens
Who acts
Type
1
The automation platform detects that a billing period start date has arrived for one or more active subscriptions and kicks off the billing run.
Automation
Automated
2
The Billing Cycle Agent queries HubSpot and retrieves all active subscriber records, including each subscriber's plan tier, current pricing, and renewal date, producing a structured billing list for the current cycle.
Billing Cycle Agent
Automated
3
For every subscriber on the billing list, the Billing Cycle Agent creates a correctly priced invoice in Xero, populated with the subscriber's contact details and the appropriate line items and account codes.
Billing Cycle Agent
Automated
4
The Billing Cycle Agent triggers a Stripe charge against each subscriber's stored payment method and records whether each charge succeeds or fails.
Billing Cycle Agent
Automated
5
Subscribers whose payment cleared immediately receive a payment confirmation email and invoice link via Gmail, using a consistent branded template.
Reconciliation and Notification Agent
Automated
6
Subscribers whose payment failed receive an automated email via Gmail asking them to update their card details, with a direct link to do so.
Failed Payment Recovery Agent
Automated
7
The Failed Payment Recovery Agent schedules a retry charge in Stripe for each failed payment exactly 72 hours after the initial failure. If the retry clears, the subscriber receives a confirmation email and their HubSpot record is updated. If it fails again, the subscriber is flagged in HubSpot and you are notified.
Failed Payment Recovery Agent
Automated
8
The Reconciliation and Notification Agent matches every confirmed Stripe payment to its corresponding open Xero invoice and marks it as paid. Any item the system cannot confidently match is flagged and held for your review.
Reconciliation and Notification Agent
Automated
9
You open Xero and review any reconciliation items that have been flagged by the system. You either confirm the correct match manually or escalate unusual items to the bookkeeper. This step only occurs when the system has flagged something — if there are no flags, no action is needed.
Billing Admin (you)
Human
10
The Reconciliation and Notification Agent posts a billing run summary to the finance Slack channel, listing total invoices raised, payments collected, failed charges, retry outcomes, and any items awaiting human review.
Reconciliation and Notification Agent
Automated
Process Runbook / SOPPage 2 of 4
FS-DOC-03Operations

03Handling exceptions

Situation
What the system does
What you do
Subscriber record is missing required billing data in HubSpot (e.g. plan tier or email address)
The Billing Cycle Agent skips that subscriber and logs the record as incomplete. The subscriber is excluded from the current billing run and a flag is written to their HubSpot record. You receive a Slack alert listing all skipped subscribers and the missing fields.
Open HubSpot, find each flagged subscriber, and fill in the missing information. Once the record is complete, notify FullSpec support or trigger a manual billing run for that subscriber only. Do not let the flag sit — each skipped subscriber means a missed invoice.
Duplicate subscriber record detected in HubSpot
The agent identifies duplicate records by matching on email address. It raises an invoice for the primary record only and flags the duplicate in HubSpot with a 'Duplicate — do not bill' label. A Slack alert is sent listing the affected records.
Open HubSpot and merge or delete the duplicate record. Confirm which record holds the correct subscription details before the next billing cycle. If a duplicate has already been billed in a prior cycle, check Xero for any over-invoicing.
Stripe payment fails after both the initial attempt and the 72-hour retry
The Failed Payment Recovery Agent marks the subscriber's HubSpot record with a 'Payment failed — action required' status, leaves the corresponding Xero invoice open, and sends you a Slack alert with the subscriber's name, email, and failure reason from Stripe.
Contact the subscriber directly to resolve the payment. Once they have updated their card details, you or the bookkeeper can trigger a manual charge in Stripe, or ask FullSpec support to queue a one-off retry through the automation. Update the HubSpot record once resolved.
Stripe payment cannot be matched to a Xero invoice during reconciliation
The Reconciliation and Notification Agent holds the unmatched payment in a flagged queue within Xero and posts the details to the finance Slack channel. The invoice remains open until the match is confirmed.
Open Xero and review the flagged item. Common causes include a subscriber paying a different amount or a Stripe reference that does not match the Xero invoice number. Match the payment manually in Xero, or ask the bookkeeper to investigate if the discrepancy is unclear.
You do not review or act on a flagged reconciliation item within 48 hours
The system sends a follow-up Slack reminder after 48 hours if the flagged item remains unresolved. It does not escalate further automatically — the item stays in the Xero queue.
Prioritise clearing the flag before the next billing cycle opens. If you are unable to act, forward the Slack alert to the bookkeeper or finance manager so the item is not left open across two billing periods.
Xero, Stripe, or HubSpot is temporarily unavailable when the billing run starts
The automation platform retries the connection up to three times at five-minute intervals. If the tool remains unavailable after three attempts, the billing run is paused and a Slack alert is sent to the finance channel noting which tool is unresponsive and at which step the run stopped.
Check the status page of the affected tool (Xero, Stripe, or HubSpot) to confirm whether there is a known outage. Once the tool is back online, contact FullSpec support at support@gofullspec.com to restart the billing run from the point it paused. Do not attempt to run the manual process in parallel without checking with FullSpec first, as this can cause duplicate invoices.

04Who to contact and when

Fill in the team rows below once your team is confirmed. Keep this table updated whenever roles change — the right contact at the right moment matters most when something flags during a live billing run.

Role
Name
How to reach them
Billing Admin (process owner)
[Your name]
[Your email or phone]
Bookkeeper
[Your name]
[Your email or phone]
Finance Manager
[Your name]
[Your email or phone]
FullSpec builder (build and configuration questions)
FullSpec team
support@gofullspec.com
FullSpec support (live issues, alerts, errors)
FullSpec support
support@gofullspec.com
For any live billing run issue, including a tool outage, a billing run that has not fired on schedule, or a Slack alert you cannot interpret, contact FullSpec support at support@gofullspec.com before taking manual action. Acting manually during a paused automated run is the most common cause of duplicate invoices.
Process Runbook / SOPPage 3 of 4
FS-DOC-03Operations

05Ongoing maintenance

When
What to do
Who
Any time a subscriber is added, changes plan, or cancels
Update the subscriber's record in HubSpot immediately, including plan tier, pricing, and status. The Billing Cycle Agent reads directly from HubSpot at run time, so stale records result in incorrect invoices.
Billing Admin
Any time invoice templates, pricing, or Xero account codes change
Notify FullSpec support at support@gofullspec.com with the exact change needed before the next billing cycle. Do not edit Xero invoice templates manually while the automation is live, as this can break field mappings.
Billing Admin, then FullSpec team
Monthly, after each billing run
Review the Slack billing summary posted by the Reconciliation and Notification Agent. Confirm total invoices raised, payments collected, and outstanding failed payments match your expectations. Flag anything unexpected to the bookkeeper.
Billing Admin
Monthly, within 5 business days of the billing run
Check the automation platform error log via FullSpec's monitoring dashboard or ask FullSpec support for a log summary. Look for any steps that retried more than once, any skipped subscribers, or any tool connection warnings.
Billing Admin, FullSpec team
Any time a team member joins, leaves, or changes role
Update the contact table in this runbook and notify FullSpec support so that Slack alert routing and email escalation paths can be updated. Remove access for departing team members from Xero, HubSpot, and Stripe promptly.
Finance Manager
Quarterly
Review the subscriber volume trend and confirm the automation's capacity is still matched to your billing volume. If subscriber numbers have grown significantly or new plan tiers have been added, contact FullSpec to assess whether any agent logic needs updating.
Finance Manager, FullSpec team
The most common maintenance issue for this process is a stale or incomplete HubSpot subscriber record. If a subscriber's plan tier, pricing, or email is out of date at the moment the Billing Cycle Agent runs, that subscriber will either be skipped or invoiced incorrectly. Make updating HubSpot a same-day habit whenever a subscriber change occurs, rather than batching updates before the billing run.
Process Runbook / SOPPage 4 of 4

More documents for this process

Every document generated for Subscription & Recurring Billing.

Launch Plan
Operations · Owner
View
ROI and Business Case
Finance · Owner
View
Developer Handover Pack
Technical · Developer
View
Integration and API Spec
Technical · Developer
View
Test and QA Plan
Quality · Developer
View