⚠︎ Recurring billing runs once per day. Memberships and service agreements that become due are not billed instantly — there may be a delay of up to 24 hours between when a contract is due and when the billing invoice appears.
a. ServiceTitan's billing engine runs automatically each day. It identifies memberships and service agreements that are due for billing, generates invoices from the billing template, and charges the customer's stored payment method.
b. When auto-charge is configured, the system generates the invoice and charges the payment method at the same time. The invoice is created, the payment is applied, and both are ready for batching.
c. If the charge fails (expired card, no payment method on file, or a processor error), the invoice is still generated but remains unpaid. Failed charges require manual follow-up — see Step 3 below.
⚠︎ The billing engine charges the customer's preferred credit card only. If the preferred card is expired or invalid, the charge fails even if other valid cards are on file. Make sure customers have a current preferred payment method.
⚠︎ Running a manual billing run for a date range that overlaps with automatic billing creates duplicate invoices. Always check the billing history before running a manual cycle to avoid overlap.
a. Navigate to the recurring billing area from Accounting > Batch/Export Transactions and click Recurring Billing.
b. Click Automatic Billing Rules.
c. Define the day-of-month range for eligible billing dates, the invoice generation day, and the payment day. Optionally restrict the rule to specific membership types — leaving this blank applies the rule to all types.
d. If you also want service agreements processed by the same rule, enable the service agreement invoices option. Click Create.
⚠︎ Membership Renewal Protection requires ServiceTitan Payments (ST Pay) as the active payment processor. It does not work with third-party gateways.
a. After each billing run, review the results for failed charges. Failed charges are flagged with an Action Required alert. Common reasons include expired payment methods, no payment method on file, and processor errors.
b. For expired cards, contact the customer to update their payment information. To reduce this manual effort, enable Membership Renewal Protection — this feature automatically updates expired card details through the card networks before the next billing cycle.
c. Once the payment method is updated, you can re-run billing for the affected memberships or manually apply a payment to the unpaid billing invoice.
⚠︎ Every invoice should have at least one pricebook item. Invoices with no items will not export to your accounting software. Even for no-charge service visits, add a $0 service item so the invoice exports correctly.
a. Go to Accounting > Invoices. Contracted service produces two streams of invoices to review: billing invoices from recurring billing runs and service visit invoices from completed maintenance jobs.
b. Use filters to separate the two streams. Billing invoices are not tied to a specific job, so they will not have a job number. Service visit invoices are standard job invoices linked to the recurring service appointment.
c. For billing invoices, verify the amount matches the contract terms, the correct payment method was charged, and the business unit is correct. For service visit invoices, review line items, verify technician splits, and check for any upsold work.
d. Change the Review Status to Reviewed when satisfied. To assign invoices for review, select them and click Actions > Assign invoices to.
⚠︎ If auto-batching is enabled, invoices can be automatically added to a batch within seconds of creation. If you need to manage batches manually, temporarily disable auto-batching at Settings > Accounting > Journal Entries and Auto-Batching.
⚠︎ After exporting, always check for sync errors. If your accounting software rejected a record, the individual invoice may show an error even though the batch itself shows as exported. Check per-record status when troubleshooting mismatches.
a. Go to Accounting > Batch/Export Transactions. Create a new batch or select an existing one. Add unbatched invoices — both billing invoices and service visit invoices flow through the same batching workflow.
b. Review the batch contents. Confirm line items, totals, business unit assignments, and tax zones are correct.
c. Click Post to post the batch. Posting locks the invoices and creates the accounting entries. Only the service location, business unit, job type, and payment remain editable after posting.
d. After posting, export the batch to your accounting software (QuickBooks Desktop, QuickBooks Online, Intacct, or Xero) — or use Bypass Export if you don't use an accounting integration.
⚠︎ Unposting is blocked if the invoice date falls in a closed accounting period. The only correction path in a closed period is an adjustment invoice. Closing an accounting period is irreversible — plan period closes deliberately.
a. Only invoices in Pending status can be fully edited. Go to Accounting > Invoices, find the invoice, and click to open it. Use the side menu to add or remove line items, or click Edit on existing items.
b. If the invoice is Posted but not exported and the accounting period is open, go to Accounting > Batch/Export Transactions, find the batch, and click Unpost. Make your corrections, then re-post.
c. If the invoice is Exported, it is permanently locked. Open the original invoice and click Add an adjustment invoice. Add corrective line items (positive or negative). The adjustment invoice must be batched, posted, and exported separately. It appears as a Credit Memo in your accounting software.
⚠︎ Switching a membership type from Deferred to Point of Sale removes deferred revenue balances permanently. There is no way to undo this change. Confirm with your accounting team before making this switch.
⚠︎ For memberships using deferred revenue, the standard invoice totals in Accounting > Invoices do not reflect how much revenue has been earned versus deferred. You must use the deferred revenue reports and the Active Membership Liability report to get an accurate picture of recognized revenue.
⚠︎ Dismissing recurring service events in bulk does not automatically trigger revenue recognition for each event. Each event must be resolved individually for the corresponding revenue to be recognized. Plan for this during seasonal close-outs when multiple visits may need to be dismissed at once.
a. At each month-end close, compare the Deferred Revenue account balance in your general ledger against the Active Membership Liability report in ServiceTitan. Recognized revenue should decrease proportionally as visits are completed throughout the period.
b. If there is a mismatch, check for recently completed visits that may not yet be reflected. Deferred revenue recognition runs on a daily schedule, so visits completed late in the day may not be recognized until the following day.
c. Check for membership cancellations. When a membership is cancelled with remaining prepaid visits, a cancellation refund invoice is generated to settle the deferred balance. If that refund invoice has not been posted, the deferred revenue balance will appear overstated.
a. Verify the membership or service agreement is in Active status. Expired, cancelled, or suspended contracts will not generate billing invoices.
b. Check the next scheduled billing date on the contract. If that date has not arrived yet, no invoice will be generated. Billing runs daily and only processes contracts that are due today or overdue.
c. Confirm a billing template is assigned to the membership type or service agreement. If the billing template is missing, the billing run will skip the contract.
d. Check whether automatic billing rules are configured and active. If no rule covers the contract's billing date range, the invoice will not be auto-generated — you will need to run a manual billing run.
⚠︎ This is the most common contracted service invoicing error. Both membership and service agreement billing runs are subject to the same overlap risk.
a. Duplicate billing invoices typically occur when a manual billing run overlaps with automatic billing for the same date range. Check the billing history to see if both an automatic and manual run processed the same contracts.
b. To fix duplicates still in Pending status, delete the extra invoices. If duplicates have already been posted, create adjustment invoices to zero out the incorrect ones.
c. To prevent this from happening again, always check the billing history before running a manual cycle. If automatic billing rules are active, limit manual runs to date ranges that automation does not cover.
a. Billing invoices inherit the tax zone from the customer's service location. Go to Settings > Invoicing > Tax Zones and verify the location's ZIP code is mapped to the correct zone.
b. Check the items on the billing template in your pricebook. If the membership billing amount should be tax-exempt, verify the pricebook items have the Taxable flag unchecked.
c. If the customer has a tax exemption certificate, confirm the tax-exempt setting is applied at the Customer > Location level. If you use the Avalara integration for automated tax rates, note that Avalara may override manually configured tax zones.
⚠︎ Membership deferred revenue and service agreement deferred revenue use different reporting pathways. There is no single combined view of total deferred revenue out of the box — reconcile each type separately.
a. Compare the Deferred Revenue account in your general ledger against the Active Membership Liability report for the same period. If the GL shows a higher deferred balance than expected, revenue recognition may be lagging.
b. Check for recently completed visits. Revenue recognition runs daily, so visits completed late in the day may take up to 24 hours to be reflected in the deferred revenue balance.
c. Look for bulk-dismissed events. Dismissing recurring service events in bulk does not automatically recognize revenue for each one — events must be resolved individually. If your team bulk-dismissed seasonal visits, the deferred balance will be overstated until each event is processed separately.
d. Verify that any membership cancellation refund invoices have been posted. Unposted cancellation invoices leave deferred revenue on the books that should have been settled.