The Remittance Split Build Standard
One deposit, ten invoices, and Xero can’t tell which? This standard reads the remittance line by line, matches each line to its invoice by number with the amount confirmed, and applies the deposit as one batch payment equal to it, so the bank line reconciles in one click. Anything that does not fit goes to a person, and nothing is written off. Written so you can build it yourself.
Used by
- Bookkeeper
- Accounts Receivable Officer
- Accounts Officer
- Practice Manager
- Office Manager
11 min read · Published by AI Pathway
Using Claude? This standard installs as a skill. Guides for ServiceM8, Xero and Simpro.
How to get this live in your business
Build it for mePick a time and we build the split against your own ledger and bank feed, with every exception landing with your bookkeeper.What this is
An open build standard for one job: a single deposit that pays many invoices. The remittance (the payer's list of which invoices the money is for) is read line by line and the deposit is applied to those invoices, as one payment that matches the bank.
The core rule
Every line has to match an open invoice by its number, for the right amount, and the lines have to add up to the deposit. Then one batch payment goes in. If one line does not fit, nothing goes in until a person decides it.
What it does not do
It never writes off a short payment, never creates a credit or an overpayment, never edits an invoice, and never matches a line on its amount or a name alone. Those stay with a person.
The hard part
Not reading the PDF. Holding the whole deposit back when one line is wrong, and applying it exactly once when the same remittance arrives by email and again from the payer's portal.
Tuesday morning, and the bank feed shows one deposit from the plan manager. It covers invoices for seven participants, raised over three weeks. The ledger sees one amount and no single invoice that matches it. So somebody opens the remittance PDF, finds each invoice number, checks each amount, and keys seven payments by hand. Two of the lines are a few dollars short of the invoice, nobody notices, and next month the chasing run sends a reminder for an invoice the plan manager believes it paid.
One deposit, applied whole or not at all
- Start with a deposit on the bank feed or statement: the amount being explained comes from the bank, not from the remittance.
- Read the remittance line by line, exactly as written: the invoice number, the payer's own reference, and the amount. A line that cannot be read is an exception.
- Match each line by its invoice number, then confirm the amount against what is owing. Never by an amount or a name alone.
- Add the lines up and compare them with the deposit.
- The gate: is every line explained, and do they add up to the deposit? If not, nothing for that deposit is applied. The clean lines wait, and a person decides each exception line: a short payment, an overpayment, an invoice already paid or credited, an invoice that does not exist, or a line that cannot be read.
- If every line is explained, build one batch with one payment per line, each for the line's own amount.
- Has a batch already been applied for this deposit? If not, apply it once: its total equals the deposit, the bank line reconciles in one click, and the remittance file is kept with it. If so, nothing new is applied, whichever copy of the remittance arrived.
Take the spec to Claude, ChatGPT or Copilot. The sentence to paste is one click away.
1. What this standard covers
One deposit that pays many invoices, and the remittance that says which. The deposit is read from the bank feed or the statement. The remittance is read line by line. Each line is matched to the open invoice it names, the lines are added up against the deposit, and when every line is explained the deposit is applied as one batch payment equal to it. When any line is not explained, a person decides it first.
The plan manager is the lede, but the job is not NDIS-only. Anyone paid in lump sums against many invoices has it:
| Who pays in one lump | Who they pay, and how |
|---|---|
| NDIS plan managers | Providers, for several participants' invoices in one payment, with a remittance listing each participant and invoice. |
| Insurers | Repairers and builders, for several claims in one transfer, each line carrying the claim number. |
| Head contractors | Subcontractors, for several stage invoices across jobs, on one payment run. |
| Government agencies and councils | Suppliers, in a weekly or fortnightly payment run with one remittance advice. |
| Strata and property managers | Trades, for work across several buildings or lots, settled together. |
What is out of scope. Comparing two systems that both hold the same thing, and proposing corrections, is the Two Records standard. It never applies a payment. This standard applies exactly one thing, the batch payment, and only when the deposit is fully explained. Chasing what is unpaid is the Debtor Chasing standard. This standard is what tells it an invoice was paid, so a paid invoice is never chased, and a short payment becomes an unpaid remainder a person has decided on, not an automatic reminder. Bills the business pays are the Invoice Check standard: that is payables, and this is money coming in. And a remittance PDF that arrives by email is first filed under the Document Filing standard; this standard reads it from there.
What cannot meet it, and what can. The build needs a ledger that can apply one payment across many invoices through its API, and a bank feed or statement it can read. Xero’s API has batch payments. MYOB and QuickBooks Online can each apply one customer payment across several invoices. Check that your own ledger can do this through its API before you start, because a ledger that only takes one payment per invoice cannot reconcile the bank line in one click, and so cannot pass check 8. A remittance that only ever arrives on paper can still be read, but someone has to scan it first.
Is there a ready-made version? Not yet. No product of ours applies payments to a ledger: the Office Voice Xero connection reads Xero and writes nothing to it. So this standard is a Draft, and the build is yours or a scoped build with us.
2. Which invoices did that deposit pay?
The remittance answers it, line by line, and the build reads each line exactly as the payer wrote it: the invoice number, the payer’s own reference (a participant number, a claim number, a purchase order), and the amount. The payer’s reference and any name on the line are kept on the record. They are never used to find an invoice, because two participants can share a surname and two claims can be for the same amount.
Matching runs in one order. The invoice number finds the invoice, compared without case, spaces or punctuation, so “inv 1042” is INV-1042. Then the amount is confirmed against what is still owing on that invoice. If it differs, that is an exception on that invoice. It is never a reason to go looking for another invoice that happens to be for that amount, which is exactly how a payment lands on the wrong participant.
Then the lines are added up and compared with the deposit, and the deposit comes from the bank, not from the total printed on the remittance. A remittance often arrives before the money does. It waits until the bank line is there, because the thing being explained is money that has landed, not money somebody says is coming.
3. When a line does not fit
Six reasons, a closed list. Each goes to a person with the deposit, the line, and the amounts involved:
| total_mismatch | The lines do not add up to the deposit. The whole deposit is held, with both amounts. |
| short_paid | The line pays less than is owing on its invoice. The line's amount and the invoice's are named. |
| over_paid | The line pays more than is owing on its invoice. Both amounts are named. |
| already_settled | The invoice the line names is already paid or credited. |
| no_such_invoice | The ledger holds no invoice with that number. |
| unreadable | The line has no invoice number, or an amount that cannot be read. |
One exception holds the whole deposit. The nine lines that matched cleanly wait with the one that did not, because applying nine of ten leaves a bank line that only half reconciles, and a half-reconciled line is harder to find later than an unreconciled one. A person records a decision on each exception line, from three:
| apply_as_written | Apply the line for the amount the payer wrote. A short payment becomes a part payment, and the rest stays owing for the chase. |
| reassign | The person names the invoice the line was really for. The line is matched again against that one, and its amount still has to fit. |
| take_over | The person handles the whole deposit by hand in the ledger, for example to record an overpayment. The build applies nothing for that deposit, ever. |
Once every exception line has a decision, the batch is applied, and it still equals the deposit. Nothing is corrected by the machine in the meantime. It does not write off the $10 a plan manager short paid, it does not raise a credit note for an overpayment, it does not edit the invoice to match the remittance, and it does not spread a shortfall across the payer’s other invoices. The build has no way to do any of those: the only change it can make to the ledger is the batch.
4. The records it keeps, in the shape your developer needs
Six objects, keyed on the deposit. The RemittanceLine keeps the amount as text exactly as written, because a figure nobody could read must not quietly become a number.
For your developer. Show the fields for your developer
Deposit # one per bank line, read from the bank
- deposit_id # the bank feed's id. The key for everything below
- amount, date, reference, payer # amount from the bank, never the remittance
- status (no_remittance | held | ready | applied | taken_over)
Remittance # every copy that arrived, kept
- file_id, source (email | portal)
- payment_ref # the payer's reference, also on the bank line
- deposit_id (nullable until the money lands)
- duplicate_of (nullable)
RemittanceLine # unique on (deposit_id, line_no)
- deposit_id, line_no
- invoice_as_written, payer_ref, name_as_written
- amount_as_written # text, exactly as written
- amount (nullable when unreadable)
- matched_invoice (nullable) # found by invoice number only
- result (matched | short_paid | over_paid |
already_settled | no_such_invoice | unreadable)
Exception
- deposit_id, line_no (null when the whole deposit is held)
- kind (total_mismatch | short_paid | over_paid |
already_settled | no_such_invoice | unreadable)
- detail # the line, and both amounts where there are two
- decision (apply_as_written | reassign | take_over), reassign_to
- decided_by, decided_at # a person, never the build
BatchPayment # unique on deposit_id: one per deposit, ever
- deposit_id, ledger_batch_id
- lines [{ invoice, amount, line_no }]
- total # equals Deposit.amount
- remittance_file_id # the copy it was built from
- applied_at
Record # append only, retrievable by deposit_id
- deposit_id, kind, ref, detail, atA BatchPayment whose total is not its Deposit's amount, or a second BatchPayment for the same deposit, is the defect this standard exists to make unrepresentable. A payment line with no RemittanceLine behind it is the other.
5. The checks, in order
The order is the claim. The bank comes first, because the deposit is the thing being explained. The lines are read before they are matched, matched before they are added up, and nothing is applied until the whole deposit is explained.
- The deposit comes from the bank, not from the remittance. The amount being explained is the deposit on the bank feed or statement line. A remittance that arrives before its money lands waits; nothing is applied against a deposit the bank does not show.
- Each remittance line is read exactly as the payer wrote it, never filled in. Invoice number, the payer's own reference (a participant or claim number) and the amount, as written, one line at a time. A line that cannot be read goes to a person; it is never worked out from the deposit minus the other lines.
- The remittance adds up to the deposit, or nothing is applied. The lines must total exactly the deposit they explain. If they do not, the whole deposit goes to a person with both amounts, and no line of it is applied.
- Each line is matched by its invoice number, then the amount is confirmed. The invoice number finds the invoice (ignoring case, spaces and punctuation). The amount then has to equal what is owing on that invoice. An amount that differs is an exception on that invoice, never a reason to look for another one.
- Never matched on an amount or a name alone. A line with no invoice number, or an invoice number the ledger does not hold, goes to a person, even when its amount or the name on it fits exactly one open invoice.
- Short, over, already paid, unknown and unreadable lines each go to a person with the reason. Each exception names its kind from a closed list, the deposit, the line, and the amounts involved: the line's and the invoice's for a short or an over payment.
- Nothing is written off, credited or adjusted by the machine. The build never writes off a short payment, never creates a credit note or an overpayment, never edits an invoice, and never moves part of a line to another invoice. Each payment in the batch is one remittance line, for that line's amount, on the invoice it named or the one a person named.
- One batch payment, equal to the deposit, so the bank line reconciles in one click. All the lines of one deposit are applied together as a single batch payment whose total is the deposit. Never one payment per invoice, and never a batch for part of a deposit.
- One exception holds the whole deposit until a person has decided it. If any line is an exception, nothing for that deposit is applied: the matched lines wait with it. Once a person has recorded a decision on every exception line, the batch is applied once and still equals the deposit.
- The same remittance twice, or a second run, makes one payment. A remittance often arrives by email and again from the payer's portal. Both copies, and every later run, lead to one batch per deposit, keyed on the deposit.
- The remittance is kept with the payment it explains. The remittance file is attached to the batch payment, or filed under the batch's id where the ledger cannot take an attachment, so anyone looking at the payment can open the page that justified it.
- For any deposit, the record shows which lines, which invoices and who decided what. Ask about one deposit and the record answers: every line as written, the invoice each was matched to, every exception, every decision with the person who made it, and the batch that was applied.
- It survives the builder. Someone other than the builder can explain what it does, and it runs on an account the business owns.
- The pass test passes. On a real deposit and its real remittance, a line $10 short stops everything and names itself; restored, the deposit is applied as one batch equal to it, and a third run changes nothing.
6. One payment in the ledger, applied once
The deposit goes into the ledger as a single batch payment: one payment per remittance line, each for that line’s own amount on the invoice it named, totalling the deposit exactly. That is what lets the bank line reconcile in one click. Seven separate payments would each need matching to the one bank line by hand, which is the job this standard exists to remove.
Once means once per deposit. The same remittance often arrives twice: emailed by the payer and downloaded again from their portal, or forwarded by a colleague. The build also runs again tomorrow. All of those find the batch already applied against that deposit and apply nothing new. The key is the deposit, not the file, because two copies of a PDF never have the same file name.
The remittance is kept with the payment it explains: attached to the batch payment where the ledger takes an attachment, or filed under the batch’s id where it does not. Months later, when a participant’s family asks which invoice the plan manager paid, the answer is one click from the payment.
7. What stays with a person
- Every exception line: a short payment, an overpayment, a line for a paid or credited invoice, an invoice that does not exist, and a line nobody can read.
- Accepting a short payment as a part payment. The build never does it on its own.
- Writing off a remainder, raising a credit note, or recording an overpayment. These are done by hand in the ledger, after a person takes the deposit over.
- Telling the payer their remittance does not match their payment, and asking for a corrected one.
- Deciding a line was meant for a different invoice. The person names it, and the amount still has to fit.
8. Run it on what you already use
The workflow lives beside the ledger, wherever the bookkeeper already works. Three ways, all held to the same checks:
- Existing tools only. A shared spreadsheet or Microsoft 365 lists hold the deposits, the lines and the exceptions, and a small script applies the batch once every line is explained. The Microsoft 365 plan lays out the lists and flows.
- A personal dashboard. Hand this page to a coding agent and it builds a page listing each deposit, its lines, and the exceptions with a decide button, against the stub until it is pointed at your ledger.
- A long-lived bot. A routine that wakes when a remittance is filed or a deposit lands, applies the deposits that are fully explained, and posts the rest to the bookkeeper in Teams, Slack or email.
How to run any standard each of these ways is in run a standard anywhere.
9. What your developer builds, and the step that needs care
One step not to hand-roll: the batch payment itself, applied only when the whole deposit is explained, equal to it, and once per deposit however many copies of the remittance arrive. Reading the lines, matching, the exceptions and the record a coding agent builds against the stub.
For your developer. Show the setup for your developer
provider:
stub: local.mock_remittances
production: none # scoped build, not a product
the stub # local.mock_remittances
- a bank feed, a ledger of open, paid and credited invoices
- remittance files, one of them arriving twice
- one way to change the ledger: a batch against a deposit
- no write-off, no credit note, no overpayment, no invoice edit
the hard step: the batch, in production
- no hosted product applies payments. The Office Voice Xero
connection is read-only. Build it against your own ledger
and bank feed, or as a scoped build with us
- check your ledger can apply one payment across many
invoices through its API (Xero has batch payments; MYOB
and QuickBooks Online can apply one customer payment
across several invoices)
- check whether it takes an attachment on that payment;
if not, file the remittance under the batch id
stays local # yours, and the standard
- reading the lines, matching, the total, the exceptions
- every decision on an exception, which is a person's
cannot meet the standard
- a ledger that takes only one payment per invoice
- a build with no bank feed or statement to read the deposit fromA vendor selling remittance automation is usually selling the PDF reading. Ask them three things: what happens to the other nine lines when one is $10 short, what their build does when the same remittance arrives by email and from the portal, and whether it can ever write off, credit or adjust anything on its own.
The pass test. On your own Xero (or its demo company), or whichever ledger you run, take a real deposit with its remittance. Change one line on a copy of the remittance so it is $10 short, and run the build: nothing may be applied, and the exception must name the line and both amounts. Restore the line and run it again: exactly one batch payment, equal to the deposit, with every invoice it names marked paid by its own line’s amount. Run it a third time: nothing new may be applied. A few minutes to stage. If anything was applied on the first run, the build applies part of a deposit, which is the failure this standard exists to prevent.
10. A checklist to hold any build or supplier to
Hold a DIY build or a vendor to this. If a box is empty, it is not in production.
- 1. The deposit comes from the bank, not from the remittance. The amount being explained is the deposit on the bank feed or statement line. A remittance that arrives before its money lands waits; nothing is applied against a deposit the bank does not show.
- 2. Each remittance line is read exactly as the payer wrote it, never filled in. Invoice number, the payer's own reference (a participant or claim number) and the amount, as written, one line at a time. A line that cannot be read goes to a person; it is never worked out from the deposit minus the other lines.
- 3. The remittance adds up to the deposit, or nothing is applied. The lines must total exactly the deposit they explain. If they do not, the whole deposit goes to a person with both amounts, and no line of it is applied.
- 4. Each line is matched by its invoice number, then the amount is confirmed. The invoice number finds the invoice (ignoring case, spaces and punctuation). The amount then has to equal what is owing on that invoice. An amount that differs is an exception on that invoice, never a reason to look for another one.
- 5. Never matched on an amount or a name alone. A line with no invoice number, or an invoice number the ledger does not hold, goes to a person, even when its amount or the name on it fits exactly one open invoice.
- 6. Short, over, already paid, unknown and unreadable lines each go to a person with the reason. Each exception names its kind from a closed list, the deposit, the line, and the amounts involved: the line's and the invoice's for a short or an over payment.
- 7. Nothing is written off, credited or adjusted by the machine. The build never writes off a short payment, never creates a credit note or an overpayment, never edits an invoice, and never moves part of a line to another invoice. Each payment in the batch is one remittance line, for that line's amount, on the invoice it named or the one a person named.
- 8. One batch payment, equal to the deposit, so the bank line reconciles in one click. All the lines of one deposit are applied together as a single batch payment whose total is the deposit. Never one payment per invoice, and never a batch for part of a deposit.
- 9. One exception holds the whole deposit until a person has decided it. If any line is an exception, nothing for that deposit is applied: the matched lines wait with it. Once a person has recorded a decision on every exception line, the batch is applied once and still equals the deposit.
- 10. The same remittance twice, or a second run, makes one payment. A remittance often arrives by email and again from the payer's portal. Both copies, and every later run, lead to one batch per deposit, keyed on the deposit.
- 11. The remittance is kept with the payment it explains. The remittance file is attached to the batch payment, or filed under the batch's id where the ledger cannot take an attachment, so anyone looking at the payment can open the page that justified it.
- 12. For any deposit, the record shows which lines, which invoices and who decided what. Ask about one deposit and the record answers: every line as written, the invoice each was matched to, every exception, every decision with the person who made it, and the batch that was applied.
- 13. It survives the builder. Someone other than the builder can explain what it does, and it runs on an account the business owns.
- 14. The pass test passes. On a real deposit and its real remittance, a line $10 short stops everything and names itself; restored, the deposit is applied as one batch equal to it, and a third run changes nothing.
- 1
Hold the build to the checklist
The checks in this standard are what a working build looks like. Implement it yourself, hand it to a developer, or hand the page to an AI with the button below.
- 2
Do not hand-roll
There is no product for this step. Highest option: none. Checklist plus a build.
- 3
If you are stuck
Exceptions, three systems, a team that will not maintain a Zap, or an owner who wants it done. We implement when it has to survive the business.
Building this on Microsoft 365: the lists, the flows and the exceptions a person decides.
Facts that can change, and when we checked them
Checked as at 24 October 2026
NDIS plan management. A participant whose plan is plan-managed has a plan manager who pays providers on the participant’s behalf from the plan. A plan manager acting for several participants can pay one provider for several participants’ invoices in a single payment, with one remittance listing them. Nothing in this standard depends on NDIS pricing or claiming rules, and it states none.
Ledger capabilities. Xero’s accounting API offers batch payments. MYOB and QuickBooks Online can apply a single customer payment across several invoices. What each accepts as an attachment on such a payment, and how each treats a part payment, differs by product and changes; check your own ledger’s current developer documentation before you build.
Check these against the primary instrument before you rely on them, and store the date you checked beside the value rather than hard-coding it. This standard tells you the shape and where to look. It is not legal advice and it does not tell you that anything complies.
Related reading
- The Two Records Build Standard: two systems compared, corrections proposed
- The Debtor Chasing Build Standard: chasing what this leaves unpaid
- The Invoice Check Build Standard: the payables side
- The Document Filing Build Standard: where an emailed remittance is first filed
- The paper: the three automations behind a receivables seat
Want the whole thing by email?
This paper, plus the rest of the library. One click to stop them.