ZATCA e-invoicing

E-invoicing, and what is ready today.

ERPStop builds invoices in ZATCA’s format and signs them with your branch’s own certificate, using ZATCA’s official SDK. This page says plainly what you can do with that today.

What the system does

Builds and signs

An invoice is built in ZATCA’s format and signed with the certificate of the branch that issued it.

Sends, and keeps the answer

ZATCA’s reply is stored with the invoice: accepted, accepted with warnings, or failed with ZATCA’s own message. A failed invoice can be sent again.

Checks before it sends

You can check an invoice against ZATCA’s rules first. A check sends nothing and changes nothing.

Refuses a second send

An invoice ZATCA already has is never sent again, so a double report cannot happen by accident.

Setting up a branch

Each branch is onboarded on its own, in Settings. There are three steps, and the first needs a one-time code from ZATCA’s Fatoora portal that only you can get.

  1. Get the compliance certificate

    Enter the one-time code from the Fatoora portal for this branch’s VAT number.

  2. Pass ZATCA’s compliance check

    The system sends ZATCA the test invoices it requires and shows you the result.

  3. Get the production certificate

    After this the branch can send real invoices.

What ZATCA needs from you

  • A valid VAT number for the business, and a full address for each branch: street, building number, district, city and postal code.
  • The right VAT rate on each product. An invoice line takes its rate from the product, not from the invoice.
  • For a standard (business-to-business) invoice, the customer’s VAT number and address.

Invoices from your old system

Importing is the moment a business can double-report by accident, so the system is built to make that hard.

  • Importing never sends anything to ZATCA.
  • Each imported invoice is marked reported, not yet reported, or unknown. Unknown is the default, and nothing unknown is ever sent.
  • Before an old invoice is sent you can check it against ZATCA’s rules.
  • Sending asks for your confirmation, and tells you per invoice what ZATCA answered.
  • Whether reporting an old invoice late is acceptable is your accountant’s decision. The screen says so and asks you to confirm.

What is still open

You can send a document yourself from the sales lists, one at a time or several at once by ticking them, or switch on automatic sending for a branch in Settings. With it on, each completed sale and credit note made afterwards is sent a few minutes after it was last changed. If ZATCA cannot be reached the system tries again later, up to five times; if ZATCA refuses a document it is left as failed, with ZATCA’s message, for a person to fix. A credit note goes only after the invoice it corrects. Sending from a list skips any document that cannot be sent and tells you why for each. Real-world testing against ZATCA’s sandbox with a customer’s own account is part of onboarding each business. Ask us for the current status before you rely on it.

Questions

What if ZATCA is unavailable?

The invoice is marked failed with the reason and stays in the system. You can send it again when ZATCA is back.

Does every branch need its own certificate?

In ERPStop each branch is onboarded separately, with its own certificate.

Can an old invoice be sent by mistake?

No. Imported invoices are never sent by the import, unknown ones are never sent at all, and sending needs your confirmation.

Talk to us about your branches.

Tell us how many branches you have and which tool you use for ZATCA today, and we will tell you exactly what applies.

Book a demo
Book a demo