We are the storefront.
You run the brand.
VATFlow hosts your shop and your back-office on one platform: products with full size/colour variants, multi-warehouse inventory, the whole order lifecycle, and fulfilment handed to your own carrier. Brands migrate to us — we do not connect to Shopify or WooCommerce.
One platform from cart to delivery. Every state change audit-logged.
Your shop and checkout live on our platform.
No theme engine to wrestle, no app store to babysit. You bring the catalogue and the brand; we run the storefront, the cart, and the checkout that feeds the VAT engine and the order ledger.
Hosted store
Your storefront and checkout run on our platform — no separate hosting, no plugins to patch.
You migrate to us
Import your catalogue and customers once. We are the store, not a connector bolted onto one.
Mock checkout, real flow
Phase 1 ships a mock checkout so the cart→VAT→invoice→fulfil→track loop is demoable end to end.
One audit trail
Every order, edit, and refund writes an immutable AuditLog entry — who, what, before, after, when.
Migrating from another store? You move once. We are not a plugin for Shopify or Woo — we replace them.
Products with a real size/colour matrix.
Fashion catalogues are a grid, not a flat list. VATFlow models the size × colour matrix natively, so a single tee becomes every SKU it should be — each priced, stocked, and tracked on its own.
Size × colour variant matrix
Define a product once, then expand it across the full size and colour grid. Each cell is its own SKU with its own price, barcode, and stock.
SKU-level inventory
Stock is tracked per variant, per warehouse — not per product. The matrix UI shows exactly where every size and colour sits.
Decimal-exact pricing
Every money field is Decimal128, never a float. Net prices stay precise from the variant row through to the VAT line on the invoice.
| Colour \ Size | S | M | L | XL |
|---|---|---|---|---|
| Black | 12 | 28 | 19 | 4 |
| Sand | 7 | 15 | 0 | 9 |
| Forest | 21 | 33 | 11 | 6 |
Cells show on-hand units. A 0 is out of stock at this warehouse — not across the brand.
Stock lives in warehouses, not in a single bucket.
Run as many warehouses as your supply chain needs. Inventory is tracked per SKU per location, carriers are configured per warehouse, and a reconciliation job keeps the count honest.
Multi-warehouse
Hold stock across as many warehouses as you run — UK, EU, or third-country — each with its own address and carriers.
Per-warehouse carriers
Configure which shipping partners a warehouse can use. Fulfilment routes from the warehouse that holds the stock.
Reconciliation job
A periodic job reconciles counts so the ledger and the shelf agree — the MongoDB-for-finance mitigation, made operational.
One order, five accountable steps.
The lifecycle is a single chain on our platform: each stage writes an audit entry and feeds the next, so the VAT figure on the invoice is the same one the customer paid and the one you file.
- 01
Cart
A customer checks out on your hosted storefront.
- 02
VAT
The engine resolves place of supply, scheme, and rate — before payment.
- 03
Invoice
A compliant PDF invoice is generated (a credit note on return).
- 04
Fulfil
The order is handed to your carrier; a label and AWB come back.
- 05
Track
Carrier events surface on your own tracking page — they never leave.
The VAT step is the legally-risky core — see exactly how it classifies. How the tax engine works
Bring your own carrier. Keep your tracking page.
Shiprocket, DHL Express, UPS, Royal Mail, and FedEx each sit behind one common ShippingProvider interface. Configure carriers per warehouse; we orchestrate labels, AWBs, and manifests, then pull every status event back onto your own tracking page. The customer never leaves.
- Shiprocket
- DHL Express
- UPS
- Royal Mail
- FedEx
Swap the mock provider for a production one — the interface stays the same.
- 09:02Label createdDHL Express
- 11:40CollectedManifest #M-0218
- 14:55In transitLeipzig DE
- —Out for deliverypending
- —Deliveredpending
Hosted storefront, or build your own on the API.
Use the storefront we host, or drive the same orders, products, inventory, and VAT through our public REST API. Either way the order lands in one lifecycle, one audit trail, one ledger — the platform stays the system of record.
One inventory
Storefront and API orders draw from the same per-warehouse stock — no double-selling the last unit.
One VAT engine
An API order is classified by the same rules as a storefront order: place of supply, scheme, rate.
One order ledger
However an order arrives, it lands in the same lifecycle with the same audit trail and invoice.
API keys, rate limits, and webhooks are documented for builders. Read the developer docs
Move your shop onto a platform that owns the whole order.
Import your catalogue, set up your warehouses, and pick your carriers. The VAT and the tracking are handled — and they stay on your platform.