# Order Management — GoCommerce Operations, Feature by Feature

> Running a store on GoCommerce: order timelines and edits, multi-location stock with a movement ledger, multi-parcel shipping, refunds, returns, roles, audit.

- Canonical: https://kitcommerce.store/features/operations/
- Last updated: 2026-09-25

---

Features · Operations

## Run the store from one admin, with every change on the record

Orders, stock, shipping, refunds and staff, handled from the admin compiled into the GoCommerce binary. Every stock movement lands in a ledger that reconciles, and every change says who made it.

- **12** carrier options, four of them Indian
- **11** kinds of stock movement, all on a ledger
- **15** health checks in gocommerce doctor

### Orders

- **Order timeline**

  Each order has a timeline of its events and changes, internal notes, and a log of every email and SMS sent — with a button to resend.

  `core/orders.go · Timeline`

- **Order edits**

  Add, remove or change lines; stock moves with them and the balance owed either way is reported. Contact details, address and shipments can be corrected too. Line edits stop once anything has shipped, been refunded or returned.

  `PUT /api/admin/orders/{id}/lines`

- **Unpaid orders cancel themselves**

  Every five minutes, orders still unpaid past their window (24 hours by default) are cancelled and their stock released. Staff can run the sweep on demand.

  `core/orders.go · SweepUnpaid`

- **Returns** — Partial

  Record returns per line on shipped orders, capped at what shipped, with a restock decision and location for each; refunds are a separate step. Missing: exchange orders and customer-requested returns.

  `core/returns.go`

- **Order import** — Partial

  Load order history from CSV in the store’s own layout or Shopify’s export, with a dry run. It never moves stock and fires events only when asked. Missing: mapping columns from any file.

  `core/transfer.go · ImportOrders`

### Stock and shipping

- **Stock across locations**

  Stock is held per variant per location, and one order can draw from several. Transfers move stock between locations; a picking sheet groups work by SKU and location.

  `core/inventory.go · core/locations.go`

- **A ledger that reconciles**

  Every stock change — reserve, commit, release, restock, transfer and more — is written to an append-only ledger that gocommerce doctor checks against the balances.

  `core/movements.go`

- **Shipping in several parcels**

  An order ships in any number of parcels by line and quantity, each through its own carrier: manual, Shiprocket, Delhivery, NimbusPost, India Post, Shippo, ShipStation, Easyship, Shippit, USPS, Onfleet or Veeqo.

  `core/fulfillment.go · ext/fulfill-*/`

- **Low-stock report and stock import**

  A report of variants running low, and CSV stock import that also reads Shopify’s inventory file.

  `GET /api/admin/inventory/low-stock`

- **Backorders** — Partial

  A variant can keep selling past zero and ship in parts as stock arrives. Missing: a separate backorder status and partial payment.

  `core/inventory.go`

### Money

- **Refunds through the gateway** — Partial

  Staff refund any amount up to what remains, through the gateway that took the payment, each recorded with the gateway’s id. Missing: cash-on-delivery refunds through the engine, and RevenueCat refunds.

  `core/payments.go · Refund`

- **Record payments by hand** — Partial

  Mark an order paid with a reference for cash or bank transfer, or record a failed payment. Missing: manual refund records.

  `POST /api/admin/orders/{id}/mark-paid`

- **Payouts and reports**

  Collected, refunded and net per payment method; sales and top products; saved custom SQL reports that run read-only.

  `core/reports_payouts.go · core/custom_reports.go`

### Customers and staff

- **Customer groups and price lists**

  Group customers and give each group its own prices, with dates, priority, channel and quantity breaks.

  `core/pricing.go`

- **Roles and rights** — Partial

  Four roles — owner, manager, staff, vendor — whose rights and names you can change, over 48 core rights plus those modules add; invitations and session revocation. Missing: creating roles beyond the four.

  `core/rights.go · core/roles.go`

- **Scoped API keys**

  Keys carry a role and pass the same rights checks as a person. Only owners mint them; revoked keys stay on the record.

  `core/api_keys.go`

- **Audit trail**

  Who changed what, with before and after values, and a history for products, categories, discounts, tax rates and locations.

  `core/audit.go`

- **Notifications you control**

  Edit every email and SMS template in the admin; every message is logged and can be resent. Email through Resend or SendGrid, SMS through Twilio or MSG91.

  `core/notify_templates.go`

### Not in GoCommerce yet

What a larger operation may expect and will not find in GoCommerce today.

- **Order approvals** — No approval step before an order is accepted.
- **Draft orders** — An order placed by staff is a real order at once.
- **Per-channel permissions** — Staff rights apply to the whole store.
- **Manual price overrides** — Staff cannot set one line’s price by hand.
- **Authorise-then-capture** — Gateway payments settle on the provider’s success webhook.
- **Gift cards and store credit** — No balances of any kind.
- **Single sign-on** — Staff sign in with email and password.
- **A translated admin** — The admin is in English; storefront content can be translated.
- **Click-and-collect** — No pickup option at checkout.

FAQ

### Questions about operations

**Can staff edit an order after it is placed?**

Yes, until anything has shipped, been refunded or returned: lines can be added, removed or changed, stock moves to match, and the admin reports what is owed either way. Contact details and the address can be corrected at any time.

**How do I know stock figures are right?**

Every movement is written to a ledger, and gocommerce doctor checks the ledger against the balances — from the command line, the admin or the API. A mismatch is reported, not hidden.

**Which Indian carriers are supported?**

Shiprocket, Delhivery, NimbusPost and India Post, each a module. SMS goes through MSG91 using pre-registered DLT templates, as India requires.

**Can different staff see different things?**

By role: owner, manager, staff and vendor, each with rights you can adjust. A vendor login sees only that seller’s records. Splitting access by channel is not built yet.

### Read the code behind every tile

Each file named on this page is in the GoCommerce repository, MIT licensed. Run it and check.

[Deploy in minutes](https://kitcommerce.store/#one-command) · [GoCommerce on GitHub](https://github.com/itswadesh/gocommerce) · [All features](https://kitcommerce.store/features/)
