Business Credit
The credit-customer platform for Vendure B2B: applications, invitations and auto-approval, per-customer limits with an audit trail, multi-user company accounts, Pay on Account with net-terms invoices, prepaid funds, settlements by any method with Stripe pay links, payment plans, statements, dunning and a reward-points programme — in one admin dashboard and one storefront API.
What it does
Built for production from day one.
Vendure has no concept of a credit account. Business buyers expect one: apply for terms, get a limit, order without a card, receive an invoice due in 30 days, pay by bank transfer or card when the statement arrives. Business Credit adds all of it server-side. Customers apply from the storefront; you approve with a limit and net terms. A `business-credit` payment handler and eligibility checker show Pay on Account only to customers with an active account and enough available credit, and issue a numbered invoice with a due date the moment the order is placed. Every settlement — bank transfer, card through a Stripe pay link, direct debit, cheque, cash, credit note or write-off — is allocated oldest-first across open invoices, with overpayments held as account credit. Limits can be raised permanently or temporarily with an expiry, every change logged with who and why. A daily run marks invoices overdue, sends reminders on a schedule you set, applies late fees if you want them, suspends accounts that go too far past due, and emails monthly statements with an aging summary. Customers see their limit, available credit, invoices and statements through a small REST API you can drop into any storefront. Customers can also pay money in ahead of time: prepaid funds are held on the account and settle new orders the moment they are placed. Companies can add colleagues to one account with buyer or viewer roles, you can invite a business straight to an approved account by email, applications that meet your rules are approved automatically, every account gets a review date, an overdue invoice can be put on an instalment plan, and an optional reward-points programme earns points on every paid order and lets customers spend them at checkout.
Credit applications and approvals
A storefront application form (company, registration and VAT numbers, requested limit and terms, trade references) lands in an admin queue. Approve with a limit and net terms, or reject with a note; the customer is emailed either way and the account is created on approval.
Limits with an audit trail
Permanent or temporary limit changes (a temporary increase expires on a date you set), each recorded with the old value, new value, reason and administrator. Available credit is derived live: effective limit minus open invoices plus any credit balance.
Pay on Account at checkout
The `business-credit` payment handler settles the order and issues a numbered invoice with a due date; the eligibility checker hides the method from customers without an active account, enough available credit, or with an overdue hold. Purchase-order numbers can be required.
Settlements by any method
Record bank transfers, direct debits, cheques, cash, credit notes and write-offs, or send a Stripe pay link for card payment; the signed webhook records the settlement. Allocation is oldest-first or explicit per invoice; overpayment becomes account credit and is applied to the next invoices automatically.
Statements with aging
Per-account statements for any period: opening balance, every charge and payment, closing balance, and aging buckets (current, 1–30, 31–60, 61–90, 90+). HTML for the admin and the customer, emailed monthly on the statement day.
Reminders, late fees, auto-suspend
A daily run sends reminders before, on and after the due date on a schedule you set per channel, applies a monthly late fee pro rata if configured, and suspends accounts that go more than N days overdue — reactivate with one click once they pay.
Prepaid funds
Customers top up by card from the storefront or you record a deposit; the money is held on the account and settles invoices and new on-account orders automatically. Prepaid-only accounts work with a zero credit limit.
Company accounts, invitations and auto-approval
One account, several logins: owners add colleagues as buyers or viewers. Invite a business by email straight to an approved limit. Applications that meet your rules — company number, order history, spend — are approved on the spot. Every account carries a review date.
Payment plans
Split an outstanding invoice into instalments with their own due dates; reminders and overdue logic follow the plan, late fees pause, and customers can request a plan from their account.
Reward points
An optional loyalty programme per channel: points per pound with tiers and multipliers, redeemed at checkout as a discount, with expiry, adjustments, statements and a customer points page.
Customer-facing REST API
`/business-credit/my/*` gives your storefront the account summary, funds, invoices, statements, pay links, team members, invitations, payment-plan requests and reward points for the signed-in customer, plus the application form. Works with Qwik, Next.js, Remix or plain fetch.
Admin dashboard
Overview (exposure, overdue, credit held, due this week, aging), Accounts with a full detail panel, Applications queue, Invoices, Settlements, Settings with email preview and a run-now button, plus the Licence & billing card. Light and dark themes.
MySQL, MariaDB & PostgreSQL
The plugin follows whatever database your Vendure `dbConnectionOptions` use — no configuration. Verified against PostgreSQL 17; MySQL/MariaDB installs are unchanged.
Buy & activate from the admin
Start the 14-day free trial, subscribe or buy lifetime from the plugin's admin page — checkout opens in a new tab and the key installs itself within a minute, renewals included. The same card shows your plan, first-charge date and a <strong>Manage billing</strong> link to the Stripe portal (update card, cancel, switch plan). Already have a key? Paste it into the same banner. No `.env` edit, no redeploy; environment keys still take precedence for infrastructure-as-code setups.
One-click in-app updates
When a new version ships, an update banner shows current → latest with a What's-new link to the changelog. "Update now" installs the registry-verified release via your project's own package manager (yarn/npm/pnpm auto-detected) and gracefully restarts under pm2/systemd. Disable with `HULO_SELF_UPDATE=off`.
Install
Three steps, five minutes.
Add the package
Or run the one-line installer that does steps 1–3 for you:
Prefer to do it by hand?
Register it
In your vendure-config.ts:
Compile the admin UI
Add the extension to your compileUiExtensions call so the plugin's page appears in the admin:
That's it. Restart Vendure and the plugin's page is in the admin. Without a key it runs in the free tier; open the page and click Start 14-day free trial to switch everything on — the key installs itself, no .env edit, no redeploy.
Free tier vs licensed
Try the whole thing, keep the core for free.
Install without a key and everything on the left works indefinitely. The 14-day trial switches the right-hand column on with your real traffic; a licence keeps it on.
Free, no key
- Accounts and credit limits with the audit trail
- Pay-on-Account handler and eligibility checker
- Invoices, manual settlements and allocation, the ledger
- Statements (view), review dates, the admin dashboard
Trial + licensed
- Stripe card pay links and top-ups
- Reminders, dunning emails, late fees, auto-suspend
- Statement emails and CSV exports
- Storefront applications, invitations, auto-approval
- Company members, payment plans, reward points
HTTP endpoints
Every route exposed.
/business-credit/dashboardAdmin: exposure, overdue, aging, top accounts/business-credit/accountsAdmin: accounts with availability/business-credit/accounts/:id/limitAdmin: permanent or temporary limit change/business-credit/accounts/:id/statusAdmin: suspend / reactivate / close/business-credit/applicationsAdmin: credit application queue/business-credit/applications/:id/approveAdmin: approve with limit + terms/business-credit/invoicesAdmin: invoices with balance + days overdue/business-credit/settlementsAdmin: record a settlement (any method)/business-credit/invoices/:id/pay-linkAdmin: Stripe pay link for an invoice/business-credit/stripe-webhookStripe: signed webhook for card settlements/business-credit/accounts/:id/statementAdmin: statement for a period/business-credit/dunning/runAdmin: run reminders / fees / suspensions now/business-credit/my/accountShop: limit, available credit, terms, status/business-credit/my/applyShop: apply for a credit account/business-credit/my/invoicesShop: my invoices/business-credit/my/invoices/pay-linkShop: pay selected invoices by card/business-credit/my/top-upShop: add prepaid funds by card/business-credit/my/membersShop: add a colleague to the company account/business-credit/my/invitations/acceptShop: accept an invitation to an approved account/business-credit/invitationsAdmin: invite a business by email/business-credit/invoices/:id/planAdmin: put an invoice on an instalment plan/business-credit/my/loyalty/redeemShop: spend reward points on the active order/business-credit/loyalty/statsAdmin: points outstanding, earned and redeemed/business-credit/licence/statusAdmin: licence + evaluation + update status/business-credit/licence/activateAdmin: activate a licence key from the admin UI/business-credit/update/runAdmin: one-click in-app update + graceful restartFAQ
Common questions.
How do I get a licence key?
Buy here — Stripe Checkout — monthly, annual (two months free) or lifetime. You'll receive the JWT key by email. Paste it into the plugin's admin settings (Activate) — no redeploy — or set it as HULO_LICENCE_KEY_BUSINESS_CREDIT in your .env if you prefer config-as-code; the env key wins when both are present.
Does it work without a key?
Yes — every subscription starts with a 14-day free trial. Install the plugin, open its admin page and click Start 14-day free trial: a card is required, nothing is charged until day 15, and you can cancel any time before then. The licence installs itself and every premium feature is on for the whole trial with your real traffic.
Which databases are supported?
MySQL, MariaDB and PostgreSQL (verified against PostgreSQL 17). The plugin follows your Vendure dbConnectionOptions automatically — there is nothing to configure.
How do updates work?
The plugin checks the npm registry daily. When a newer version exists, the admin dashboard shows an update banner with a What's-new link to the changelog and an "Update now" button that installs the registry-verified release via your own package manager and gracefully restarts under your process supervisor. Prefer manual control? Copy the install command instead, or set HULO_SELF_UPDATE=off.
Where is data stored?
In your Vendure database. The plugin adds its own tables (created on boot, or via a migration for the plugins that register entities) — your data never leaves your server.
Will it survive a Vendure upgrade?
Tested against Vendure >=3.5.0 <4.0.0 — 3.5, 3.6 and 3.7 are all covered by CI. A boot-time compatibility check emits a non-fatal warning if @vendure/core is outside that range, so upgrades to a future 3.x are safe to try. The 4.0 line will be tested and re-declared once its changelog lands.
Ready to ship?
Install in five minutes, run the trial on real traffic, keep it if it earns its place.