Design checkout, payment and shipping

Payment methods

Invoice, prepayment, card and PayPal: how methods, providers and fees are configured, and which of them B2B uses.

Most B2B revenue is still collected on an invoice after delivery. The card and wallet methods matter for new customers, small orders and cash-in-advance business. If you configure nothing else, configure invoice properly.

Before you begin. Decide which methods you offer to which customers and above which order value. If you are using a payment service provider, have its credentials ready: they are stored write-only and cannot be read back afterwards.

Two kinds of method

KindWho collects the moneyExamples
Self-managedYou do. The platform records the intent; your bank and your accounting do the restInvoice (Kauf auf Rechnung), prepayment (Vorkasse), direct debit you run yourself
PSP-backedA payment service provider does, through a driverCard, PayPal, and the provider's other methods

Self-managed methods authorise immediately, because there is nothing to ask. PSP methods can require the buyer to do something (a redirect, a 3-D Secure step), and the payment finishes when the buyer comes back.

For a Mittelstand wholesaler the realistic set is: invoice for established customers with a credit check behind it, prepayment for new customers and export orders, and one card method so a first-time buyer is not turned away.

What a method carries

Each method is a row under Order Management › Payments › Methods:

FieldWhat it does
code, nameThe stable identifier and the label a buyer sees. labels holds translations
kindSelf-managed or PSP
provider, provider_methodWhich PSP serves it, and which of that PSP's methods
enabledWhether it is offered at all
positionThe order methods appear in at checkout
fee_type, fee_amount, fee_currencyA surcharge: none, a fixed amount, or a percentage
countriesRestrict to specific countries
min_order_value, max_order_valueRestrict by order value

The three restriction dimensions are combined with AND, values inside one dimension with OR, and an empty dimension means unrestricted. So invoice, only for German buyers, only above €50 is countries: DE plus a minimum value, which is the classic setup.

Eligibility is evaluated server-side

The checkout asks which methods apply for this country, amount and currency and receives only those, with fees already computed. The same evaluation runs again when the payment is created, so hiding a method in the storefront is not a control and showing one is not a permission.

That is the answer to "the buyer sees a method they should not": look at the country list and the value bounds on the method rather than at the theme.

Providers

A PSP is a row under Order Management › Payments › Providers. Adding one means adding credentials, and no code changes.

Credentials and webhook secrets are write-only. They are accepted, stored for the driver, and never returned: the Cockpit cannot show you the value you saved. Rotating a secret means writing the new one. Keep your own record of what is configured where; there is no route that reads it back.

New provider rows arrive disabled and in test mode. That is deliberate: a provider nobody has configured must not transact. Run your test transactions, then turn test mode off and enable it, in that order.

Disabling a provider is usually what you meant instead of deleting it. Only the create path reads enabled, so a disabled provider takes no new payments while every capture, cancellation and refund on the payments it already holds keeps working. Deleting one that payments still name is refused, with the count.

Fees

fee_type is none, fixed or percent. Whether the computed fee is shown gross or net is a tenant setting, because the payments app has no tax semantics of its own. Set it to match how the rest of your shop displays prices. See Currencies and tax.

Surcharging card payments is legally restricted in the EU for consumer cards; check before you enable it rather than after.

What happens after the order

A payment runs its own lifecycle, independent of the order:

created ──► requires_action ──► authorized ──► captured ──► refunded
                    │                │
                    └─── failed      └─── cancelled

The result is reported onto the order as payment_status. When you capture is a setting: immediately on authorisation, on shipment, or by hand. Invoice and prepayment are never auto-captured, because there is nothing to capture until the money arrives.

There is no partial refund. A payment records one amount and one status, so refunded means refunded in full. A partial credit is handled in your accounting system; there is no button for it here. Plan for that before you promise a customer a 30 % credit against a card payment.

The dunning clock

Invoice and prepayment are money that is owed and has not arrived. A daily scan classifies every unpaid self-managed payment against two thresholds and stamps the row with a stage (none, reminder, overdue) and the date the next stage falls due. Capture, cancellation, refund and a provider callback all stop the clock.

It classifies; it does not send. The reminder mail is yours to send, driven off the stage. Order Management › Payments carries a Run payment scan action if you want to advance it by hand.

What to check

  1. Place a test order with each enabled method.
  2. On the order's Payment tab, confirm the payment snapshot names the method and the amount matches the grand total plus any fee.
  3. Confirm payment_status moved as you expected: open for invoice, authorized or paid for a captured card payment.
  4. Change the order value above and below a min_order_value and confirm the method appears and disappears.

Next