Pay by invoice in WooCommerce: B2B terms without opening the floodgates

Your wholesale customers expect "pay by invoice, net 30". Your retail customers should never see that option. WooCommerce treats every gateway as for-everyone - B2B invoice terms need a rule layer.

The B2B payment problem

The default: every customer sees the same gateways - card, PayPal, COD. Adding "invoice" as a gateway shows it to everyone, which invites either abuse (retail customers ordering without paying) or confusion.

The requirement: invoice terms exist for qualified business buyers, invisible to everyone else, with conditions on top.

The rules that make it safe

  • Role gating - the invoice option appears for wholesale/B2B accounts only. Retail sees normal gateways.
  • Order conditions - a minimum order amount for invoicing ("net 30 from €200"), or a cap ("invoice up to €5,000").
  • Account standing - new accounts prepay their first orders; established accounts earn terms. Rules can encode "invoice allowed after N paid orders".
  • Terms on the order - the payment due date and terms travel on the order record and emails, not in a shared doc.

What the invoice flow looks like

  1. Qualified customer chooses "Pay by invoice" at checkout.
  2. Order is created on terms (on-hold or a dedicated status), invoice issued.
  3. Net-30 clock runs; reminders tie into your payment-reminder flow if the invoice ages.
  4. Payment arrives by transfer; order completes.

The invoice option is a gateway with rules - when the customer does not qualify, it simply is not there.

Pitfalls

  • Invoice visible to everyone - the most common and most abused mistake.
  • No minimum - a €9 invoice order costs more in administration than it earns.
  • Terms in email only - the order record should carry due date and terms so follow-up is structured, not remembered.

B2B Invoice Payment Rules implements the rule layer: invoice gateway gated by role, total, and standing - terms surfaced on the order, retail customers untouched.