RCM & insurance
Prepare an immutable accounting handoff and read real close blockers
Freeze exact signed source rows, prepare a deterministic local payload and verify deduplication without claiming ERP posting or inventing an acceptance.
14 min read · Source baseline f6e9f05f
Verification and applicability
Normal local finance APIs, actual wide original-version UI, independent stored source rows/conservation views and prepared accounting payload
Check your installed version, permissions and local configuration.
Before you begin
- This guide continues the separate fictional Clinic ledger exercise. The accounting target urn:mansoq:training:local-ledger-no-erp is explicitly local and no downstream ERP exists.
- Current Remittance has no accounting-manifest/export/acknowledgement/close authoring controls. These are authorized API operations; the screenshots are actual ledger context, not a claimed API console or fabricated success dialog.
1. Verify the exact period and signed ledger source rows
Before preparing a handoff, read exact original and compensating rows, local currency, business dates and unresolved attribution. This actual2026-10-18 Clinic period contains six signed rows: three advice rows (100,50,-100) and three cash rows (100 unmatched,100 fee/allocated split,-100 compensating split). Advice live total50 and cash allocated total100 are separate ledger totals, not one net journal. The5 fee and15 deduction cancel with their exact counterentries; no original is deleted.
123456Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual pinned screen after counterentries displays advice150/live50/gap100 and bank100/live0/gap100. Its labels mix live positions with original header/credit. Independent unmanaged database conservation views show0 variance for all original distributions. Preserve these observed labels as a known display discrepancy; do not add balancing entries to make them green.
- Advice live50: After the100 advice counterentry.
- Displayed gap100: Original header minus live position; not the original-distribution invariant.
- Cash live0: 80+5+15 and exact negatives net0.
- Displayed cash gap100: Original credit remains100; local returned flag is separate.
- Original-version label: Database conservation views are0; no plug or fake receipt.
- Dual control incomplete: No real account approval or evidence invented.
12345Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual post-return/reversal queue shows one remaining disputed50 advice line and0 live advice-linked unnotified receipts. Independent records retain original100 advice allocation plus its-100 correction and the original80+5+15 cash row plus exact negative counterentry. The separate100 unmatched cash remains stored and is not represented by the old0 unnotified count.
- One remaining line: Disputed50 remains unresolved.
- Exact50 position: A correction did not clear unrelated disputed advice.
- Unnotified0: Returned advice-linked position nets0; not total cash0.
- Owners unknown: Remaining suspense still needs a responsible owner.
- Returned-payment concept: The recordkeeping action created counterentries; no actual bank return was represented.
2. Freeze a deterministic manifest through the supported API
POST /api/v1/facility/{facilityId}/rcm/finance/accounting-manifest/ with explicit config_package, period_start=2026-10-18, period_end=2026-10-18, ledger_kind=combined, local accounting_system urn and a clearly fictional external_batch_reference. The observed normal201 result retained one six-row immutable manifest, three advice/three cash, hash31e7579aa548162ab58cc97e2b05436a87236c04ac3a8bf58c17bae37a6ef562, posted_to_erp=false. Exact repeat returned200/deduplicated=true and the same ID/hash. Source rows and hash, not an editable external label, define that handoff identity.
1234567Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual pre-reversal expanded advice shows reported150 and bank100 in separate local ledgers, each originally distributed exactly. Four party references and five named advice adjustments remain unknown; the separately stored other_identified_fee5 is not a stated NPHIES fee. Draft account beneficiary is unknown and dual control incomplete.
- Exact advice: Use Show both ledgers for this identity.
- External payment identity: Explicitly fictional no payer payment.
- Debtor unknown: Issuer, sender, debtor and payee are separate facts.
- Advice150: Reported ledger, not actual cash.
- Cash100: Separate fake receipt distributed80+5+15.
- NPHIES fee unknown: Do not relabel other identified fee as NPHIES fee.
- Beneficiary unknown: Draft fixture does not verify an actual bank account.
123456Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual pinned screen after counterentries displays advice150/live50/gap100 and bank100/live0/gap100. Its labels mix live positions with original header/credit. Independent unmanaged database conservation views show0 variance for all original distributions. Preserve these observed labels as a known display discrepancy; do not add balancing entries to make them green.
- Advice live50: After the100 advice counterentry.
- Displayed gap100: Original header minus live position; not the original-distribution invariant.
- Cash live0: 80+5+15 and exact negatives net0.
- Displayed cash gap100: Original credit remains100; local returned flag is separate.
- Original-version label: Database conservation views are0; no plug or fake receipt.
- Dual control incomplete: No real account approval or evidence invented.
3. Prepare the local payload without claiming delivery
POST accounting-export-payload/ with the retained manifest ID. The actual201 result saved a deterministic prepared transmission/payload, payload hash and stable idempotency key, with posted_to_erp=false. Exact repeat returned200 and retained the same transmission. Independently stored status is prepared, external journal reference is empty and no acknowledgement endpoint was called. A prepared payload is not an ERP journal, submitted transaction or accepted posting. A downstream connector must use its genuine authorized response and exact retained identity; never invent an acceptance merely to finish this demonstration.
123456Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual pinned screen after counterentries displays advice150/live50/gap100 and bank100/live0/gap100. Its labels mix live positions with original header/credit. Independent unmanaged database conservation views show0 variance for all original distributions. Preserve these observed labels as a known display discrepancy; do not add balancing entries to make them green.
- Advice live50: After the100 advice counterentry.
- Displayed gap100: Original header minus live position; not the original-distribution invariant.
- Cash live0: 80+5+15 and exact negatives net0.
- Displayed cash gap100: Original credit remains100; local returned flag is separate.
- Original-version label: Database conservation views are0; no plug or fake receipt.
- Dual control incomplete: No real account approval or evidence invented.
4. Read why the period cannot close and preserve the refusal
GET accounting-close-readiness/ with the exact period, accounting_system and ledger_kind. The real result is close_ready=false: no ERP/GL posting has been accepted for this period, and1 advice suspense line remains unmatched. It shows one prepared manifest, zero accepted manifests and zero unmanifested rows; preparing all rows did not resolve the50 dispute or provide ERP acceptance. Normal POST accounting-close/ refused400 ledger_posting_period_not_ready naming those exact blockers. Independent stored readback confirms no close certificate and no payment notice. The original response also omits a separate unmatched-cash blocker/count, so this list is the exact pinned result rather than proof every real close prerequisite was assessed. Keep the100 unmatched cash and external acceptance dependencies open.
12345Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual post-return/reversal queue shows one remaining disputed50 advice line and0 live advice-linked unnotified receipts. Independent records retain original100 advice allocation plus its-100 correction and the original80+5+15 cash row plus exact negative counterentry. The separate100 unmatched cash remains stored and is not represented by the old0 unnotified count.
- One remaining line: Disputed50 remains unresolved.
- Exact50 position: A correction did not clear unrelated disputed advice.
- Unnotified0: Returned advice-linked position nets0; not total cash0.
- Owners unknown: Remaining suspense still needs a responsible owner.
- Returned-payment concept: The recordkeeping action created counterentries; no actual bank return was represented.
123456Capture details
Actual original wide Chrome capture, original pinned local Clinic. Actual pinned screen after counterentries displays advice150/live50/gap100 and bank100/live0/gap100. Its labels mix live positions with original header/credit. Independent unmanaged database conservation views show0 variance for all original distributions. Preserve these observed labels as a known display discrepancy; do not add balancing entries to make them green.
- Advice live50: After the100 advice counterentry.
- Displayed gap100: Original header minus live position; not the original-distribution invariant.
- Cash live0: 80+5+15 and exact negatives net0.
- Displayed cash gap100: Original credit remains100; local returned flag is separate.
- Original-version label: Database conservation views are0; no plug or fake receipt.
- Dual control incomplete: No real account approval or evidence invented.
Source evidence
References are pinned to the private MANSOQ source repository. Repository access is required to open these links.
- repositories/platform/mansoq-web/src/pages/Facility/revenueCycle/Remittance.tsx:335 · f6e9f05f
- repositories/platform/mansoq-web/src/pages/Facility/billing/rcm/bridgeApi.ts:150 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:231 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:291 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:345 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:441 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:497 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:826 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:868 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:938 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance.py:1007 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/api/viewsets/rcm/finance_serializers.py:177 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/rcm/services/remittance.py:2174 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/rcm/services/remittance.py:2388 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/rcm/services/remittance.py:2676 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/rcm/services/remittance.py:3676 · f6e9f05f
- repositories/platform/mansoq-core/mansoq/emr/rcm/services/remittance.py:4178 · f6e9f05f