Free for Craft Commerce 5
Commerce orders, straight into your books
Most small Danish companies keep their books in e-conomic. Getting Commerce orders in there usually means retyping invoices, or a connector that turns a VAT zone into a tax rate and hopes. Econz raises a draft invoice against the right customer and the right zone, and shows your bookkeeper the draft before anything is booked.
Preview exactly what will be sent
The console preview, the payload on the order screen and the real send all come from one builder, so what you read here is byte-for-byte what e-conomic receives. Nothing is sent.
$ php craft econz/sync/preview 1042
{
"date": "2026-09-24",
"currency": "DKK",
"layout": { "layoutNumber": 19 },
"paymentTerms": { "paymentTermsNumber": 1 },
"customer": { "customerNumber": 20187 },
"recipient": {
"name": "Nordlys AB",
"vatZone": { "vatZoneNumber": 2 }
},
"lines": [ … ]
}
VAT zone: eu — Sweden is in the EU and SE556677889901 is a well-formed VAT number.
Econz net: 1,240.00
Commerce net: 1,240.00
Features
An accounting integration is only useful if you can trust what ends up in the books. Most of Econz is there to make sure you can.
The VAT zone, worked out
e-conomic wants a zone, not a rate. Econz decides it for each order: Domestic at home, EU for a business with a valid VAT number, Domestic for an EU consumer, Abroad for everyone else. The reason is written on the order.
- VAT numbers are checked for format, never against VIES, so checkout keeps working when VIES is down
- A malformed number falls back to Domestic, which is the safe direction
Totals checked, never sent
Econz never sends a total. e-conomic works it out from the lines. Econz does the same arithmetic first and compares it with Commerce, so a difference shows up on the order screen, not in your ledger.
- Net unit prices carried to six decimals, so 3 × 33.333333 still lands on 100.00
- Warn and send, or refuse to send. You choose
One order, one invoice
The order ID is the primary key of Econz's link table, so an order can't hold two drafts however many queue jobs, bulk actions and console runs race each other. Every write also carries an idempotency key, which e-conomic honours for an hour.
CVR, EU VAT and EAN
Econz reads Craft 5's own Organization Tax ID field, or your own fields, or one line of Twig at checkout. It checks the CVR's modulus-11 digit and the EAN's GS1 check digit, so public-sector e-invoices go to a real EAN.
Customers found before they're created
Econz matches an existing customer by email, CVR or both, and creates one only when nothing matches. The link survives a rename in e-conomic, and two simultaneous checkouts can't create the same customer twice.
Automation, with Pro
Queued pushes on completion or on a chosen status, booking with e-conomic's own email or EAN e-invoicing, credit notes on refund, product sync, bulk push and retry, and outstanding amounts read back off booked invoices.
- Credit notes are built from the booked invoice's lines, and always left as drafts
- Auto-push is queued, so a slow e-conomic never fails a payment
B2B checkout in one line
Collect a CVR, EU VAT number or EAN on the requester's own cart. The action validates them and replies with the zone they resolve to, so the buyer knows before they pay whether VAT will be reverse-charged.
<form method="post">
{{ csrfInput() }}
{{ actionInput('econz/checkout/save-business') }}
{{ craft.econz.businessFields(cart) }}
<button>Save</button>
</form>
{% set zone = craft.econz.vatZone(cart.billingAddress.countryCode, vatNumber) %}
{% if zone.zone == 'eu' %}
<p>VAT will be reverse-charged. {{ zone.reason }}</p>
{% endif %}
Frequently Asked Questions
What's worth knowing before you install it.
Lite is, and it isn't a trial. It sends real draft invoices one order at a time, with VAT zone resolution, CVR capture and totals reconciliation included. Pro is $99 with a $49/year renewal, and adds automatic pushes, auto-booking, credit notes, product sync, bulk push and retry, outstanding-amount reconciliation, and departments and projects.
Only if you ask. The default is a draft, so your bookkeeper can look at it in e-conomic first. A booked invoice can't be edited, only credited. With Pro, Book automatically books the draft straight away and can hand it to e-conomic's own email or EAN e-invoicing.
Not without you knowing. Econz never sends a total. e-conomic works it out from the lines. Before sending, Econz does the same arithmetic and compares it with Commerce. Anything beyond your tolerance is either flagged on the order or refused, depending on your setting.
No. An order can hold exactly one draft, because the order ID is the primary key of Econz's link table. Retries reuse an idempotency key that e-conomic honours for an hour, so a timeout that did create the draft returns that same draft.
No, only their format. VIES goes down, and a checkout shouldn't stop taking money when it does. A malformed number falls back to Domestic, the zone that charges VAT.
Commerce decided what the customer paid, and Econz never overrules it. If the resolved VAT zone would charge tax Commerce didn't, or the other way round, Econz shows a warning on the order screen and leaves the decision to you.
Yes. Demo mode connects to e-conomic's public demo agreement, so you can explore real reference data and preview payloads. It's read-only, so Econz won't send anything while it's on.
No. Automatic pushes are queued, never run inline. A slow or unavailable e-conomic can make an invoice late, but it can't stop a customer paying.
Craft CMS 5.3+, PHP 8.2+, and Craft Commerce 5.0+ for order syncing. Econz installs without Commerce, but there's nothing to invoice until Commerce is there.
Start free, automate when you are ready
Lite sends real invoices from the order screen for free. Pro is $99 with a $49/year renewal, and takes care of the pushing, booking and crediting for you.