Every business that accepts Monobank transfers hits the same wall: someone opens the bank statement, opens the order list, and matches payments by hand. At 30 orders a day it's an annoyance. At 300 it's a full-time job — and a source of costly errors, delayed shipments, and angry customers whose paid orders sit untouched because a reconciliation was missed.
The business cost is rarely visible on a P&L, but it's real: hours of an operator's time each week, refunds issued twice, orders shipped against payments that never cleared. Manual reconciliation doesn't scale, and it fails exactly when you're busiest.
The automation: n8n as the reconciliation engine
We build a reconciliation workflow in n8n that runs on a schedule — every 5 to 15 minutes — and closes the loop between Monobank and your order system with no human in the middle. The pattern is the same whether your store runs on Laravel, WordPress/WooCommerce, or OpenCart.
n8n pulls fresh transactions from the Monobank API, normalises the amount and reference, then queries your database for orders in a "pending payment" state. When the amount and the payment reference match, the order is marked paid, the customer gets a confirmation, and your accounting sheet updates — all within one polling cycle.
Concrete steps
- Connect the Monobank API. A Schedule trigger fires the workflow; an HTTP Request node calls the Monobank statement endpoint with your token and pulls new transactions since the last run.
- Normalise the data. A Function node standardises amounts (kopecks to hryvnia), extracts the payment reference or comment, and filters out incoming vs outgoing movements.
- Match against orders. A database node queries pending orders in Laravel, OpenCart, or WooCommerce by amount and reference. Exact matches are updated to paid; ambiguous ones are routed to a manual-review queue instead of being guessed.
- Trigger downstream actions. On a confirmed match, n8n updates the order status, emails or messages the customer, and appends a row to a Google Sheet or your accounting system for the finance team.
- Handle exceptions. Unmatched payments and duplicates are flagged to a Telegram channel or email so a person reviews only the edge cases — not every transaction.
The result: reconciliation that used to take an operator two hours a day runs continuously in the background, matches the vast majority of payments automatically, and surfaces only the handful that genuinely need a human decision. Fewer errors, faster order fulfilment, and a finance team that reviews exceptions instead of copying numbers between tabs.
Build it once, run it for years
We've deployed this reconciliation pattern across Ukrainian e-commerce and service businesses on PHP, Laravel, and OpenCart, wired into Monobank, LiqPay, and Nova Poshta. Each integration is engineered for your exact stack and data model — no brittle scripts, no guessing.
If manual payment reconciliation is eating your team's time, we'll design and ship the automation. Start at https://maximorum.com/.