Store integrations

Connect your Shopify store to e-invoicing

Five minutes of setup — after that every Paid order in your store automatically becomes a signed simplified invoice, reported to the Zakat, Tax and Customs Authority, with no manual step at all.

How does it work?

When any order in your store is paid, Shopify sends an instant notification to our platform. We turn the order (products, quantities, discounts, shipping) into a Phase 2 compliant simplified tax invoice, sign it with your business certificate and report it to the Authority — all within seconds of payment. You will find the invoice on the Invoices page in our platform, with a QR code ready to share or print.

Paid order in Shopify ← Signed simplified invoice ← Reported to ZATCA ✓

Before you start

If you see the "Install via Shopify" button on the settings page, that is the easiest route — your store address and one approval are all it takes, and you skip every manual step below. This guide covers the manual connection with API keys.
  • A ZATCA Tools account connected to the Fatoora platform — finish the connection from the settings page first.
  • Store owner permission (or Manage apps) in the Shopify admin.
  • The store currency is Saudi riyal (SAR) — orders in other currencies are ignored.

Step 1 · Create a custom app in your store

  1. In the Shopify admin open Settings ← Apps and sales channels.
  2. Click Develop apps then Allow custom app development (if you are asked to).
  3. Click Create an app and name it something like ZATCA Tools.

Step 2 · Grant read access to orders

  1. Inside the app open the tab Configuration then Admin API integration ← Configure.
  2. Search for read_orders and enable it — this is the only permission we need.
  3. Save with Save.
We ask for no write permission at all — we cannot change your store, your products or your orders in any way.

Step 3 · Install the app and copy the keys

  1. Open the tab API credentials and click Install app.
  2. Copy Admin API access token — it starts with shpat_ and it is shown once only.
  3. From the same page copy API secret key — we use it to verify that the notifications really do come from your store.

Step 4 · Connect the store in ZATCA Tools

Open Settings → Store connections and click Connect store, then enter:

  • Store domain — in the form my-store.myshopify.com (not the custom domain).
  • Admin API access token and API secret key from the previous step.

When you click "Connect store", we check that the keys are valid and enable order notifications automatically — no manual webhook setup is needed.

Step 5 · Try it with a real order

Create a paid order in your store (or mark an existing order as paid from the Shopify admin), then open the Invoices page in our platform — you will find its invoice issued and reported within seconds. A counter of issued invoices also appears on the store card on the settings page.

Test orders (the Bogus Gateway payment method) are ignored on purpose, and no invoices are issued for them.

Details worth knowing

  • Invoice type: Simplified (B2C) — the correct type for online store orders. It is reported to the Authority within the statutory window (24 hours).
  • VAT: If your store is set to "prices include tax", we separate the VAT out of the price; otherwise we add 15%. Either way, the invoice total matches what the customer actually paid.
  • Discounts and shipping: Each discount appears on the item Shopify applied it to, and shipping fees appear as a separate line.
  • Untaxed items: A tip you ring up by hand without VAT appears on the invoice at its price, as outside the scope of VAT, so the invoice's VAT matches what Shopify collected.
  • Every invoice draws on your plan's balance — track what is left from your dashboard.
  • Refunds: Any refund in your store issues a credit note automatically linked to the order's invoice, for the amount actually refunded.
  • Business invoices (B2B): Three ways to capture the buyer's VAT number — (1) a ready-made block called "VAT number (ZATCA)" that you drag and drop onto the cart page from Online Store → Customize → Add block; (2) best for your regular customers: save the number once on the customer record (the Note field or a Tag), and it is captured on every order they place; (3) when you create an order by hand from the admin, type the number in the Notes field. A captured number prints on that order’s invoice, and to issue a Standard tax invoice with immediate clearance mark the customer as a business on their record in the platform, with a complete national address — or let the order come from a company through Shopify B2B. Until then the invoice stays simplified, and you can still issue the tax invoice by hand from the platform.
  • Pausing: From the store card in settings you can stop automatic invoicing and resume it whenever you like, without losing the connection.

Frequently asked questions

Does the customer see anything in my store?

Nothing changes in the checkout — the integration runs behind the scenes. Once the invoice is issued, we email its PDF to the customer when the order carries an email address, and you'll find it on the platform to share or print.

My store uses a custom domain — what do I put as the store address?

Always use the original myshopify.com address — you will find it under Settings ← Domains in the Shopify admin.

What about unpaid orders (cash on delivery)?

The invoice is issued the moment the order is marked paid in Shopify — which is the correct behaviour under the regulations: a simplified tax invoice is issued when the sale is completed.

And do you support other platforms?

Yes — WooCommerce with an official plugin on WordPress, and an API for any other system — tell us which platform you need.

Stuck on any step? Contact us — we will connect your store with you during business hours.