Accounting logic

An export covers documents, not orders. Each order can produce three types of entries, each in its own journal and at its own date:

DocumentJournal (default)Exported in the period when…
InvoiceSalesthe order is created (with an exported status)
PaymentPaymentsthe order is paid, if its invoice is already exported or is exported in the same run
Credit noteCredit notesthe refund is created, same condition

A payment received in February for a January order is therefore in the February export. Export periods in chronological order: a payment or a credit note is only exported once its invoice has been exported.

Invoice entry

AccountSideAmount
Customer (collective or individual)DebitTotal including tax
Sales (per category, or default account)CreditGross amount excluding tax, before discount, per account
DiscountsDebitDiscount amount, if any
ShippingCreditShipping excluding tax, if any
Additional feesCredit (or debit if negative)Total of the order fees
VAT (OSS, tax class or default)CreditOne line per rate

Sales are booked at their full amount excluding tax and the discount is kept on its own account, as most accountants ask. The entry is always balanced: total debit = total including tax + discount = total credit.

Rounding. Amounts are computed in whole cents. When WooCommerce stores more than two decimals (prices entered including tax, VAT rounded at subtotal level), the rounding remainder, 5 cents at most, is absorbed by the largest sales line; VAT, shipping and customer stay exact. Beyond that, the invoice is refused: the order exports no document, is not locked, and is flagged in the admin.

DATEV works differently: amounts are exported including VAT and DATEV calculates the tax. See DATEV: gross amounts.

Payment entry

Generated when the order is paid, its gateway has a treasury account and the total is positive:

AccountWithout feeWith fee
Treasury (bank)Debit: total including taxDebit: total − fee (net received)
Payment gateway fees—Debit: fee
CustomerCredit: total including taxCredit: total including tax

The fee is read in this order: the woo_accounting_export_gateway_fee filter, the meta named in the settings, then the gateway’s known meta (_stripe_fee for Stripe, PayPal Transaction Fee for PayPal, _ppcp_paypal_fees for PayPal Payments). No fee is ever invented: a missing, negative, non-numeric amount, or one greater than or equal to the total, is ignored, and invalid cases are flagged. Check the key on a real order: it depends on the version of the payment plugin.

add_filter( 'woo_accounting_export_gateway_fee', function ( $fee, WC_Order $order, string $gateway_id ) {
    return 'my_gateway' === $gateway_id ? (float) $order->get_meta( '_my_fee' ) : $fee;
}, 10, 3 );

Choice of the VAT account

  1. OSS: if enabled, the billing country differs from the home country and an account is set for that country.
  2. Tax class: otherwise, the account mapped to the line’s tax class.
  3. Default account: otherwise.

Currencies

The plugin assumes a single currency and does not convert. A document in a currency other than the shop’s is exported with its original amounts and flagged in the history.

Default accounts by chart

The accounts used depend on the chart applied with the setup wizard (Germany SKR03 / SKR04, United Kingdom, Belgium, France): see the table in Settings. Whatever the chart, every account can be changed in the settings.

Mis à jour le 12 octobre 2026

Cette page ne répond pas à votre question ? Notre équipe vous aide.

Contacter le support