Skip to main content

Payment Swiss Tax

Applies Swiss VAT rates to payment fees (for example an invoice or card surcharge). A payment fee charged to the buyer is part of the consideration for the supply (Art. 24 para. 1 MWSTG: "including the reimbursement of all costs, even if they are invoiced separately") and, as an ancillary supply, shares the tax treatment of the goods (Art. 19 para. 4 MWSTG). It is not an exempt financial service: the shop recovers its own costs, it does not provide a payment service.

Included in All Preset

Registered automatically by registerAllPlugins() (via registerSwissTaxPlugins() from @unchainedshop/plugins/presets/countries/ch).

Registration​

import { pluginRegistry } from '@unchainedshop/core';
import { PaymentSwissTaxPlugin } from '@unchainedshop/plugins/pricing/payment-swiss-tax';

pluginRegistry.register(PaymentSwissTaxPlugin);

How It Works​

  1. Locates the supply like Product Swiss Tax: the delivery address, else the billing address, else the country of the order or request
  2. Resolves the tax category from the payment provider configuration
  3. Falls back to the DEFAULT rate (8.1%) if not specified
  4. Extracts the tax from gross fees, adds it to net fees

Payment fees of goods delivered outside of Switzerland and Liechtenstein stay untaxed, like the goods.

Tax Categories​

Category2024+2018–20232011–20172001–2010
DEFAULT8.1%7.7%8.0%7.6%
REDUCED2.6%2.5%2.5%2.4%
SPECIAL3.8%3.7%3.8%3.6%

Rate data is shared with the Product Swiss Tax adapter (bundled ch-tax-rates.json, era-based, ESTV-verified; the rate follows the order date).

The fee follows the rate of the main supply. A shop that only sells goods at the reduced rate (for example food) sets reduced on its payment providers; for orders mixing rates, the ESTV expects the fee to be split by the share of each rate, which needs a custom adapter.

Configuration​

Set the tax category on the payment provider:

mutation ConfigurePaymentProvider {
updatePaymentProvider(
paymentProviderId: "provider-id"
paymentProvider: {
configuration: [
{ key: "swiss-tax-category", value: "default" }
]
}
) {
_id
}
}

Adapter Details​

PropertyValue
Keyshop.unchained.pricing.payment-swiss-tax
Version1.0.0
Order Index80
Sourcepricing/payment-swiss-tax/adapter.ts