Accounts Receivable, built on the same controls as your payables
BancoOS already runs the payable side of the ledger. Accounts Receivable adds the other half: who owes you, how old it is, what has been collected, and what your team did about it. Same tenant isolation, same audit chain, same fiscal periods, same roles, so both ledgers close together.
Why receivables slip
- Aging lives in a spreadsheet that is correct on the day someone rebuilds it.
- A part-paid invoice gets edited in place, and the history of what was applied is gone.
- Nobody can say whether the customer with the biggest balance has actually been chased.
- The tax code on the customer record was typed by hand, so the invoice carries a name that does not match the registry.
Customers you can trust, identified by MST
A receivable is only as good as the identity behind it, so the customer master is built on the tax registry rather than on typing.
- MST lookup autofills legal name, address and taxpayer status from the tax registry (VietQR, GDT-sourced), cached and refreshed when it goes stale.
- The form is honest about what happened: invalid code, not found, registry unavailable with a retry, or resolved with the source shown.
- If the registry cannot resolve a code, enter the identity by hand. It saves, and it is clearly marked as not registry-verified rather than silently trusted.
- Payment terms, credit limit and credit hold live on the customer. A customer on hold cannot be issued a new invoice, and issuing checks the limit.
- The same lookup identifies vendors on the payable side, so one company is one identity.
Invoices with a lifecycle you can defend
An invoice has three real states and a small number of hard rules, which is what makes the rest of the module trustworthy.
- Draft, issued, cancelled. Nothing else is stored, and everything else is calculated.
- Line editor with quantity, unit price and VAT percent. Totals are computed on the server.
- The invoice number is yours. BancoOS records the number and code of the e-invoice you issued through your GDT provider, it does not invent one.
- Issuing checks a positive total, an active customer, a due date on or after the issue date (defaulted from the customer's terms), the credit limit and the accounting period.
- An invoice with live payments applied to it cannot be cancelled. Reverse them first.
- Filter by issue or due date range, status and customer. Export to CSV, XLSX or PDF.
A receipts ledger that cannot go wrong
Money arrives in shapes that do not match invoices, so the ledger is built for partials, splits and corrections from the start.
- Record a receipt with its bank reference and apply it oldest invoice first, or choose the invoices yourself.
- Partial payments, one receipt spread across several invoices, and money left on account are all normal cases, not workarounds.
- Allocations are append-and-reverse. Rows are never edited or deleted, so unapplying money leaves a trail instead of erasing one.
- The system will not over-apply. Applied amounts stay at or below both the receipt and the invoice, checked under a row lock before anything is written. A refused request writes nothing at all.
- Submit twice and you get the same receipt back, not two. A look-alike receipt is held for confirmation before it is accepted as a genuine second payment.
- A receipt dated into a closed period posts to the first day of the next open one.
Aging and collections, from the ledger
Nothing about your position is stored as a snapshot, so there is no report to refresh and no overnight job to trust.
- Outstanding, paid state, overdue days and every aging bucket are calculated from the allocation ledger when you look at them. They cannot drift, and nothing has to run at midnight to make an invoice overdue.
- Aging on due date in the buckets your accountant expects: current, 0-30, 31-60, 61-90, 90+, per customer, with the oldest days overdue.
- The overview answers the questions you actually ask: what is outstanding, what is due this week, what is overdue, what came in over the last 30 days, and which customers are worst.
- A collections worklist of every overdue invoice with days overdue, balance, open follow-ups and when it was last touched.
- Log a call, email, note, promise to pay or escalation against an invoice, with a follow-up date, and close it when it is done.
The controls are not new, and that is the point
Receivables inherits the platform controls your payables already run on, rather than introducing a second set.
- Row-level security on every receivable table. One tenant cannot see another's customers.
- Hash-chained audit on every material action: invoice created, updated, issued or cancelled, receipt recorded and applied, allocation reversed, collection logged, customer changed, report exported.
- Role gating: anyone reads, owner, admin or approver writes invoices, receipts, allocations and collections, owner or admin edits the customer master.
- Shared fiscal periods, so receivables and payables close on the same calendar.
- Full English and Vietnamese interface.
How the ledger fits together
Integrations
AR sits next to the connectors you already use. Customer identity is resolved against the tax registry, sales e-invoices are issued through your licensed GDT provider and recorded here with their number and code, and the operational ledger reconciles to MISA, Business Central or whichever system holds your books. Receipts carry the bank reference from your statement so the match is there when you need it.
Security and compliance
Every receivable table is protected by row-level security, so one tenant can never read another tenant's customers, invoices or receipts. Material actions are written to a hash-chained audit log that an auditor can replay in order, and roles decide who may write rather than who may see. Data is encrypted in transit and at rest, and receivables shares the fiscal calendar and permission model of the rest of the platform.
What AR does not do yet
What AR does not do yet: issue e-invoices to the GDT (BancoOS records the invoice you issued through your licensed provider), and pull receipts from a bank statement feed (receipts are entered by your team, with the bank reference stored for matching later). We would rather tell you that than let you find out in month two.
See the AR product page: features, plans and a live demo signup
Frequently asked questions
›Does BancoOS issue e-invoices to the tax authority?
No. Sales e-invoices are issued through your licensed GDT provider, which is where the legal number comes from. BancoOS records the number and code of the invoice you issued, so the receivable, the receipt and the audit trail all point at the same document. If e-invoice issuance moves into BancoOS later, the recorded number stays the same field.
›How is the aging report calculated?
It is derived, not stored. Outstanding balance is the invoice total less everything currently applied to it in the allocation ledger, and the bucket comes from the due date compared with today. Because the numbers are computed when you open the report, nothing can drift and no overnight job has to run to make an invoice overdue.
›What happens if a customer pays one transfer against five invoices?
That is a normal case. Record the receipt once with its bank reference and apply it across the five invoices, either oldest first or by choosing them yourself. Anything left over stays on account against the customer and can be applied to a later invoice.
›Can I unapply a payment that was applied to the wrong invoice?
Yes, by reversing the allocation rather than editing it. The original row stays, a reversing row is added, and the invoice balance returns to what it was. The receipt is then free to be applied to the right invoice, and both steps are visible in the audit trail.
›What stops a customer being created with the wrong tax code?
The MST lookup resolves the code against the tax registry and fills in the legal name, address and taxpayer status, so the identity comes from the registry rather than from typing. If the registry cannot resolve the code, you can still save the customer by hand, and the record is marked as not registry-verified so nobody mistakes it for a checked one.
›Can I set a credit limit and stop invoicing a customer who is over it?
Yes. Payment terms, credit limit and credit hold live on the customer record. Issuing an invoice checks both: a customer on hold cannot be issued a new invoice at all, and an invoice that would take the customer past the limit is refused at the point of issue rather than flagged afterwards.
›Who on my team can record a receipt?
Everyone with access to the workspace can read receivables. Writing an invoice, a receipt, an allocation or a collection activity requires the owner, admin or approver role, and only owner or admin can change the customer master. Every write is attributed to the person who made it in the audit log.
›Does this replace our accounting system?
No. BancoOS runs the operational ledger: the invoices you have issued, the money you have received, what is outstanding and what your team did about it. Your accounting system stays the book of record, and the two are reconciled. The point is that day-to-day receivables work stops living in a spreadsheet, not that your accountant changes tools.
Next recommended page
Finance AutomationThe finance automation platform pillar.Continue reading
Explore more Finance Automation topics
Sibling landing pages in the same cluster.
More on finance automation in vietnam
The full cluster: how AP, matching, approvals and cash reporting are automated for Vietnamese finance teams.
The seven AI capabilities powering BancoOS.
Purpose-built finance and banking AI agents.
PO / GR / invoice matching explained end to end.
Side-by-side of manual finance vs BancoOS.
ERP vs AP automation and the Finance Operating System layer.
Connector for MISA AMIS accounting and payables.
Dynamics 365 Business Central finance connector.


