Who uses this module
| User | Role | How they use it |
|---|---|---|
| AR Clerk | Primary user | Invoice generation, receipts, cash application |
| Collections | Daily user | Aging review, customer outreach, dispute handling |
| Credit Manager | Approver | Credit limit overrides, new-customer approvals |
| Sales Rep | Viewer | Customer balance check before taking orders |
| CFO | Viewer | DSO trends, bad debt analysis |
The business problem
AR is where revenue goes from “promised” to “actually in the bank” — or doesn’t. Common failures:
- Credit limits exist but aren’t enforced. “We trust this customer” replaces real controls. Then the customer defaults and you discover they were 6× over their limit.
- Invoices disconnect from shipments. Warehouse ships by paper pick list; AR invoices days later from memory. Quantities drift. Customer disputes follow.
- Revenue recognition is ambiguous. Is it at shipment, at invoice, at customer acceptance? Different answers in different months. Cutoffs are a mess.
- AR aging runs monthly. By the time a 90-day bucket shows up, it’s already 120. Collections start 60 days late.
- Cash is applied by memory. “I think this 42,000 SAR wire was for the Panda order” — no document trail, no audit defense.
- ZATCA/ETA non-compliance. Manual PDF invoices fail regulatory requirements. Fines follow.
Key features
Customer Master
- Contact info, tax registration, billing + shipping addresses
- Credit limit + terms — enforced at sales order entry
- Price list assignment (per customer, per region, per channel)
- Payment history and DSO per customer
Credit Management
- Automatic credit check on SO — blocks orders over limit or with overdue invoices
- Override workflow — credit manager approves with documented reason
- Credit utilization alerts — triggered at 80% of limit
- Overdue escalation — customer status moves through watchlist → hold → stop ship
Invoicing
- Invoice generation from shipment — one click; items, quantities, lots inherited
- ZATCA-compliant invoice — Arabic + English layout, QR code, cryptographic stamp
- E-invoice XML export — UBL 2.1 format ready for authority submission
- VAT calculation — automatic per invoice line, per customer tax treatment
- Installment billing — for long projects or deferred revenue
Cash Application
- Receipt entry — wire, check, card, cash; by customer or by reference
- Auto-apply — if receipt references an invoice number, applies automatically
- Manual cash application — when a lump sum covers multiple invoices
- Partial payments — short pays, over pays, unapplied cash
- Write-offs — with approval workflow and reason code
Collections
- Aging report — updated in real time, by customer, by aging bucket
- Collection priorities — worklist generated from aging + credit policy
- Customer statement — one click, PDF or email, bilingual
- Dunning letters — templated, auto-generated at escalation triggers
- Dispute tracking — with resolution workflow
Customer Portal (Phase 2)
- Customer self-service for statement, invoice, receipt history
- Online payment integration
F&B scenario
Retail sale to Panda Retail Co. (Oasis Fresh’s largest Saudi customer). 2,000 bottles of Oasis mango juice at 8 SAR, 30-day terms.
- Sales rep enters the SO in AION. Credit check runs: Panda has 500,000 SAR limit, 320,000 SAR current AR, 180,000 SAR remaining — order is 16,000 SAR, passes.
- Warehouse picks from FIFO lot and ships. AION posts: DR COGS 4,000, CR FG Inventory 4,000 (using period average cost).
- AR invoice generated from shipment: 16,000 subtotal + 2,400 VAT = 18,400 SAR. AION posts: DR AR — Panda 18,400, CR Revenue 16,000, CR VAT Output 2,400.
- Invoice PDF generated (Arabic + English, QR code, bilingual layout). Emailed to Panda.
- 28 days later, Panda wires 18,400 SAR. AR clerk records the receipt, which auto-applies to the open invoice. AION posts: DR Bank 18,400, CR AR — Panda 18,400.
Panda’s AR is back to zero. Revenue recognized at shipment. DSO: 28 days. All automatic journal entries.
Integration with other modules
- Sales — SOs drive AR invoices; credit check runs at SO save
- Inventory — shipments post COGS via Inventory SLA
- GL — revenue, AR, VAT posted via Receivables SLA
- Tax — VAT output captured per invoice for return filing
- Cash Management — receipts match against bank deposits
Reports out of the box
| Report | What it shows |
|---|---|
| AR Aging | Customer balances by aging bucket |
| Customer Statement | Full activity per customer |
| Collection Worklist | Ranked list for collector outreach |
| Revenue by Customer | Top customers by revenue, per period |
| DSO Trend | Days Sales Outstanding over time |
| Bad Debt Report | Write-offs and provisions |
| VAT Output Report | Output tax liability per period |
| Customer Credit Utilization | Who’s close to limit |
All bilingual, exportable, drillable.
Compliance
- ZATCA (Saudi) — Phase 1 invoice generation with QR and Arabic layout today; Phase 2 API integration on roadmap
- ETA (Egypt) — e-invoice XML generation; Phase 2 integration on roadmap
- VAT returns — output VAT tracked and exportable
- 6-year archive — all invoices retained per tax authority requirements
- Audit trail — every invoice change logged
vs. alternatives
| Feature | Excel | Odoo | SAP B1 | AION |
|---|---|---|---|---|
| Credit check at SO | ❌ | ✅ | ✅ | ✅ |
| Invoice from shipment | ❌ | ✅ | ✅ | ✅ |
| Real-time aging | ❌ | ✅ | ✅ | ✅ |
| ZATCA Arabic invoice + QR | ❌ | Add-on | Partner | ✅ native |
| Auto cash application | ❌ | Basic | ✅ | ✅ |
| Arabic-native UI | Depends | Partial | Partial | ✅ |
Where this module lives in the code
aion-erp/apps/api/src/modules/accounts-receivable/ Ready to see it live?
Log in with admin / Admin123 and try this module in the juice factory scenario, or reach out for a guided walkthrough.
Related modules
General Ledger
Close books in 2 days, not 2 weeks. Every transaction auto-posts. Full audit trail.
Accounts Payable
Three-way match, automatic accrual, duplicate invoice prevention, bulk payment runs.
Inventory
Lot/batch tracking, expiry dates, FIFO/FEFO, multi-warehouse, period average cost.
Manufacturing
Formulas with versioning, job orders, material issue/backflush, batch costing, scrap tracking.