Accounting practice, Bulgaria · monthly close for a web shop handling 1,000-1,500 orders
Month-End Close Automation for a 1,500-Order Online Store
Once a shop reaches 1,500 orders a month, closing the books is no longer about accounting. It is about throughput. Processor batches, courier cash on delivery, returns that cross into another fiscal year: each new order added manual effort, and the month started closing late. Today the full month is reconciled and posted automatically in less than two minutes.

- Industry
- E-commerce Operations
- Function
- Finance & Accounting
- Region
- Bulgaria
Results
- < 2 min
- for a whole month, reconciled and posted
- About 2,300 accounting lines across 12 import files.
- 98%
- of sale records matched with no manual work
- Postings 100% accurate, running in production for 8 months.
- 1,500
- orders per month, closed with no data entry
- Cards, wallets, bank transfers and cash on delivery.
01
The challenge
The client is an accounting firm in Bulgaria. The automation serves one of the firm's own clients: an online retailer growing quickly through its own web store, handling between 1,000 and 1,500 orders every month.
The shop gets paid through every channel you would expect. Card and wallet processors pay out a whole day of orders as one batch. Wise and the bank carry transfers. National courier networks take cash on delivery and pass it on days later, tied to waybill reports. Returns produce credit notes and offsets, and each one must be traced to its original order, which sometimes sits in the prior fiscal year. Bookkeeping runs in AJUR, an older Bulgarian accounting system whose only way in is its own import file format.
The price of doing it by hand
- Effort grew with order count, the fee did not. For a small firm, each sale meant more matching and more posting.
- Peak months broke the close. Campaigns and seasonal spikes doubled volume right when the books were due to close.
- Cash on delivery leaked. A courier remittance that does not line up with its waybills easily disappears in the volume.
- Returns that span year-end. If a credit note cannot be tied to its order, two fiscal years come out wrong.
02
What we did
We set up a month-end automation that runs unattended on self-hosted n8n. The accountant types the period into a short form and the rest happens on its own.
One run across all sources
In a single run we collect, normalise and match the sales register, credit notes, offsets, bank statements, payment processor data and both courier settlement reports. n8n ties together systems that were never built to work with each other and makes them act as one pipeline.
Matching that follows the money
| Where the money comes from | How we close it |
|---|---|
| Card and wallet processor batches | Each order tied to the settlement that paid it |
| Courier cash on delivery | Remittances checked against waybill payment reports |
| Credit notes | Linked to the order they reverse, across fiscal years if needed |
| Offsets | Settled against the balances they clear |
Output the books can take directly
- A complete set of AJUR import files, one for each source and kind of entry: turnover, offsets, credit notes, plus one combined file. Each follows AJUR's exact block layout, operation codes, field separators and character encoding.
- A process report that shows the status and match of each transaction.
- Account mapping and posting rules kept in Excel files owned by the accountant. Changing a rule needs no code.
The system remembers, so people do not have to
- Run ledger. Each delivered file is logged.
- Guard against duplicate runs. Before delivery, the automation checks whether any source file changed since the previous batch. If nothing is new, the re-run ends within seconds, delivers nothing and sends an email saying so.
- Closing the loop. After each run, a run report and a completion email go out with period, scope and counts.
Migration checked byte by byte
The automation first ran on an earlier workflow platform. We ported it to self-hosted n8n line for line, then compared its output byte for byte with reference runs from the old platform before cutover. Along the way the port exposed two hidden defects in the original logic, and we fixed both.
The stack
| Layer | Tools |
|---|---|
| Orchestration | Self-hosted n8n |
| Sources | Exports from Stripe, PayPal, Wise and the bank; courier waybill and cash-on-delivery reports; the sales register |
| Files and settings | Google Drive via n8n service connectors, Excel |
| Ledger | AJUR, fed through its native import format |
| Safeguards | Duplicate-run guard, run ledger, email reports |
03
The outcome
| Manual | Automated | |
|---|---|---|
| Closing one month | Days of skilled effort | Less than 2 minutes |
| Matching sale records | Manual | 98% automatic |
| Accuracy of postings | Line-by-line checks | 100% |
| Running a period again | A few more days | Seconds, at no cost |
- Up to 1,500 orders, a full month, reconciled and posted in less than two minutes: 12 import files and roughly 2,300 accounting lines.
- Automatic matching covers 98% of sale records, and postings are 100% accurate. The other 2% are custom bank transactions that carry no description to match against. They come through as a short list for review.
- In production for eight months.
- Roughly 192 hours of manual reconciliation saved per year, by the firm's own cautious estimate, with potential to double that.
- The team now works differently. A re-run is safe and costs nothing, so they run the month early, review the exceptions, correct the source data and run again.
- The same framework now covers more than one client of the firm. Each new build reuses a large share of the first one.
The risk that creeps up
Orders grow. New payment or courier channels appear. A manual close slips a bit further behind each month, and nobody sees it until year-end. Automation that grows with volume removes that ceiling before you reach it.
Built with
The platforms and tools this engagement runs on.
More case studies
Similar problems, measured the same way.

Accounting practice · Bulgaria · client: international data centre and hosting provider
Five Payment Channels Reconciled and Booked to AJUR Every Month
- invoices posted in one monthly run
- 600
- invoices posted in one monthly run
- of bank statement lines processed with no manual work
- 95%
- of bank statement lines processed with no manual work

Bulgarian accounting practice · 10-15 people · bookkeeping for 100+ companies
AI That Reads and Posts Accounting Invoices
- of documents go through uncorrected
- 97%
- of documents go through uncorrected
- less data entry every year
- 576 h
- less data entry every year

Bulgarian accounting firm · 10-15 people · bookkeeping for 100+ client companies
Hands-Free Bank Statement Retrieval
- client companies handled twice a month
- 70+
- client companies handled twice a month
- bank portals driven by RPA
- 3
- bank portals driven by RPA


