# Revenue corrections system map: linking keys | SourceX

Canonical: https://refer.sourcex.si/guides/revenue-allocation-corrections-records-across-systems
Last updated: 2026-10-19

Reconstructing a revenue allocation correction across systems needs four keys that survive the change: a contract ID carried by the CRM, billing system, revenue tool and ledger; an obligation or line ID that persists through the amendment; a version number on every calculation; and a journal reference that points back to the version that produced each entry. A fifth, softer link ties the adjustment memo to its contract and version. Billing and the ledger can agree on totals without any of these, but only the keys explain the totals.

This map is part of the [revenue allocation corrections guide](/guides/workflow-revenue-allocation-corrections). The worked logic of a single modification is on the [exception examples page](/guides/revenue-allocation-corrections-exception-examples); this page is about the plumbing that lets anyone find that logic again.

## Five places one correction lives

A corrected allocation is written in pieces, in tools owned by different teams, and no single export holds the whole thing.

- **CRM or contract repository.** The signed contract and amendment, with sales notes on any discount.
- **Billing system.** The subscription, invoice lines and charges the customer actually sees.
- **Revenue tool.** Performance obligations, stand-alone selling price inputs, calculation versions and recognition schedules.
- **General ledger.** Journal entries by period, account and class.
- **Memo store.** The adjustment memo and approval, often a shared drive or an attachment in the close checklist.

The revenue tool carries the reasoning because the U.S. standard sets each obligation's share at signing, from stand-alone prices. The international standard then forks a change into either a new agreement or a restart, and the fork decides how many records one amendment produces.

## The system map: record, linking key and owner

| System | Record | Linking key it should carry | Typical owner | What breaks the link |
|---|---|---|---|---|
| CRM or contract repository | Signed contract and amendments | Contract ID | Sales operations, legal | Amendment filed as a new deal with a new ID |
| Billing system | Subscription and invoice lines | Contract ID, line ID | Billing operations | Added service billed on an unlinked line |
| Revenue tool | Obligations and SSP inputs | Contract ID, obligation ID | Revenue accounting | Obligations re-keyed after a migration |
| Revenue tool | Calculation versions | Version number, effective date | Revenue systems lead | Superseded or locked versions not exported |
| SSP table | Stand-alone selling prices by date | Table version or effective date | Controller | Table edited in place with no history |
| General ledger | Journal entries | Journal reference to contract and version | Controller, close team | Summary postings without references |
| Memo store | Adjustment memo and approval | Contract ID and version in the file name | Head of revenue accounting | Memos saved by month only |

The weakest rows are usually the SSP table and the memo store. A table overwritten in place leaves version 1 unexplainable, and a memo filed by month cannot be found from the contract.

## One case joined end to end (Illustrative)

A fictional 240-person marketing analytics software company. A customer on contract CT-4471 adds a premium support tier in month five. Every identifier below is invented.

| Step | System | Record | Keys present |
|---|---|---|---|
| Original contract | CRM | Contract CT-4471, two obligations | CT-4471 |
| First invoice | Billing | Lines L1 subscription, L2 onboarding | CT-4471, L1, L2 |
| Inception allocation | Revenue tool | Obligations OB-1 and OB-2, version 1 | CT-4471, OB-1, OB-2, v1, SSP table 2025-A |
| Amendment | CRM | Amendment A1, premium support | CT-4471, A1 |
| Added charge | Billing | Line L3 premium support | CT-4471, L3 |
| Locked original | Revenue tool | Version 1 ended and locked | CT-4471, v1 |
| New arrangement | Revenue tool | Version 2 with OB-1, OB-3 and residual values | CT-4471, OB-3, v2, SSP table 2025-B |
| Approval | Memo store | Memo CT-4471-v2 signed by controller | CT-4471, v2 |
| Postings | General ledger | Monthly revenue entries | Reference CT-4471-v2 |

The case is fully joined because the contract ID appears everywhere, line L3 maps to obligation OB-3, both versions name their SSP table, and the ledger reference points at version 2. Remove any one key and someone has to guess. The locked row matters. NetSuite, for example, freezes the first arrangement when a change is merged going forward and moves what remains into a new one. A migration that copies only active arrangements would keep version 2 and lose the before state.

## Where the keys usually break

Four failure patterns cover most broken chains. Each is something a revenue systems lead can confirm in conversation.

1. **Re-keying at migration.** The new revenue tool issues its own IDs and keeps the old contract ID only in a free-text field, if at all.
2. **Unlinked billing lines.** The added service is billed as a new subscription with no reference to the original contract, so billing and revenue disagree about what was modified.
3. **Summary postings.** The ledger receives one revenue entry per period with no contract or version reference. Totals tie, reasons vanish.
4. **Orphaned memos.** Memos live in personal drives or month folders. The judgment exists but cannot be attached to its version.

A [revenue leakage audit](/guides/revenue-leakage-audit) runs into the same joins from the billing side, and the wider argument for why joined records are worth more than single-system exports is in [cross-system data value](/guides/cross-system-data-value-ai).

## Questions to ask without opening a ledger

Put these to the head of revenue accounting or the revenue systems lead. The answers are metadata and fit straight into the [referral brief template](/resources/revenue-allocation-corrections-referral-brief-template).

- Does every system carry the same contract ID, and since which year?
- When a service is added mid-term, is it billed on a line linked to the original contract?
- Are superseded or locked calculation versions still openable, and will they move to any new tool?
- Is the SSP table versioned by effective date?
- Do journal entries reference the contract and version, or post as summaries?
- Where are adjustment memos filed, and by what name?

Coverage comes from the head of revenue accounting; authority sits with the CEO, with the CFO and counsel advising, because customer contracts carry confidentiality terms. The company needs 50+ full-time employees at peak (contractors excluded), a documented operating history, rights to license the records and an authorized contact. Companies in the U.S., Canada and the EU qualify, as do companies in the UK, Australia, New Zealand, India, Singapore, South Africa, Latin America, the UAE and Saudi Arabia when at least 90% of the data is in English. Unknown until SourceX reviews it: buyer interest, the rights review result, what must be aggregated or removed, and any terms. Partners sign the Channel Partner Agreement first; attribution goes to the first valid introduction within the 90-day window, credited when the company submits a verified application. The broader record family is described on [finance and accounting workflows](/data-types/finance-and-accounting-workflows); groups with several operating companies may also find [holdco capital allocation](/guides/holdco-capital-allocation) useful context.

## Next step

> **Refer a company. Earn up to $100,000.** Default reward: 25% of Actual Supplier Payout, capped at $100,000 cumulatively per referred company. Eligibility and payment conditions apply, and a signed Schedule A or addendum can differ. A lead, meeting or signature alone does not trigger payment.

If the revenue systems lead confirms that contract, obligation and version keys run through billing, the revenue tool and the ledger, [register as a partner](/register), check the company against [who qualifies](/who-qualifies) and read the [program terms](/terms) before you write the introduction.

## Sources

- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1498077674.html
- https://storage.fasb.org/ASU%202014-09_Section%20A.pdf
- https://www.ifrs.org/content/dam/ifrs/publications/html-standards/english/2024/issued/ifrs15.html
- https://refer.sourcex.si/terms
