Skip to main content
Open Admin → Internal Ops → Revenue Reconciliation. This workspace brings the approved Funding Machine activity from the older billing account and all activity from the newer billing account into a cash report. It compares their payments with the Operations CRM and is restricted to verified administrators. The report always opens the Operations Location automatically; the admin Location switcher and the launching CRM Location do not change its reporting scope.

Approve the older account’s Funding Machine sources

Open Sources & coverage before refreshing the older account. Its source policy is Approved Funding Machine only. The newer account’s source policy is All transactions. Approve an exact Stripe subscription ID or charge ID, choose FM owner or FM usage, and provide a label and approval reason. A subscription target includes its associated Funding Machine charges and their refund and dispute cash movements. A charge target includes that exact charge and its related movements. Customer-wide inclusion is not supported: sharing a customer does not prove that another product’s payments belong to Funding Machine. A reviewed target registry can also be imported as versioned JSON. Validate its format and preview the exact target count and classifications before saving it. The registry contains identifiers and review reasons, never provider credentials. Registry approval changes which records future manual refreshes may read; it does not start a payment, change a subscription, or alter CRM records. Disable a target with a reason to stop including new activity from it, or re-enable it with a reason. Disabling keeps the approved historical cash already saved in the report. Old-account coverage describes the approved targets and selected dates; Approved scope verified never means the entire old account was reconciled. Editing the approved registry makes saved old-account coverage provisional until a refresh or verified import checks the current registry. Location cash is also provisional when no snapshot is available or the selected dates are invalid. Keep target labels and reasons specific enough for another administrator to review. Add exact Location IDs and Location binding evidence when the source can be linked to a CRM Location. Use Edit target evidence to correct a saved mapping; this preserves the target’s enabled state. Multiple candidate IDs remain ambiguous, and clearing IDs removes that target’s mapping. Review the binding details in the Locations view before assigning cash to a Location. The Sources view also lists old-account invoice payment exceptions, including externally recorded invoice payments and invoices without a verified Stripe charge. Open the invoice evidence link to investigate. These records are excluded from Stripe gross and net cash until a real processor movement is established.

Refresh a selected period

Select a date range and choose Refresh selected dates. Dates use UTC, including both selected days. The source status shows which accounts were checked, the period covered and when the data was retrieved. Refreshes are manual. Larger historical reads from the newer account resolve invoice identities in pages to avoid a separate lookup for every payment. The older account remains limited to approved exact sources. If the selected source scope cannot be completely read, the last successful snapshot stays available with an error that names the cause, such as a read limit or a provider rejection. A missing connection is never reported as zero revenue. Narrow the period and retry if the read reaches its limit. Use the account and currency filters to inspect each source. Currencies remain separate. The report uses each cash movement’s own date: a refund in October for a September sale reduces October collections, rather than rewriting September.

Read the totals

  • Gross collections are actual captured payments.
  • Refunds are refund withdrawals. Failed refunds returned by the processor appear as adjustments.
  • Disputes show withdrawals separately from money reinstated after a win.
  • Fees include the fees on those movements and separate processor fee entries.
  • Net cash is the signed activity after fees, excluding bank payouts, internal transfers, and reserve or authorization holds.
  • Payouts transfer money already collected; they are not additional revenue.
Pending processor funds have been collected but are not yet available for payout. A pending dispute is not automatically a final loss. A won dispute does not become a second sale. The original payment, refund and dispute movements retain their own processor identifiers so they cannot be counted twice. These are cash totals, not earned revenue or profit. An annual prepayment appears as cash collected when paid; its earned revenue depends on the service period. Taxes, non-Stripe receipts, reserves and other balance adjustments need their own accounting treatment. Match the report to processor balances and bank payouts before treating it as the complete financial close.

Review Funding Machine classifications

The older account also collected payments for other products, so its read boundary comes from the approved source registry. Within the report, review unclassified payments from the newer account and classify the charge as FM owner, FM usage, Other, or Unclassified, with a reason. A saved charge classification applies to its related refund and dispute movements. The review records the administrator and time; restoring the source classification reverses the override without erasing its audit history. Classification changes reporting only, not subscriptions, customer access or money movement. Use transaction filters to narrow the review, select up to 100 distinct charges, and apply a classification with a shared reason. Review the selected count before saving. A batch succeeds together; it does not partially apply. Individual reviews can still be reverted from their movement evidence. Unclassified new-account amounts remain in cash totals, because that account’s transactions are in the authorized Funding Machine source scope. Their owner/usage attribution still needs review; inclusion in cash does not mean CRM evidence has been reconciled. An all-category view is useful for new-account processor balance checks and must not be described as Funding Machine revenue. The old account remains limited to approved Funding Machine activity even when All classifications is selected.

Compare Locations

Open Locations to compare gross collections and net cash paid to Funding Machine for active and inactive CRM Locations. This view does not report the Operator’s own client revenue. CRM activity status is independent from subscription or payment activity; an invalid connection alone does not prove a Location is inactive. The date, account, and currency filters apply to Location cash totals. Transaction search, transaction classification, and CRM exception filters apply to the transaction view. New-account payments count even while their owner/usage category is awaiting review. Old-account payments remain limited to the approved Funding Machine scope. New-account payments can also use the exact Location ID in an owned CRM billing URL. Related refunds and disputes follow their charge. Payer-level evidence is used only when the available snapshot and saved bindings agree on one Location; conflicting evidence remains ambiguous and unknown IDs do not create Locations. Payments with missing or ambiguous Location evidence stay in an explicit unassigned pool. They are not distributed across Locations by similar names or amounts. Keep that pool visible when assessing whether every Location has been accounted for. Large metadata lists are bounded so the cash report remains available. If a list is cut short, coverage is marked partial and the report explains the limit. Incomplete billing mappings leave cash unassigned instead of inferring a Location from a weaker match. The saved historical ledger is retained. First-signup dates use recorded evidence where available. A fallback based on the earliest verified billing activity is labeled as an estimate and identifies its source. Exact charge-to-Location evidence also preserves older payment dates when the payer has no Stripe customer record. An unknown date remains unknown rather than becoming a claimed signup date. Only one report change can save at a time. If another change is still saving, wait for its result and retry the second action.

Investigate CRM exceptions

Use the exceptions view and open a transaction’s details. Follow the Stripe and CRM evidence links to inspect the original record. Matching uses account and transaction identifiers; a similar name or amount does not create an automatic association. A missing CRM payment is different from a missing refund. If the original sale never existed in Operations, importing only the sale would overstate collections unless its refund is also accounted for. If the CRM already has the payment, compare the current cumulative refunded amount with Stripe. An unavailable CRM read remains unknown, not a confirmed missing payment. Do not issue another refund to correct reporting. This dashboard contains no payment, refund, cancellation or account-access actions.

Import and export

Use the downloadable snapshot template for the versioned JSON import format. Preview and validate the import before saving it. Source account, scope, dates, integer monetary amounts, unique transaction IDs and coverage are validated. Old-account entries must belong to an approved exact subscription or charge target; a snapshot import cannot expand that account’s approved read boundary. Imports are limited to 10 MB and 8,192 movements. Larger files upload directly to the application’s configured storage after an administrator validates the preview; CRM session credentials are never sent with the file. Reports load in verified pages and appear only after every page has arrived, so an interrupted load never presents partial cash as a complete total. A shorter date range may still be needed if the movement limit is exceeded. Only import trustworthy processor extracts; an import’s claimed completeness is not independently proven by the dashboard. Export the filtered transaction view as CSV to preserve the processor IDs, amounts, classifications and reconciliation findings. Keep the account, date, currency and category filters with an exported report so its scope is clear. The native CRM transaction importer does not support refund backfills. Do not import gross historical sales merely to make its revenue widget agree. Use this reconciled ledger while any supported repair is verified.

Connections and rollout

Live reads use the existing server-side credentials for the two explicitly configured billing accounts and the scoped Operations CRM installation. Account identity is checked before ingesting transactions. Credentials are never entered into or returned by this dashboard. If a source is unavailable, an administrator must resolve that connection before the selected period can be complete. The new database tables and application code must be released together through the repository’s normal deployment process. Preview fixtures contain synthetic data only. A local preview does not populate the production dashboard.