Way4Tech
jordanjofotarae-invoicingimplementation

Odoo implementation in Jordan: JoFotara rejects your discount policy, and nine payment rails have no module

ยท

Jordan has the best-covered e-invoicing localization of any market we work in and the worst-covered payment landscape. Odoo ships JoFotara integration and a full payroll localization in the box. It ships nothing at all for eFAWATEERcom, CliQ, MEPS or any Jordanian wallet. A quote that ignores that split is wrong by a large multiple in one direction or the other.

What JoFotara requires before an invoice counts

The scheme is JoFotara, the National Electronic Invoicing System (ู†ุธุงู… ุงู„ููˆุชุฑุฉ ุงู„ูˆุทู†ูŠ). The authority is the Income and Sales Tax Department (ISTD), Ministry of Finance, delivered with the Ministry of Digital Economy and Entrepreneurship.

Phase 2 has been live since 1 April 2025 and covers B2B, B2C and B2G. As of August 2026 ISTD is still pulling smaller taxpayers in, and an invoice that did not go through JoFotara is not accepted as a deductible expense. It binds taxpayers issuing invoices in Jordan, with no sector or entity-type exemption published. The commercial trigger is simpler than the legal one: your customer cannot deduct the cost if the invoice did not clear JoFotara, so they will refuse it. That is why โ€œwe are small, we will do it laterโ€ does not survive contact with a corporate buyer.

What it technically requires:

  • Submission to ISTD through the JoFotara API, with the returned status coming back into Odoo. Build it as a clearance flow, not a periodic report file.
  • UBL 2.1 XML as the invoice payload.
  • A QR code returned by ISTD, printed on the document the customer receives.
  • Per-taxpayer API credentials from the JoFotara portal: Client ID, Secret Key and Activity Number.
  • Taxpayer type set on the company: unregistered, registered under standard sales tax, or registered under special sales tax.
  • No negative quantities and no negative unit prices. They are rejected. Global or document-level discounts have to be re-expressed as a percentage on each line.
  • Company name matching the ISTD registration, invoice currency in JOD, and customer country plus Tax ID as mandatory fields.

The negative-value rule is the one that turns into a business conversation rather than a technical one. Most Jordanian distributors and retailers run document-level discounts, rebates and promotions, and none of that shape survives JoFotara. Re-expressing every discount as a per-line percentage changes how sales quote, how promotions are authorised and how margin is read afterwards. It is a pricing and process change, not a configuration toggle, and it belongs in discovery.

The second item to settle early is rounding. Odoo works to three decimals and ISTD to nine. Agree the acceptable difference, under 0.001, with the clientโ€™s auditor before go-live rather than after the first rejection. The Jordan e-invoicing page carries the requirement set on its own.

The obligations that shape the ledger

Tax

General Sales Tax (GST) is the indirect tax and the standard rate is 16%. Zero rating applies to exports of goods and services outside Jordan, to free zone areas and markets, to the Aqaba Special Economic Zone and to development areas. In Odoo that is a fiscal position and tax-mapping job rather than a rate change, and it needs the customer records to carry enough information to pick the right position automatically.

Withholding is broad on the services side. A 5% withholding tax applies to services supplied by resident natural persons and civil companies, including doctors, lawyers, engineers, auditors, consultants, insurance agents, brokers, arbitrators, financial intermediaries and shipping agents. Non-resident service providers are withheld at 10% plus national contribution tax. Interest and commissions paid by banks carry 5% withholding for individuals and 7% for legal entities, treated as a final tax for non-residents.

On the corporate side, the income tax return is due before the end of the fourth month following the end of the tax period, with the balance payable on the same date. Businesses with gross income above JOD 1 million make an advance payment of 40% of accrued income tax within 30 days of the fiscal half-year end, and late payment runs at 0.4% per week. GST returns are filed every two months, due within one month of the end of the period, though that filing frequency is unconfirmed in our sources and should be checked against the clientโ€™s own registration.

Payroll

Jordan has an official Odoo payroll localization, so this is configuration rather than a build. Social Security Corporation contributions are levied on monthly salaries and certain allowances at 14.25% employer and 7.5% employee. Odooโ€™s Jordan payroll localization computes progressive income tax with exemptions for residents, non-residents, blind employees and dependants, social security on both sides, housing and transport allowances, leave logic, overtime and end of service benefit.

Two parameters are unconfirmed in our sources and should be checked before the first run: the 2026 SSC contribution ceiling is reported as JOD 3,349 per month, and employers in high-risk occupations are reported to pay an extra 1% on top of the standard 14.25%.

Accounting

Odooโ€™s l10n_jo module ships a Jordanian chart of accounts, taxes, a tax report and fiscal positions, so the ledger structure is not a from-scratch build. Returns are submitted through the tax authorityโ€™s online portal rather than on paper.

The retention point is practical rather than legal-sounding. Tax audits usually happen within a year of filing, and an auditor may not audit a return more than four years after the filing date, so keep four years of supporting detail queryable in the system. That is an archiving and performance decision at migration time: it sets how much history you actually load rather than park in the old system.

What is not in Odoo for Jordan

Odoo ships l10n_jo (Jordan - Accounting), l10n_jo_edi (Jordan E-Invoicing), l10n_jo_hr_payroll (Jordan - Payroll) and l10n_jo_hr_payroll_account. In the box you get the chart of accounts, taxes, tax report and fiscal positions; JoFotara integration with compliant e-invoice generation, real-time submission for validation and invoice status tracking inside Odoo; the JoFotara credential and taxpayer-type configuration on the company record; the payroll engine described above; and payroll journal entries into the ledger.

Then the rails, which is where Jordan turns expensive. Of the 19 payment methods on our Jordan page, only 4 are classified In Odoo, and two of those four come with a warning. Odoo 19 ships a Stripe connector, but Stripeโ€™s own list of supported business locations does not include Jordan, so a Jordan-registered company cannot open an account. Odoo 19 ships PayPal, which does work in Jordan for sending, receiving and withdrawing, but PayPalโ€™s own country feature table puts Jordan in the group with no currency conversion, so it runs in US dollars rather than Jordanian dinar. Check that before promising dinar settlement. What genuinely works on day one is Cash on Delivery and the built-in Wire Transfer provider.

Nine payment rails are custom builds, the highest count of any market we publish: eFAWATEERcom, CliQ, JoMoPay, Zain Cash, Orange Money Jordan, UWallet, Dinarak, MEPS (Middle East Payment Services) and Valu Jordan. Read that list again, because it contains the national bill payment system, the national instant payment system, the national mobile payment switch, the four largest wallets, the processor that supplies the gateway and POS estate for much of the market, and the clearest licensed instalment option. None of it has an Odoo module.

There are two short paths worth knowing. Network International Jordan (N-Genius) has a free payment provider module on the Odoo 19 apps store, and MyFatoorah, which settles in Jordanian dinar, has a free module as well as several paid ones. HyperPay, PayTabs and Telr are paid connectors. If the client has no strong acquirer preference, those five are where a Jordanian store goes live fastest.

Couriers are similar. Of the 10 carriers, only 3 are In Odoo: DHL Express, UPS and FedEx. Aramex, founded in Amman in 1982 and the carrier most Jordanian online sellers already hold an account with, needs a paid connector, as does iMile. Jordan Post Company, Spex, Hala Delivery, Right Way Logistics and Naqel Express are custom builds. Odooโ€™s own custom list puts it plainly: nothing for Jordan ships in the box. For the two most common of those, Gulf and South Asia Shipping Carriers covers Aramex and Naqel Express as delivery methods with rates, waybills, labels, cancellation and tracking, plus a simulation mode and a call log for when a booking fails.

The remaining items on Odooโ€™s custom list for Jordan are the discount policy redesign, the rounding tolerance, collection and bank reconciliation against eFAWATEERcom, CliQ and MEPS, a check that the l10n_jo tax report actually maps onto the ISTD GST return form and period before promising a one-click filing pack, and Arabic invoice layouts with any bilingual print requirement.

Local integrations against what it takes in Odoo

Local integrationWhat it isWhat it takes in Odoo
Cash on Deliverycash on deliveryIn Odoo
Bank transferwire transferIn Odoo
PayPalglobal gatewayIn Odoo, but USD not JOD
Network International (N-Genius)local gatewayCommunity module
MyFatoorahlocal gatewayCommunity module, settles in JOD
HyperPaylocal gatewayPaid connector
PayTabslocal gatewayPaid connector
Telrlocal gatewayPaid connector
Visa, Mastercard, American Expresscard acceptancePaid connector, via the gateway
eFAWATEERcomnational bill paymentCustom build
CliQinstant bank transferCustom build
JoMoPaynational wallet switchCustom build
Zain Cash, Orange Money, UWallet, Dinarakmobile walletsCustom build
MEPSlocal gateway and acquirerCustom build
Valu JordanBNPLCustom build
DHL Express, UPS, FedExglobal expressIn Odoo
Aramexdomestic and international expressPaid connector
iMilelast milePaid connector
Jordan Post Companynational postCustom build
Spex, Hala Deliverylast mileCustom build
Naqel Expressregional expressCustom build
Right Way Logisticsfreight forwardingCustom build

Before kickoff: what you need ready

  • Your JoFotara portal credentials: Client ID, Secret Key and Activity Number.
  • Your taxpayer type, confirmed: unregistered, registered under standard sales tax, or registered under special sales tax.
  • Your company name exactly as it appears on the ISTD registration, because the ERP name has to match it.
  • A decision on discounts. Every global or document-level discount, rebate and promotion has to be re-expressed as a per-line percentage, and that decision belongs to sales and finance, not to the developer.
  • Your auditorโ€™s agreement on the rounding tolerance between Odooโ€™s three decimals and ISTDโ€™s nine.
  • Customer records with country and Tax ID populated, since both are mandatory on the invoice.
  • Your zero-rating cases listed: exports, free zones, the Aqaba Special Economic Zone, development areas.
  • Your acquirer decision, plus which wallets are genuinely required rather than nice to have, because each one without a module is a build.
  • Opening balances signed off by whoever closes your books, and a named decision maker per function.

The rollout sequence

Short, because this part does not vary by market.

  1. Discovery and process mapping. A written process map, a numbered gap list and the module list that follows.
  2. Solution design and gap resolution. Each gap gets one of four dispositions: configure, customise, change the process, or leave out of scope, each with a number.
  3. Configuration and prototype. A working system holding a real sample of your data, demoed weekly against the process map.
  4. Data migration and reconciliation. Clean in the extract, never after loading, and sign off control totals against the old system.
  5. Training, UAT and cutover. Scripted testing by daily users, a cutover runbook with a rollback point, and a go or no-go call against agreed criteria.
  6. Hypercare and handover. Daily triage tapering as volume settles, report tuning, administrator handover, and a phase two backlog.

For Jordan, the discount redesign belongs in phase 1 and the first cleared JoFotara invoice in phase 3. Leaving the discount question to UAT is how a Jordanian project loses a fortnight. The Odoo implementation in Jordan page has the full sequence and the Jordan cost page covers what drives the number.

Questions we get asked

We give a 5% discount on the whole invoice. Why is that a problem? JoFotara rejects negative quantities and negative unit prices, so a document-level discount line cannot be sent. The invoice has to carry the discount as a percentage on each line instead. The arithmetic is easy; agreeing who is allowed to set it, and how the promotion is reported afterwards, is the part that takes time.

Is the l10n_jo tax report our GST return? Do not assume so. Check that it maps onto the ISTD GST return form and period before promising a one-click filing pack, particularly if the client files every two months.

Can we collect through eFAWATEERcom from inside Odoo? Not without a build. eFAWATEERcom is owned by JoPACC, supervised by the Central Bank of Jordan and operated by MadfooatCom, and a merchant with a biller code gets paid from inside any Jordanian bank app with no card involved. There is no Odoo connector, so both the collection and the bank reconciliation against it are custom work.

Does Odoo handle Jordanian payroll? Yes. l10n_jo_hr_payroll covers progressive income tax with the exemption set, social security on both sides at 14.25% and 7.5%, housing and transport allowances, leave, overtime and end of service benefit, and l10n_jo_hr_payroll_account posts it to the ledger. Verify the contribution ceiling and the high-risk occupation loading against current SSC guidance before the first run.

How much history should we migrate? Enough to answer an audit. An auditor may not audit a return more than four years after the filing date, so four years of supporting detail queryable in Odoo is a defensible line, with anything older kept readable in the legacy system.

The full statutory picture for this market, with payments, shipping and payroll broken out separately, sits on the Jordan country page.

Written by

Odoo developer at Way4Tech. 120 modules published on the Odoo apps store. Writes the Odoo posts on this site.

Profile and published work

Have an Odoo project?

Free 30-minute consultation, no obligation.

Talk to us