Finance systems rarely fail because no connector exists. They fail when two applications can update the same financial fact, a message is retried without knowing whether the first attempt posted, or a technically successful transfer has no completeness check.
A useful integration map therefore starts with business objects and control states, not product logos. It should show which system is authoritative, what crosses each boundary, when the transfer occurs, how success is proved and who owns an exception until it is cleared. Where a coordination layer spans several of those boundaries at once, orchestration read and write design separates the reference data it should read from the narrow set of records it should be permitted to write.
Quick answer
A governed interface map prevents duplicate authority, unsafe retries and unowned breaks from becoming accounting, cash or reporting failures.
Decision: Choose the pattern, system-of-record owner and control handoffs for every interface linking ERP, CRM, billing platforms and bank data.
Key takeaways
- Select request-response, event, batch or virtual access for each interface according to timing, transactionality and failure behaviour.
- Assign authority at the business-object or field level; a replicated record does not become a second system of record.
- Separate transport receipt, business acceptance, posting, settlement and reconciliation so that one status cannot mask another.
- Define control totals, retry rules, exception ownership and monitoring before production, then test duplicate, partial and out-of-order scenarios.
Choose the integration pattern by control need
An integration pattern is the operating method used to move or expose data between systems. Salesforce’s integration-pattern guide distinguishes synchronous, asynchronous, batch and virtual approaches and advises selecting among them based on factors including volume, failure handling and transactionality. That is a better starting point than making every interface real time.
| Pattern | Use when | Avoid as the default when | Minimum control evidence |
|---|---|---|---|
| Request-response API | The caller needs an immediate validation, identifier or accept/reject answer before it can continue. | The work is long-running, high-volume or safe to complete later, or the receiver’s outage should not block the sender. | Versioned contract, authenticated caller, request ID, idempotency key, timeout rule, response code and business status. |
| Event or durable message | A committed state change must reach one or more consumers without holding the source transaction open. | The initiating user cannot proceed without a confirmed answer, or event order cannot be made explicit. | Event schema, source and event ID, sequence or version, consumer checkpoint, retry limit, dead-letter or suspense route. |
| Scheduled batch or managed file | Volume is high, a bank or legacy platform works in windows, or a controlled cut-off is more useful than continuous updates. | Latency changes credit exposure, customer commitments, payment release or another time-sensitive decision. | File or batch ID, sequence, record count, value total by currency, checksum, cut-off, receipt acknowledgement and replay procedure. |
| Virtual read or federated lookup | Users need current data from its owner and there is no reason to keep a second editable copy. | The consumer must operate during source outages, retain a historical state or complete downstream processing without another call. | Source timestamp, read-only access rule, timeout and cache policy, availability target and fallback behaviour. |
For APIs, OpenAPI Specification 3.2.0 provides a formal description of an API’s surface and semantics. For event exchanges, CloudEvents 1.0.2 defines a vendor-neutral event format and requires identifying context such as source and event ID. These standards can make the contract inspectable, but they do not decide the finance owner, control total or exception process.
The finance systems integration map
A finance systems integration map is a controlled inventory of data and status handoffs among operational platforms and financial records. It shows authority, direction, timing, pattern, control evidence and accountability for every material interface.
CRM
| approved account, quote and commercial state
v
Billing or contract platform
| invoice, credit and billing lifecycle
v
ERP, subledger and general ledger -------- approved payment instruction --------> Bank
^ |
| |
+------ invoice, payment and hold status ------ CRM or service teams |
|
Bank and payment channel <------ acknowledgements, rejects, statements and transactions
|
v
ERP or treasury platform
Across every arrow:
contract | authoritative ID | timing | count/value control | failure owner |
safe retry | reconciliation | monitoring and evidence
The diagram is deliberately directional. Bidirectional integration should mean two governed flows with different objects or permissions, not two systems freely overwriting the same fields. A customer-facing application may display invoice and payment status, for example, while the billing or ERP record remains authoritative. Entitlement is the harder instance of the same rule, so which system owns the subscription and entitlement state has to be settled before the product, the billing platform and the CRM each hold a copy.
For customer order, invoice, receipt and payment-status boundaries, the order-to-cash control map supplies the business handoff and acceptance context around those interfaces.
Assign system-of-record ownership at the object level
A system of record is the application authorised to establish the accepted state for a defined business object. The owner may differ by object and, in some cases, by field. The table below is a starting design assumption, not a universal product rule. The same rule applies when an AI agent can update a workbook: AI research and spreadsheet-change controls should distinguish source authority, proposed changes and the approved financial record.
The broader finance technology stack reference architecture helps define the layer and lifecycle state in which each governed object belongs before interfaces are designed.
| Business object | Usual authoritative system | Permitted replicas | Write rule |
|---|---|---|---|
| Lead, opportunity and sales activity | CRM | Planning or analytics consumers | Finance systems consume approved commercial state; they do not rewrite pipeline history. |
| Legal customer and billing account | ERP customer master or governed master-data service | CRM, billing and service platforms | CRM may propose a create or change; the governed owner accepts, rejects or returns it for correction. |
| Approved price, discount and payment terms | Contract, pricing, CPQ or ERP service chosen in the operating model | CRM and billing | Replicas are read-only for the approved version and effective period. |
| Contract or subscription obligation | Contract or billing platform | CRM and ERP | Changes create a new governed version rather than editing prior billed history. |
| Invoice and credit memo | Billing platform or accounts-receivable subledger | ERP general ledger and CRM status view | One platform owns the document and lifecycle; the ERP owns the resulting posted accounting entry. |
| Posted journal and legal-entity accounting balance | ERP general ledger | Reporting, planning and analytics | Downstream systems consume posted entries and do not amend them outside the accounting process. |
| Approved payment instruction | ERP payment module or payment factory | Treasury monitoring and bank channel | The bank confirms receipt, acceptance and settlement; it does not become the owner of the corporate approval record. |
| Bank acceptance, account transaction and balance | Bank or account-servicing institution | Treasury platform and ERP cash records | Imported records remain traceable to the bank statement, transaction or status reference. |
The ownership record should name the business data owner, the technical interface owner and the team that clears exceptions. Those are three different duties. It should also identify the stable cross-system key used to relate replicas without treating local database IDs as interchangeable. Beyond the interface itself, what a business data owner is accountable for covers definitions, chart of accounts and dimension governance, master data, quality thresholds and control evidence.
Interface ownership and control matrix
The matrix below converts the map into an operating specification. Replace each default with the actual systems, cut-offs and teams in scope. Where a single row contains both an outbound command and an inbound status, document them as separate interfaces in the build register even when one connector carries both.
| Interface | System of record | Direction | Timing and pattern | Control totals | Failure state | Retry rule | Reconciliation | Monitoring and accountable owner |
|---|---|---|---|---|---|---|---|---|
| Customer and billing-account approval | ERP customer master or master-data service | CRM proposal to owner; accepted identifier and status back to CRM and billing | Immediate API for validation, followed by an event or response for accepted state | Submitted, accepted and rejected record counts; unique proposal and customer IDs | Validation or policy rejection stays in an exception queue with a reason | Retry transport faults with the same idempotency key; do not retry an unchanged business rejection | Approved CRM accounts versus created master records by ID and change date | Pending age, rejects and duplicate proposals; master-data owner with integration operations |
| Accepted order or contract | CRM or contract platform for acceptance; ERP or billing for the created order or schedule | Approved commercial record to billing and ERP; order number and processing status back | Event for committed acceptance, or request-response when an order number is required immediately | Order count and accepted value by entity and currency; external order ID | Invalid terms, missing master data or mapping errors route to order-to-cash exceptions | Replay the same version only when creation is idempotent; corrected terms create a new version | Accepted quotes or contracts to created orders, subscriptions and schedules | Missing order number, backlog value and oldest unprocessed item; order-to-cash process owner |
| Product, price, credit and availability reference | ERP, pricing service or credit-control system | Authoritative reference data to CRM or CPQ | Event for material changes, scheduled delta for broader sets, virtual read for time-sensitive checks | Record count, version, effective date and deletion count | Stale, missing or out-of-sequence versions are quarantined | Replay by version or effective date; reject an older version after a newer one has posted | Active source records and effective periods versus the CRM replica | Replica age, sequence gaps and rejected versions; commercial-finance data owner |
| Invoice and credit posting | Billing or AR subledger for the document; ERP general ledger for the posted journal | Approved invoice, credit and accounting detail to ERP; posting status back | Durable event or scheduled batch after document approval | Document count, gross, net and tax values by entity, currency and posting date | Mapping, closed-period and validation errors enter a finance-owned suspense queue | Retry technical faults by document ID and version; business corrections create a controlled adjustment | Billing or AR subledger totals to ERP postings and control accounts | Unposted count, value and age, with reason-code trend; billing operations and controllership |
| Payment instruction | ERP payment module or payment factory for approval and release | Approved instruction to bank or payment channel | Managed file, message or API according to bank coverage, cut-off and approval design | Instruction count, value by currency, batch or message ID, file sequence and checksum where used | Schema, mandate, account or bank rejection returns to payment operations with the original reference | Retry only a confirmed technical failure under bank-specific duplicate controls; retain the original ID | Released instructions to bank receipt, acceptance and eventual account debit | Missing acknowledgement, rejection rate and aged sent items; treasury payments owner |
| Bank acknowledgement and payment status | Bank for channel receipt and bank processing state | Bank or channel to payment factory, ERP or treasury platform | Near-real-time message or API where available; scheduled status retrieval otherwise | Original message ID, accepted and rejected counts and values, status reason | Unknown reference, partial status or missing correlation enters payment-status suspense | Retrieve or poll status; never resubmit the payment merely because the status response is late | Every released instruction to a terminal bank state, then to statement evidence | Age by SENT, RECEIVED and ACCEPTED state; treasury operations |
| Bank statement and transaction reporting | Bank for statement, transaction and account balance | Bank to treasury platform and ERP cash records | Intraday reporting plus end-of-day statement or agreed file cycle | Opening balance plus debits and credits equals closing balance; transaction count and statement sequence | Missing sequence, duplicate file, balance break or unreadable transaction is held for review | Request the exact missing sequence or date range; do not load a duplicate as a new statement | Bank statement to cash book, bank GL account and outstanding reconciliation items | Missing statement, unmatched value and oldest reconciling item; treasury accounting |
| Invoice, payment and hold status feedback | Billing, ERP or collections system for each displayed state | Authoritative status to CRM and service tools | Event for material state changes or scheduled delta when immediacy is not required | Status count by source timestamp and customer or invoice identifier | Unknown account, invoice or stale version goes to a replica exception queue | Idempotent status upsert by object ID and version; reject an older state | CRM replica sampled or delta-compared to the authoritative source | Stale-status age, missing objects and version rejects; sales operations with finance systems |
Treat receipt, acceptance, settlement and reconciliation as different states
A single field called “success” is inadequate for financially relevant flows. The minimum state model should distinguish:
The Nayax–IPS settlement acceptance test applies those states to parking payments, where processor acceptance, operator payout and bank reconciliation must remain separate evidence points.
- Approved: the source system has completed its own authorisation and created a transferable record.
- Sent: the source or integration service attempted transmission.
- Received: the channel or destination acknowledged technical receipt.
- Accepted or rejected: the destination applied its business and schema rules.
- Posted: the destination created the intended operational or accounting record.
- Settled: the bank-confirmed movement reached the relevant account state.
- Reconciled: independent evidence matched the source instruction, destination record and financial result.
Corporate payment messages illustrate why the distinctions matter. Swift’s corporate ISO 20022 guidance identifies pain.001 for payment initiation, pain.002 for customer payment status, and camt.052, camt.053 and camt.054 for cash reporting. They serve different control questions. A status response is not the same evidence as a bank-account transaction.
Message identity must persist across the chain. The ISO 20022 Business Application Header brings sender, receiver, message identity and reference data into a consistent header. Even outside ISO 20022, the interface design should preserve an equivalent correlation reference from source approval through final reconciliation. The planned Revolut customer migration shows why legal-entity and account identifiers also need effective-dated mappings through a bank-feed cutover.
Design retries so they cannot create duplicate finance events
A retry policy starts by classifying the failure. A network timeout or temporary service outage may be transient. Invalid terms, a closed period, a missing account or a bank rejection is a business failure. Retrying the second class without changing the record repeats the same error and can obscure ownership.
Microsoft’s Retry pattern guidance warns that a non-idempotent operation may execute more than once when the first request succeeds but its response is lost. The control response is not “never retry.” It is to make the command safely repeatable or to prove that it did not execute before another attempt.
- Use a stable idempotency key derived from the business object, operation and version, not a new random key for each attempt.
- Store the processed key and resulting destination identifier so a duplicate request returns the prior result rather than creating another record.
- Cap attempts and delay repeated calls; after the limit, move the item to an owned exception queue.
- Carry sequence or version data so consumers can reject stale updates and detect gaps.
- For a corrected business record, create a new governed version and retain the rejected version’s history.
Messaging infrastructure may redeliver. Microsoft’s asynchronous messaging guide notes that duplicate command processing can create outcomes such as duplicate orders or double billing and that ordered delivery requires an explicit mechanism. Finance consumers should therefore be idempotent even when the broker offers duplicate detection.
Reconciliation is a separate control, not a monitoring metric
Monitoring asks whether an interface is running. Reconciliation asks whether the intended business and financial result is complete and accurate. An API can have no errors while one approved invoice never reaches the ledger. A file can be received while one record is rejected. Both interfaces may look technically healthy. Northern Trust’s Lukka agreement provides a current digital-asset example: coverage across many sources does not by itself prove that the complete population was accepted, normalized and reconciled. That gap is also a sequencing rule for the wider chain, since completeness is the first record-to-report control to automate before any later stage can be trusted.
Build reconciliation in three layers:
- Transfer completeness: compare source and destination counts, values, IDs, sequence and hash or checksum where relevant.
- Business-object state: compare the authoritative object with its created record or replica, including version, effective date and status.
- Financial result: match billing to subledger and ledger, payment release to bank status and statement, and bank statement to cash-book and GL balances.
Control totals should be designed for the object, not copied mechanically from another interface. As one concrete payments example, the European Payments Council’s 2023 SCT implementation guidelines define a number-of-transactions field and a control sum of individual amounts. That example is scheme- and message-specific, but the principle is broadly useful: compare both record population and financial value.
| Control view | Question | Typical evidence | Close condition |
|---|---|---|---|
| Technical monitoring | Did the interface run and respond within its operating target? | Availability, latency, queue depth, error code, retry count and last successful run | Service restored and backlog processed |
| Transfer control | Did the complete population cross the boundary once? | Source and destination count, value, sequence, file or message ID and duplicate check | Control totals agree or every difference has an owned disposition |
| Financial reconciliation | Did the accounting or cash result agree to independent evidence? | Subledger, general ledger, bank status, statement and reconciling-item record | Balance agrees or open items are aged, assigned and approved |
Build monitoring around business completeness
Each interface needs technical telemetry and a business health view. Microsoft’s observability guidance describes logs, metrics, traces and correlation IDs as the basis for following a transaction across components. For finance, that correlation should reach the business object and control state rather than stopping at an infrastructure request.
At minimum, capture:
- interface, source, destination, object type and legal entity;
- business object ID, message or file ID, correlation ID and source version;
- source event time, receipt time, processing time and final-state time;
- count, value, currency and status-reason data where financially relevant;
- attempt number, prior result, destination identifier and exception owner;
- runbook, escalation threshold and evidence-retention rule.
Useful business metrics include expected versus received count and value, oldest unprocessed item, rejected value, duplicate attempts, out-of-sequence messages, unposted invoice value, payments without a terminal bank state, missing statements and unmatched bank value. The dashboard should link each alert to the affected records and the responsible queue. The AUSTRAC Cryptolink suspension gives that design an operating-access consequence: AUSTRAC linked missing threshold reports and an unanswered information request to a three-month registration suspension.
Logs also need an operating process. NIST SP 800-92 frames log management as an enterprise practice covering infrastructure and ongoing processes. Retention, access and evidence requirements should be set by the organisation’s security, accounting and regulatory policies; an interface team should not invent them locally.
Implement the map as a controlled rollout
- Inventory the interfaces. List each source, destination, business object, direction, current method, frequency and owner. Split commands, status responses and reporting flows.
- Set authority and write permissions. Choose the system of record at the object or field level, define the cross-system key and make replicas read-only where appropriate.
- Select the pattern and timing. Use immediate calls only where the next decision requires an answer. Use durable events or batches where recovery and throughput matter more than instant response.
- Define the state model and controls. Name every status, message or batch identifier, count, value, sequence, acceptance response and reconciliation point before coding.
- Assign failure ownership. Separate transient, data, policy, accounting-period and bank rejections. Set retry limits, suspense queues, correction routes and escalation times.
- Build reconciliation and monitoring together. Technical alerts, transfer controls and financial reconciliations need connected identifiers but distinct owners and close conditions.
- Test the control cases. Test duplicates, timeout after destination success, partial batch acceptance, out-of-order events, missing status, stale master data, closed periods, replay and bank-statement gaps. Require finance and technology sign-off on the evidence produced.
The completed interface matrix should become a governed design record. Update it when a system, bank channel, message version, business owner, cut-off, retry rule or reconciliation method changes, and use it as the acceptance baseline for every new connector.
Frequently asked questions
What does system of record mean in a finance integration?
A system of record is the application authorised to create or change a governed business object or field at a defined stage. The integration map should record that authority explicitly and prevent replicas from silently becoming second writers. Ownership may change as an invoice, payment or other object moves through controlled lifecycle states. In accounts payable that question decides where invoice approval state should be authoritative when an approval tool and the ERP both hold it.
What is the difference between interface monitoring and financial reconciliation?
Interface monitoring shows whether a transfer is running and where technical failures occur; financial reconciliation proves that the expected business population and value reached the required state. They should share transaction identifiers but remain distinct controls, because a healthy interface can still carry an incomplete or financially incorrect population.
How can retries create duplicate finance events?
A retry can duplicate a finance event when the destination completed the first request but the response was lost. Non-idempotent commands therefore need stable identifiers, duplicate controls, bounded retry rules and test cases for timeout-after-success. At-least-once messaging also requires an explicit design for duplicate and ordered processing.