Move your bookkeeping out of spreadsheets and into your own app
If closing the month means digging through WhatsApp threads, photos of transfer receipts and several spreadsheets just to work out who owes what, the problem is not discipline — it is where the records live. A bookkeeping app makes the invoice, the payment and the customer balance parts of the same record: as the document goes to GİB (Turkish Revenue Administration), the balance updates at the same moment.
How many separate apps does this need?
-
01
Business Mobile App (iOS + Android)
The app that actually gets used in the field and at the counter: issuing invoices, recording payment receipts, checking customer balances, photographing expense slips and capturing records offline. Due-date reminders arrive as push notifications.
-
02
Web Admin Panel
The web interface for managing invoice series, VAT and withholding definitions, bank statement matching, the overdue receivables list, user roles and backup settings; e-Arşiv (the e-invoice format used for non-registered buyers in Turkey) reporting status is monitored here.
-
03
Accountant Access Panel
A separate read-only panel for your accountant: they select a period, download the ledger export file and flag missing documents, without any access to your business settings or customer contact details.
What the app includes
- Per-customer payment terms and credit limit breach alerts
- Payment link and IBAN QR code attached to each invoice
- Photograph an expense receipt to capture amount, date and VAT rate
- Field sales collection receipts posting to the customer account instantly
- Cheque and promissory note portfolio: due dates, endorsement, bounced marking
- Bulk SMS and WhatsApp reminders to overdue accounts
- Sending the account statement as PDF and collecting a reconciliation approval
- Converting a delivery note or order into a partial invoice
- End-of-day cash count and cash-to-bank transfer entries
- Automatic generation of recurring rent and subscription invoices
- Period lock: a month handed to the accountant can no longer be edited
- Receivables ageing report in 0-30, 30-60 and 60-90 day buckets
State of the sector
Bookkeeping is no longer just record-keeping: as the scope of Turkey's mandatory e-invoicing widens, even small businesses have to produce documents electronically. Off-the-shelf packages cover the standard part of that need but rarely fit a business's own workflow — dealer collections, consignment sales and service tickets do not fit the package, so the records leak back into spreadsheets. In a business without its own app, the balance figures live in one person's head; when that person takes leave, collections stop, overdue receivables grow unnoticed, and the paperwork that reaches the accountant at month end is incomplete, so the correction work lands back on the business.
Metrics that matter here
- Average collection time (days from invoice issued to payment) — Due-date reminders and a payment link attached to the invoice shorten this without anyone having to chase customers by phone.
- Overdue receivables as a share of total receivables — Customers past their due date are listed automatically and trigger an alert, so a delay is visible on day one instead of growing unnoticed.
- Number of unmatched bank transactions at period end — Statement import plus matching that learns from your rules reduces the number of movements you have to close by hand every month.
- Share of documents rejected or cancelled at GİB — The pre-issue taxpayer lookup and VAT and withholding validation catch a faulty document before it is ever sent.
Common mistakes in this sector
- Leaving e-Fatura integration to a second phase An app that only produces PDFs in its first release cannot issue official documents, so the business keeps running its old software in parallel. The integrator test environment and the document schema have to be addressed while the data model is being built; bolting them on later means rewriting the invoice tables from scratch.
- Letting records be deleted Deleting a payment entered by mistake fixes the balance but destroys the history — who changed what and when is lost. The right approach is to create a reversing entry instead of deleting, and to write every change to an audit trail with the user, the timestamp and the previous value.
- Never discussing how the accountant will receive the data Even if the app works perfectly on its own, if the accountant re-keys the records into their own software, the workload does not drop — it doubles. The chart of accounts mapping and the export file format have to be agreed with the accountant at the start of the project, not after delivery.
- Storing amounts as floating point numbers Float types introduce cent-level drift in VAT and discount calculations; over time the balance is off by a few cents and reconciliation stops working. Monetary fields should be stored in a fixed-decimal type or as integers in cents, with rounding done in one place.
Regulation and compliance
The scope of Turkey's e-Fatura and e-Arşiv obligation is defined by GİB (Turkish Revenue Administration) communiqués according to turnover and line of business; the app cannot submit documents to GİB by itself and works through a licensed private integrator or a direct integration. Because the Tax Procedure Law requires documents, and the Turkish Commercial Code requires commercial books and records, to be retained for set periods, deletion is replaced by reversing entries. Names, tax and national ID numbers, addresses and phone numbers on customer records fall under KVKK (Turkey's data protection law, aligned with GDPR): a privacy notice, access limits, a retention and destruction plan and data processor agreements with the integrator and hosting provider are all required. Card details are never stored in the app; they are tokenised on the payment provider's side.
The real challenges in this sector
-
e-Fatura or e-Arşiv: choosing the document type at the moment of issue
Before an invoice is issued, the buyer's tax number is checked against the taxpayer registry of GİB (Turkish Revenue Administration) to see whether they are registered for e-Fatura (Turkey's mandatory e-invoicing system); the document is then generated as either an e-Fatura or an e-Arşiv invoice. If the integrator service is slow, the document is queued and retried in the background, with sent, accepted and rejected shown as separate states on screen. A document issued under the wrong type cannot simply be deleted — it requires a cancellation or objection process — so this check is moved ahead of issuing.
-
VAT, withholding tax and rounding to the cent
When different VAT rates per line, line-level discounts and withholding tax all appear on the same invoice, the order in which you round changes the result. Amounts are held in a fixed-decimal type rather than floating point, all rounding is concentrated in a single helper function, and the difference between line totals and the document total is verified before the invoice is issued. Otherwise the document comes back from the integrator with a schema error and the user has no way to see where the mistake is.
-
Matching incoming payments to bank statement lines
When two transfers arrive on the same day for the same amount, the amount alone will not tell you which invoice each belongs to. The name and invoice number in the statement description are parsed, a similarity score against the customer record is calculated, and any movement that is not certain is never closed automatically — it goes into an approval queue. Every manual match the user makes is stored as a rule, so the same sender is recognised directly the following month.
-
Offline collections and receipt number collisions
Connectivity drops at a market stall or in a basement warehouse, and payments still have to be recorded. Records are held on the device and synced when the connection returns, but if receipt numbers are generated on the device, two users end up with the same number. Each device is allocated a block of numbers in advance, the final number is confirmed when the record reaches the server, and records entered against the same customer from two different devices are sequenced during sync without corrupting the balance.
-
Foreign-currency invoices and exchange rate differences
For a business that imports or prices in foreign currency, the rate on the invoice differs from the rate at the time of payment. The document is stored with both the foreign currency and the local amount, together with the central bank rate used and its date; when the payment is recorded, the resulting exchange difference is posted to the customer account as a separate line. If the balance screen does not show both the currency amount and its local equivalent, the owner sees a receivable that is either too high or too low.
Required integrations
- GİB (Turkish Revenue Administration) e-Fatura / e-Arşiv connection: UBL-TR document generation and taxpayer registry lookups through a licensed private integrator
- e-Serbest Meslek Makbuzu and e-Müstahsil Makbuzu generation (Turkey's electronic receipts for professional services and for purchases from farmers)
- Bank transaction import: MT940 / CSV statement import from corporate online banking, or the bank's corporate API
- Payment link generation with iyzico, PayTR, Param or Craftgate (Turkish payment providers) and card collection through a bank virtual POS
- Ledger export files for Logo, Mikro, Netsis or Luca (Turkish accounting software), delivered to your accountant with a chart of accounts mapping table
- SMS provider and WhatsApp Business API for due-date reminders; IBAN and TR QR code sharing for bank transfer payments
Who this page is for
-
A regional wholesaler or distributor working with field sales reps
The weight is in the field: offline collection receipts, customer groups per rep, credit limit alerts and a cheque portfolio belong in the first phase. Bank reconciliation matters, but comes second here.
-
A newly founded service business: clinic, agency or consultancy
Few invoices but many repeating ones. Automatic recurring and retainer invoicing, self-employment receipts (a Turkish document type for professional services), payment links and photographed expense receipts are enough; no stock or warehouse module at all.
-
An owner of a multi-branch retailer or small chain
The problem is between branches, not inside one: per-branch end-of-day cash counts and variances, transfers between branches, a consolidated balance at head office and period locking come first. Field collection is not needed.
A phased plan that splits the budget
-
1
Phase 1 — Invoicing, customer accounts and collections core 7-9 hafta
Delivers customer accounts, sales invoicing, the connection to a licensed e-invoicing integrator, cash and bank transfer collections, balance screens and role-based access. The integration comes first because the document schema dictates the data model; bolting it on later forces the invoice tables to be rewritten. After this phase the old software can be dropped.
-
2
Phase 2 — Bank reconciliation, due-date tracking and accountant handover 4-6 hafta
Adds statement import with rules-learning matching, receivables ageing, due-date reminder messages, payment links and the chart-of-accounts mapping that produces the accountant's export file. These only work once Phase 1 has accumulated real invoice and payment data; matching rules cannot be tested against an empty ledger.
-
3
Phase 3 — Field work, cheques and business-specific flows 5-7 hafta
Covers offline field collections with pre-allocated receipt number blocks, the cheque portfolio, business-specific flows such as consignment or service tickets, foreign-currency invoicing with exchange differences, and multi-branch cash handling. Which of these you actually need becomes clear only after using the first two phases, so this budget is spent last.
Typical scope and timeline
Typical scope: iOS and Android mobile app, web admin panel, e-Fatura and e-Arşiv integrator connection, customer account and collections module, bank statement import and matching screen, role-based permissions, read-only accountant access and ledger export files. Inventory, quotations and cheque/promissory note tracking are handled in later phases. Scope and budget are set after a scoping call.
Estimated timeline: 12-18 weeks
Off-the-shelf or custom build?
| Topic | Off-the-shelf | Custom build |
|---|---|---|
| Regulatory and document schema updates | This is where packaged software genuinely wins: when the tax authority changes a rule or the invoice schema, the vendor ships the update and you never notice. | With custom development this tracking becomes part of your maintenance agreement; if the integrator choice and update duty are not written into the contract, the risk stays with you. |
| Your own bookkeeping flow | Handles the standard buy-sell-collect flow well, but consignment, dealer collections or service tickets usually end up squeezed into a spare field, or spill back into a spreadsheet. | The flow is modelled as it really runs: invoicing only what sold at month end, matching a field receipt to warehouse stock, each visible on screen instead of in a spreadsheet. |
| Cost structure | A monthly per-seat subscription: cheap to start and quick to launch, but the annual total creeps up as seats and modules are added, and renewal pricing is not under your control. | A one-off build budget plus hosting, integrator and maintenance costs. Cost does not rise with headcount, but for a very small team the payback period is long. |
| Data ownership and handover to the accountant | Data sits on the vendor's servers; most packages do export, yet the account-code mapping is fixed and may not line up with your accountant's software. | You keep the database and backups, hosting can stay in Turkey, and the chart-of-accounts mapping is built for the software your accountant actually uses and can be changed later. |
Sector glossary
- Cari (running customer/supplier account)
- The running debit-credit ledger you keep with one customer or supplier. Every invoice, payment and return posts to this card, and “what is the balance?” in a Turkish business means the bottom line of that card.
- Tevkifat (partial VAT withholding)
- A rule where part of the VAT is declared by the buyer instead of the seller, common in cleaning, transport and labour services. The rate and its code must appear separately on the invoice line, otherwise the document is rejected by the e-invoicing schema.
- Mutabakat (balance confirmation)
- Both sides compare the balance in their own books and agree on one figure, usually by exchanging a statement at period end. A gap points to a missing invoice, an unrecorded payment or a return.
- Receivables ageing
- Grouping unpaid receivables by how long they are overdue: 0-30, 30-60, 60-90 days and beyond. You read this table rather than the single total, because the chance of collecting drops as the buckets age.
- Contra entry (ters kayıt)
- Instead of deleting a wrong entry, you post an opposite one that cancels it out. The balance is corrected while both the mistake and the fix stay visible in the ledger, which is the only acceptable method for records under retention rules.
Frequently asked questions
Let us talk about your project
A free 30-minute call to scope it out, then an itemised quote within 48 hours.
Get a Free QuoteThis page explains the problems an app must solve in this sector. We share references and comparable projects during the call.