Commerce

Money and orders, kept honest.

Cart, checkout, order, payment and fulfilment are separate state machines in Via. An order is created exactly once, keeps a snapshot of what was sold, and only changes through audited actions.

Payments

Three ways to get paid in Egypt, one truth.

InstaPay, operator-verified Live

The customer transfers to your InstaPay destination and submits the reference. Your operator confirms it in Admin against the bank statement with the bank reference. Only then is the order paid. Evidence alone never pays.

Card via ODX Per store

Card payments run on a hosted page through ODX-managed routing. Via receives the outcome and a masked reference; card numbers and security codes never reach Via. Your store is switched to the live merchant with you.

Cash on delivery Available

Switched on per store in Admin. The order is placed unpaid, shipped, and marked paid when the cash is collected. Unpaid orders sit in their own queue.

DoesWhat it does

  • Cart and checkout with delivery fee by governorate
  • Payment attempt per method; the amount always comes from the Via order, never from the browser
  • Discount codes applied at checkout
  • Idempotent order submission: a retried checkout cannot create a second order
  • Test orders flagged as tests at the source

AdminHow you see it in Via Admin

  • Orders › All, Paid, Unpaid, Holds, Fulfilled
  • Payments › Transactions, Verification, Refunds, Payment Methods
  • Settings › Payment Methods (enable cash on delivery, set the InstaPay destination)

YouWhat you provide

  • Your InstaPay receiving destination, entered by you or the Founder, never read aloud
  • Your decision on cash on delivery per store
  • A real card and address for the first real order after Launch

ODXWhat ODX operates

  • Card acceptance and provider callbacks, authenticated by signature, idempotent, retry-safe
  • Payment gateway secrets by name on the server
  • Refund records against captured payments

Orders and fulfilment

From paid to delivered, step by step.

Courier handoff is a set of buttons your team presses, each one audited and each one emailing the customer. No courier API is needed to go live; it is a later adapter, not a blocker.

Create shipment

From a paid order: courier name and waybill. The order moves to courier assigned.

Picked up → out for delivery → delivered

Three recorded steps. Delivered marks the order fulfilled automatically.

Holds and exceptions

Orders that need a decision (address problem, payment mismatch) sit in Holds until someone acts.

Returns and exchanges

A queue, not an inbox.

Customer request

From their account on your storefront, against a delivered order line. Storefront route per store

Staff queue

Shipping & Returns › Returns, Exchanges: approve, refuse, exchange, record the refund.

Your policy

Your returns policy text is yours; the workflow is Via's.

Inventory

Movements, not a magic number.

Stock in Via is the sum of movements and reservations, so a count, a transfer or a cancelled order leaves a trail instead of overwriting a field.

Locations

Warehouse, workshop, showroom: each with its own on-hand.

Transfers

Between locations, recorded as paired movements.

Counts

Physical counts that post the difference as a movement.

Low stock

A read across locations for what to reorder or produce.

Inventory locations, transfers and counts are included from the Growth tier. Start runs a single location.

Quotes and made-to-order

For brands that do not sell off the shelf.

Quotation requests

A customer asks for a price on a configured piece; your team quotes; the accepted quote becomes an order.

Custom briefs and service requests

Brief, private files, review and result, with hashed single-use upload grants instead of public links.

Social order intake

Orders that start on Instagram or WhatsApp are recorded by your team with a payment-link handoff, and join the same order truth.

Rehearse the whole loop before you launch.

One test order, flagged as a test, from checkout to the delivered email. You see every screen your team will use.