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
- Qualified customer chooses "Pay by invoice" at checkout.
- Order is created on terms (on-hold or a dedicated status), invoice issued.
- Net-30 clock runs; reminders tie into your payment-reminder flow if the invoice ages.
- 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.