Odoo Accounting & Finance Management for Saudi Arabia: The Complete 2026 Setup Guide
SOCPA chart of accounts, VAT + Zakat dual-tax regime, Saudi financial reporting, SAMA bank reconciliation, and the monthly close workflow — the full accounting setup every Saudi entity needs in Odoo.
Saudi Arabia's accounting and finance compliance framework is more layered than it appears from the outside. A business operating in KSA must manage two parallel tax obligations (VAT and Zakat), a chart of accounts aligned to SOCPA and IFRS standards, SAMA-regulated banking infrastructure, government portal obligations that touch the general ledger, and monthly financial close requirements that feed quarterly and annual regulatory filings. An ERP that handles one of these well but not the others creates reconciliation debt that compounds over a financial year.
This guide is the accounting and finance setup reference iWesabe uses on every Saudi Odoo deployment. It covers the five compliance domains that define a Saudi-grade finance function, the SOCPA chart of accounts configuration, the VAT + Zakat dual-tax regime that most ERP implementations handle unevenly, Saudi financial reporting requirements and where Odoo's native output falls short, SAMA bank reconciliation, and the monthly close workflow. For the VAT operating model in detail — tax codes, return workflow, edge cases — see the companion guide on Saudi VAT compliance in Odoo. For ZATCA Phase 2 e-invoicing, see the companion guide on Odoo and ZATCA Phase 2.
What does a Saudi-compliant accounting and finance setup in Odoo actually need to cover?
Saudi accounting compliance spans five distinct domains, each with its own regulator, data requirements, and filing cadence. The table below maps each domain to the employer obligation it creates and the Odoo configuration it requires. A finance function that handles all five from the same ERP — with the right configuration — closes its books in days, not weeks.
| Domain | Regulator | Core obligation | Odoo configuration required |
|---|---|---|---|
| Chart of accounts (SOCPA/IFRS) | SOCPA | Financial statements aligned to IFRS or IFRS for SMEs; Saudi-specific provision accounts | Saudi localisation chart (l10n_sa) + mandatory provision accounts for Zakat, GOSI, EOSB, withholding tax |
| VAT accounting (ZATCA) | ZATCA | 15% VAT on taxable supplies; monthly or quarterly returns; 7-year audit trail | Tax-code matrix, return workflow, reverse-charge rules, partner-level defaults — see companion VAT compliance guide |
| Zakat accounting (ZATCA/GAZT) | ZATCA | Annual Zakat at 2.5% of Zakat base for Saudi/GCC shareholders; income tax at 20% for non-Saudi shareholders; split by ownership | Dedicated Zakat liability account; monthly provision entry; annual Zakat base worksheet tied to balance sheet accounts |
| Financial reporting (SOCPA) | SOCPA / External auditors | Monthly management accounts; annual audited financial statements for entities above the threshold; ZATCA VAT return reconciled to GL | Odoo financial report suite (P&L, BS, cash flow, GL, aged receivables/payables) + related-party and segment tagging in analytic accounts |
| Banking & payments (SAMA) | SAMA | All corporate payments through SAMA-licensed banks; IBAN format mandatory; WPS/Mudad for payroll; SARIE for high-value B2B transfers | SAMA-format IBAN validation on partner records; bank statement import (MT940 / CSV) + automated matching rules; WPS disbursement file generation |
SOCPA chart of accounts — configuring Odoo for Saudi accounting standards
Saudi Arabia requires private-sector companies to prepare financial statements in accordance with IFRS (for listed companies and larger entities) or IFRS for SMEs (for smaller entities), as adopted by SOCPA. Odoo's Saudi localisation (`l10n_sa`) ships a default chart of accounts aligned to this structure. What the localisation does not pre-configure are the Saudi-specific provision and liability accounts that the regulatory framework requires. These are the accounts most often missing in generic Odoo implementations, and the ones that cause the most reconciliation problems at year-end.
| Account | Type | Saudi regulatory requirement | Configuration note |
|---|---|---|---|
| VAT payable (output) | Current liability | ZATCA VAT return — output tax balance | Must sit separately from other tax payables; auto-populated by Odoo tax engine |
| VAT receivable (input) | Current asset | ZATCA VAT return — recoverable input tax balance | Used in the return reconciliation; must not be netted against output at the account level |
| Zakat provision | Current liability | Annual Zakat at 2.5% of Zakat base — accrued monthly before year-end filing | Separate account from income tax; monthly credit entry (debit: Zakat expense); cleared at payment |
| Income tax payable (non-Saudi shareholders) | Current liability | 20% income tax on non-Saudi shareholder share of profit; filed annually with ZATCA | Split from Zakat; requires shareholder-ownership percentage to be stored in company configuration |
| Withholding tax payable | Current liability | 5% or 15% WHT on payments to non-residents (services, royalties, dividends); filed monthly | Separate account per WHT rate; linked to supplier partner type (resident vs non-resident) |
| GOSI employer contribution payable | Current liability | Monthly GOSI remittance obligation; cleared by payment on or before the 15th of the following month | Auto-populated by Odoo payroll journal; must not be grouped with general accruals |
| EOSB provision (end-of-service benefit) | Non-current liability | Saudi Labor Law Articles 84–87 mandatory gratuity; accrues from day one of employment | Monthly provision entry from payroll run; long-term portion on balance sheet; cleared at termination payment |
VAT + Zakat — managing Saudi Arabia's dual-tax regime in one ERP
Saudi Arabia operates two parallel tax obligations that are fundamentally different in structure. VAT is a transaction tax — applied to each supply at 15%, reported periodically, and administered through the ZATCA portal with ZATCA Phase 2 clearance requirements. Zakat is an annual levy on the Zakat base (a net-assets calculation adjusted for specific add-backs and deductions under the Saudi Zakat regulations) — not on profit, not on revenue. Most ERP implementations that enter Saudi Arabia get the VAT configuration right and the Zakat accounting wrong. The difference between the two is material: Zakat underpayment creates ZATCA arrears; Zakat overstatement distorts the balance sheet.
- The Zakat base is not taxable profit. The Zakat base under Saudi regulations is calculated from the balance sheet, not the income statement. It begins with the equity base (paid-up capital + retained earnings + reserves) plus certain long-term liabilities used to fund business operations, then applies specific deductions (fixed assets net of depreciation, long-term investments, etc.). A Saudi entity with a loss for the year can still have a positive Zakat base if its equity position is strong. Odoo does not calculate the Zakat base automatically — a dedicated annual worksheet pulling the relevant balance sheet accounts must be maintained in parallel.
- The Zakat / income tax split depends on shareholder nationality. Saudi and GCC shareholders are subject to Zakat on their proportional share of the Zakat base. Non-Saudi, non-GCC shareholders pay income tax at 20% on their proportional share of taxable income. A Saudi company with mixed ownership must calculate and report both in the annual filing. This split must be reflected in the chart of accounts with separate liability accounts for Zakat and income tax — never a single combined tax-payable account.
- Monthly Zakat provision prevents year-end surprises. The Zakat liability should be accrued monthly as one-twelfth of the estimated annual Zakat obligation (based on the prior year's Zakat base as a working estimate, updated at mid-year review). Posting Zakat as a single year-end entry creates a one-period income statement distortion and a balance sheet that understates liabilities throughout the year. iWesabe configures a recurring monthly journal template in Odoo for the Zakat provision — the amount is reviewed quarterly and adjusted if the Zakat base estimate changes materially.
- VAT and Zakat are now filed with the same regulator — ZATCA — but through different systems. The periodic VAT return (monthly or quarterly) goes through the ZATCA Fatoora portal. The annual Zakat and income tax return goes through the ZATCA e-services platform on a separate filing calendar. The two systems do not cross-validate, which means discrepancies between the GL and both returns can remain undetected until a ZATCA compliance review. The monthly close workflow described later in this guide is structured to surface these discrepancies before they reach the filing date.
Is your Odoo chart of accounts set up for both VAT and Zakat?
iWesabe audits your Saudi chart of accounts against the seven mandatory provision accounts, validates the VAT/Zakat split configuration, and gives you a written remediation list within 48 hours.
Saudi financial reporting — what Odoo produces and where the gaps are
Odoo's native financial report suite covers most of what a Saudi finance function needs for internal management and regulatory compliance. Where gaps appear is in the disclosures and supplementary schedules that Saudi auditors and ZATCA expect — disclosures that require data to be tagged at the transaction level before reporting time, not assembled manually after the fact.
| Report / Schedule | Odoo native? | Saudi requirement | Configuration needed |
|---|---|---|---|
| Profit & Loss | Yes | Monthly management accounts; annual audited P&L | Standard — no additional configuration |
| Balance Sheet | Yes | Annual audited; Zakat base worksheet derived from it | Requires correct account structure for Zakat base derivation (see H2 #3) |
| Cash Flow Statement | Yes (indirect method) | Required for entities above audit threshold | Standard indirect method — verify opening cash balance at go-live |
| ZATCA VAT return reconciliation | Partial | VAT return must reconcile to GL; ZATCA cleared-invoice log | Tax report + cleared-invoice reconciliation — see companion VAT compliance guide |
| Zakat + income tax disclosure | No (manual) | Annual Zakat / income tax return filed with ZATCA; notes to audited accounts | Separate Zakat base worksheet; provision account balance confirms filing position |
| Related-party transactions schedule | No (requires tagging) | Required in audited accounts under IFRS IAS 24 | Tag related-party counterparts in Odoo partner master; use analytic accounts to isolate related-party transaction volumes |
| Withholding tax reconciliation | Partial | Monthly WHT return filed with ZATCA for payments to non-residents | WHT payable account balance must reconcile to monthly filing; requires non-resident supplier flag on partner master |
Bank reconciliation and SAMA payment infrastructure in Odoo
All corporate banking in Saudi Arabia runs through SAMA-licensed banks. SAMA mandates specific IBAN formats, payment clearing rules, and electronic payment infrastructure that the ERP must be aligned with to process payments without manual intervention or mismatch errors. Three payment channels are relevant for most Saudi entities: SARIE (real-time gross settlement for high-value B2B transfers), WPS/Mudad (payroll disbursement — covered in the companion HR payroll guide), and direct bank transfers for vendor settlements.
- SAMA IBAN format validation on all partner records. The Saudi IBAN format is SA + 2 check digits + 18 alphanumeric characters (24 total). Odoo's Saudi localisation includes IBAN format validation. Every supplier and customer record used in payment processing must carry a validated SAMA-format IBAN — a misformatted IBAN causes the bank file or payment instruction to fail at the bank gateway, not inside Odoo. iWesabe makes IBAN a mandatory field on the partner master and runs a bulk validation sweep on all existing partner records before go-live.
- Bank statement import — handling Saudi bank file formats. Saudi banks export transaction data in various formats: MT940 (standard SWIFT format used by most major Saudi banks), CSV (used by several local and digital banks), and proprietary XML formats. Odoo's bank statement import supports MT940 natively and CSV through configurable parsers. The critical setup step is mapping each bank's column headers or MT940 field codes to Odoo's statement fields before the first import. A mismatch at this step produces statement lines that do not reconcile automatically and require manual posting, defeating the purpose of bank feed integration.
- Automated matching rules for recurring payments. Saudi corporate payment patterns — monthly rent, recurring service contracts, utility bills, GOSI contributions, and insurance premiums — are highly predictable. Odoo's bank reconciliation module supports rule-based matching: a rule can match an incoming bank line to the correct journal account or outstanding payable based on amount range, partner name, reference pattern, or account code. Setting up matching rules for the top 10–15 recurring payment types at go-live reduces monthly bank reconciliation from a 3-hour manual exercise to a 20-minute review.
- Multi-bank account configuration for Saudi entities. Most Saudi businesses of any scale operate multiple bank accounts: a main operating account, a payroll-disbursement account linked to WPS/Mudad, and sometimes a SARIE-enabled high-value transfer account. Each bank account in Odoo must be configured with its own journal, its own matching rules, and the correct bank-account type. Grouping multiple accounts under a single journal is the most common cause of bank-reconciliation exceptions that take days to unpick.
How long does your bank reconciliation take each month?
iWesabe configures Odoo bank statement import, IBAN validation, and automated matching rules for Saudi banks — most clients reduce monthly reconciliation time by more than 60% after go-live.
The monthly financial close — how Saudi entities run it in Odoo
A Saudi financial close that produces clean management accounts and feeds directly into the periodic VAT return and annual Zakat filing runs in seven steps across seven to eight working days. Each step has a clear owner and a clear output. The steps below are the close sequence iWesabe configures for Saudi entities — the discipline that turns a three-week reconciliation marathon into a systematic week-long process.
- Day 1–2: Payroll confirmation and GOSI / EOSB provision posting. Confirm the payroll run in Odoo. The payroll journal posts gross salaries, GOSI employer contribution, EOSB monthly provision, and net pay to the relevant accounts automatically. Verify the GOSI payable balance against the GOSI statement for the period. Generate the WPS/Mudad SIF file for submission — it must reach Mudad at least three business days before the payroll disbursement date.
- Day 2–3: Bank reconciliation across all accounts. Import bank statements from all Saudi bank accounts (MT940 or CSV). Run the automated matching rules — the recurring-payment types configured at go-live should match automatically. Review unmatched lines: these are either timing differences (payments in transit), new recurring items not yet in the rules, or genuine unrecorded transactions. The bank balance in Odoo must agree to the bank statement closing balance on the last day of the period before the close proceeds.
- Day 3: ZATCA cleared-invoice reconciliation and VAT tax-code sweep. Pull the ZATCA cleared-invoice log for the period. Match each cleared invoice (by UUID) to its Odoo accounting journal entry. Flag any cleared invoice without a matching GL entry and any GL entry without a cleared-invoice counterpart. Run Odoo's tax report and review every zero-rated, exempt, and out-of-scope transaction — these are the tax codes that drift fastest. This is the input to the VAT return; detail on the return workflow is in the companion VAT compliance guide.
- Day 4: Zakat provision posting and withholding tax reconciliation. Post the monthly Zakat provision entry (one-twelfth of the estimated annual Zakat obligation). If the period is the third month of a quarter, review the Zakat base estimate for the first half-year and adjust the provision rate if material changes to the balance sheet composition occurred. Reconcile the withholding tax payable account balance against payments to non-resident suppliers in the period — each qualifying payment must have a corresponding WHT journal entry and the balance must tie to the monthly WHT filing.
- Day 5: Aged receivables and payables review. Run the aged receivables report. Flag any receivable outstanding for more than 12 months — these are candidates for bad-debt VAT recovery in the next return. Review the aged payables for any payment obligations overdue past contractual terms — late supplier payments above certain thresholds can trigger ZATCA compliance flags for WPS-adjacent vendors. Review the GOSI payable balance — it must be cleared by the 15th of the following month.
- Day 6–7: Trial balance review and inter-company eliminations (multi-entity). Run the trial balance in Odoo and verify that every account with a material balance has a supporting sub-ledger or reconciliation. For multi-entity Saudi groups, run the inter-company reconciliation: inter-company receivables in entity A must equal inter-company payables in entity B for the period. Mismatches in inter-company balances are the single most common cause of consolidated P&L distortions in Saudi group accounts. Odoo's multi-company module produces the individual entity accounts; consolidation eliminations require a separate step.
- Day 7–8: P&L, Balance Sheet, and CFO sign-off. Generate the management P&L and Balance Sheet from Odoo. Verify that the Balance Sheet balances (total assets = total liabilities + equity) and that the opening balance sheet from the prior close ties to the current period's opening position. Prepare the one-page management summary: actual vs prior-period P&L, key balance sheet movements (cash, receivables, payables, Zakat provision, EOSB provision), and a note on any open items from the close sweep. CFO sign-off locks the period in Odoo — no further journal entries to the closed period without a formal re-open.
Odoo is a capable accounting and finance platform for Saudi Arabia when the configuration decisions are made correctly at the start. The chart of accounts, the Zakat and income-tax split, the provision accounts, the bank-statement import rules, and the seven-step close discipline are not features that activate automatically — they are configuration choices that either get made at go-live or create reconciliation debt that compounds over the financial year. Made correctly, the monthly close runs in seven to eight working days, the VAT return reconciles to the GL on first pass, and the annual Zakat filing draws directly from the balance sheet accounts maintained throughout the year.
iWesabe has configured Odoo accounting and finance for Saudi entities across construction, manufacturing, retail, distribution, healthcare, and professional services — single entities and multi-entity groups. If your current Odoo deployment is producing clean invoices but a difficult month-end close, or if you are planning a first Saudi ERP deployment and want the accounting configuration right from day one, a focused 60-minute call covers the chart of accounts review, the Zakat configuration, and the close workflow — written output inside 48 hours.
Book a 60-minute Saudi Odoo accounting setup review
We will walk through your chart of accounts, Zakat configuration, bank reconciliation setup, and monthly close workflow — written summary within 48 hours.
Frequently Asked Questions
What accounting standards apply to Saudi companies using Odoo ERP?
What is the difference between VAT and Zakat in Saudi Arabia, and how does Odoo handle both?
Does Odoo support VAT group registration for connected Saudi companies?
Which Saudi bank file formats does Odoo support for bank reconciliation?
How long does the monthly financial close take in Odoo for a Saudi entity?
Does Odoo handle withholding tax on payments to non-residents in Saudi Arabia?

iWesabe Editorial Team
Practitioner insights on Odoo ERP, ZATCA compliance, and Saudi enterprise digital operations — written by iWesabe's consulting, finance, and engineering teams.
Related Articles
VAT Compliance in Saudi Arabia with Odoo ERP: The 2026 Operating Model
Tax-code matrix, monthly vs quarterly return workflow, audit-defence KPIs, and the edge cases (zero-rated, exempt, reverse charge, group VAT, capital goods, bad debt) that decide whether your VAT posture survives a ZATCA inspection.
Odoo ERP for ZATCA Phase 2 e-Invoicing: The 2026 Compliance Playbook for Saudi Arabia
Wave schedule, Fatoora clearance mechanics, XML + cryptographic stamp, production CSID path, rejection diagnostics, and the audit-defence chain that keeps Saudi businesses ZATCA-clean.
Key Metrics Every Saudi CFO Should Track in Odoo ERP: The 8-KPI Dashboard (2026)
An audit-defensible CFO dashboard grouped into 3 layers — cash + working capital, profitability + variance, pipeline + operations — with target bands per KPI, Odoo module map, and ZATCA/GOSI/PDPL anchors where applicable.
Explore Related Solutions
Financial Management
Automate your Saudi Arabia accounting — ZATCA Phase 2 e-invoicing, VAT returns, Zakat provisioning, multi-currency bank reconciliation, and real-time financial reporting — all inside one connected Odoo platform. Fully localised for KSA and the GCC by iWesabe.
ExploreMada Payment Gateway Integration with Odoo
Accept Mada debit cards across your Odoo Website, eCommerce, and POS — the Saudi national payment scheme that every locally-issued debit card carries. iWesabe wires Mada into Odoo Payment Provider with 3-D Secure 2 authentication, SAR settlement, and ZATCA-aligned invoicing in Odoo Accounting.
ExploreMoyasar Payment Gateway Integration with Odoo
Accept Mada, Visa, Mastercard, American Express, Apple Pay, Samsung Pay, and STC Pay through a single Moyasar checkout — wired into Odoo Website, eCommerce, POS, and Subscriptions by iWesabe. SAMA-regulated, eMSP-certified, PCI-DSS compliant, with hosted checkout and webhook reconciliation against Odoo Accounting.
ExploreMyFatoorah Payment Gateway Integration with Odoo
Accept Mada, KNET, BENEFIT, Visa, Mastercard, American Express, Apple Pay, Google Pay, STC Pay, Tabby, and Tamara across 8 GCC and MENA markets through a single MyFatoorah integration — wired into Odoo Website, eCommerce, POS, and Subscriptions by iWesabe. Invoice Links, hosted Checkout, Embedded Form, and multi-vendor splitting all available inside Odoo Accounting with ZATCA Phase-2 e-invoicing.
Explore