Twinsies for Craft CMS

For Craft Commerce 5

Your orders, already in the books

Every completed order becomes a document in Twinfield — with the debtor created, the revenue on the right ledger account, and a VAT code that will survive the return. Nothing else connects Craft Commerce to Twinfield.

Twinsies

One order, two shapes

Twinfield's invoicing module is a separate product, so shops that already send their own invoices need the bookkeeping rather than the document. Twinsies does both, and it is one setting.

xml
<!-- Sales invoice — Twinfield prints, emails and chases it -->
<salesinvoice>
  <header>
    <office>001</office>
    <invoicetype>FACTUUR</invoicetype>
    <customer>1000</customer>
    <duedate>20260903</duedate>
    <status>concept</status>
  </header>
  <lines>
    <line id="1">
      <article>WIDGET</article>
      <quantity>2</quantity>
      <unitspriceexcl>49.50</unitspriceexcl>
      <vatcode>VH</vatcode>
      <dim1>8000</dim1>
    </line>
  </lines>
</salesinvoice>

<!-- Journal transaction — the bookkeeping only, on any subscription -->
<transaction destiny="temporary" autobalancevat="true">
  <header><office>001</office><code>VRK</code><date>20260820</date></header>
  <lines>
    <line type="detail" id="1">
      <dim1>8000</dim1><debitcredit>credit</debitcredit>
      <value>99.00</value><vatcode>VH</vatcode>
    </line>
    <line type="total" id="2">
      <dim1>1300</dim1><dim2>1000</dim2>
      <debitcredit>debit</debitcredit><value>119.79</value>
    </line>
  </lines>
</transaction>

Features

Built for this one pair, rather than a field-mapping screen that knows nothing about Commerce.

Your chart of accounts, in a dropdown

Twinsies reads your real Twinfield administration — offices, articles, ledger accounts, VAT codes, daybooks — and maps against it. Per purchasable, per product type, then a catch-all.

  • Shipping and discounts book to their own accounts
  • A mistyped ledger account is not rejected by Twinfield — it is created

Customers become debtors first

Twinfield will not book an invoice to a customer that does not exist, and it will not create one for you. The DEB dimension is written before the document, so an order never fails on a missing debtor.

  • Four numbering strategies, or one catch-all debtor for guest checkouts
  • Existing debtors are left alone unless you ask — a corrected address stays corrected

VAT that survives the return

Matched on the rate Commerce actually charged, not on a tax category that covers three zones — a Dutch shop shipping to Belgium charges 21% under one category and 0% under another.

  • Zero-rated exports and reverse-charged intra-EU sales get their own code, not the standard-rate fallback
  • Commerce's tax is never sent as its own line: Twinfield derives it, and both would charge it twice

It refuses rather than guess

Every document is reconciled against what the customer actually paid before anything is sent. A cent or two goes to a visible Rounding line; anything larger fails the build and names the adjustment types it could not express.

  • Books that reconcile and are wrong cost more than a support ticket

Twinfield knows when it is paid

A bank statement is matched to an invoice in Twinfield, so for transfers and on-account orders Twinfield knows before Craft does. Twinsies reads the open value back and can move the order's status or record a Commerce payment.

  • A concept invoice has no open value to read, and Twinsies says so rather than leaving every invoice looking unpaid

Refunds credit themselves

A Commerce refund posts a credit document. A partial refund is apportioned across the order's VAT codes in proportion to their value — the only split that leaves the VAT return right without inventing facts about what came back.

The reason, not just the refusal

Twinfield reports rejections inside a 200 OK, as attributes on whichever tag it disliked — the response body is the only place the reason ever appears. Twinsies keeps every request and response, with access tokens redacted.

In Dutch, properly

The whole control panel interface is translated in Twinfield's own vocabulary rather than literally: administratie, dagboek, debiteur, grootboekrekening, afletteren, creditfactuur.

  • No ext-soap required — the envelopes are built over the HTTP client Craft already ships

Frequently Asked Questions

The questions worth answering before you install it.

Stop rekeying orders into the books

$149, one edition, everything included. Start on concept invoices, check what comes out, then switch it on properly.