Econz for Craft CMS

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.

Econz

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.

shell
$ 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.

twig
<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.

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.