The unglamorous part of commerce, finally handled.
Orders, inventory, customers, multi-region tax and a real admin dashboard — one stack you can build your storefront against, and the people running the store can actually use.
One stack for the parts of commerce that aren't your differentiator.
Persevo owns the parts of running a store that look the same across every brand: order state, inventory accounting, regional tax, webhook plumbing.
Catalogue & inventory
Track stock by SKU and location. Reserve units at cart, release on expiry, decrement on payment — the boring choreography, automated.
Order lifecycle
Cart → payment → fulfilment → delivery, with every state transition persisted and webhook-broadcast for downstream systems.
Multi-region with tax
Configure tax rules per region — VAT, GST, sales tax — and they apply at the line-item level at checkout, on the dashboard and in reports.
Multi-currency
Price products in any currency, settle in another. Currency conversion is consistent from product page through to refund.
Customers & accounts
Persistent customer records, address books, order history and self-service account flows — without re-implementing auth.
Webhooks everywhere
Every state change fires a signed webhook. Plug in your warehouse, your CRM, your spreadsheet — Persevo doesn't care.
Admin dashboard
Ops, support and finance get a UI tuned to their work — order search, refunds, inventory adjustments, exports, all keyboard-navigable.
Store + Admin APIs
A public Store API for your storefront, an Admin API for internal tools. Both REST, both versioned, both documented end-to-end.
Two REST surfaces, one source of truth.
A public Store API for your storefront — products, prices, carts. An Admin API for ops and integrations — orders, refunds, inventory, customers. Both versioned, both documented in OpenAPI.
GET /admin/v1/orders?limit=3&status=paid
authorization: Bearer sk_admin_live_…
200 OK
{
"data": [
{
"id": "ord_84F2",
"created": "2026-05-28T14:22:41.108Z",
"status": "paid",
"currency": "EUR",
"subtotal": 8500,
"tax": 400,
"total": 8900,
"customer": { "id": "cus_01HX2K90QN8B7G3R5V2F1MD4XY", "email": "buyer@example.com" },
"region": "DE",
"payment": { "method": "apple_pay", "card_network": "visa" },
"items": [
{ "sku": "engraved-pen-walnut", "qty": 1, "price": 8500 }
],
"fulfilment": { "status": "queued", "location": "wh_eu_plovdiv" }
},
{ "id": "ord_84F1", "status": "paid", "total": 3400, "currency": "EUR" },
{ "id": "ord_84F0", "status": "shipped", "total": 12640, "currency": "EUR" }
],
"has_more": true,
"next_cursor": "ord_84EF"
}Webhook events
Every meaningful state transition fires a signed HTTPS webhook. Retried with exponential backoff for 24 hours and replayable from the admin dashboard.
Cart confirmed, awaiting payment.
Payment authorised and captured.
Fulfilment marked dispatched.
Carrier reported delivery.
Full or partial refund issued.
SKU dropped below configured threshold.
One deployment, one source of truth, many markets.
Sell in multiple countries from a single backbone. Configure tax rules per region, default currencies per market, and shipping zones per warehouse — all on one set of products, one set of orders, one place to do support.
- Per-region tax (VAT, GST, sales tax) applied at the line-item level
- Per-market default currency, with override at cart
- Stock locations with warehouse-level inventory
- Hosted in European data centres, GDPR-ready data residency
Add any country at any time
Operational at the shape of real stores.
Stop rebuilding the parts of commerce nobody buys you for.
Bring your products, your markets and your fulfilment model. We'll plug them into the backbone and show you what your storefront has left to do.