Waver for Craft CMS

Free for Craft Commerce 5

Your orders, already in your books

Wave is free accounting software with a real API, and a great many small Commerce stores keep their books in it by hand. Moving an order across is easy. Accounting for one — taking tax back out of a price that included it, booking a discount so it reduces income, balancing the entry to the cent — is the part nobody does. Waver does that part.

Waver

One order, one balanced entry

A completed order becomes a money transaction in Wave: a deposit into the account the money actually landed in, split across the accounts it belongs to. The lines balance the deposit exactly — Wave rejects an entry where they don't, and accepts one that balances for the wrong reason.

twig
Order #A1B2C3                          DEPOSIT  $178.45  →  Business Checking

  Items          Sales                                        credit   150.00
  Shipping       Shipping Income                              credit     9.95
  Sales tax      Sales Tax                                    credit    30.50
  Discounts      Discounts                     debit  12.00
                                                              ─────────────────
                                                              drift      0.00

Features

A real accounting entry on the accounts you mapped — not a number pushed into a memo field.

Tax that was inside the price

Commerce keeps included tax inside the item subtotal, where it does not move the order total. Book that subtotal straight to sales and you have recorded somebody else's tax as revenue.

  • Waver subtracts it and books the liability
  • The order total is identical either way — which is why it goes unnoticed

Discounts on the right side

Wave's INCREASE inverts on contra accounts, so recording more discount on a Discount-subtype account is a debit — less income. Waver books it that way, which is why a discount shows in the debit column.

It balances, or it doesn't go

Every entry is checked against the order total before it is sent. Sub-cent rounding goes to a rounding account; anything larger is not rounding, and the entry is refused with the drift reported.

  • Preview any order and see the exact rows first
  • The preview is built by the same code the real sync uses

Never posts the same money twice

The id on every record is derived from the order rather than randomly generated, with a unique index behind it. Two queue workers racing the same order: one wins, one stands down.

Honest when it cannot know

Wave's API cannot read a money transaction back — there is no transactions query at all. So when a send goes unanswered, Waver stops and tells you, rather than retrying and doubling your revenue in the one case nobody can detect afterwards.

  • Ask Wave resolves invoices, which can be found by number
  • Mark as recorded or Force resend, behind their own permission

Invoices, when you want the document

Pro creates a Wave invoice instead — approved, marked paid and emailed by Wave, with your Commerce products and tax rates mapped across. It also tells you plainly what an invoice cannot represent.

  • Every Wave invoice line needs a product; Waver creates and maps them
  • Wave has no order-level charge, so shipping is refused rather than dropped

Frequently Asked Questions

The questions worth answering before you install it.

Start free, upgrade when you need to

Lite records every order as a balanced money transaction, automatically, for nothing. Pro is $99 with a $49/year renewal, and adds invoices, refunds, status triggers, per-gateway accounts and the full connection log.