The problem: why do Nhanh.vn order and inventory numbers in Sheets so often drift?
They drift because a manual Nhanh.vn report export is a snapshot, while orders and stock change by the minute across many stores. The person filtering by hand also has to decide which orders belong to Facebook and which to Website, and everyone does it differently.
A familiar situation: the shop owner asks "how much did Facebook sell this week, and how many size M shirts are left in the Hanoi warehouse?" Staff spend half a morning exporting two files, filtering and pasting into Sheets. By the time it is sent, the stock has changed.
Two jobs need to be kept apart: an order table by sales channel, and an inventory table by warehouse. Both should come straight from the Nhanh.vn API.
Thinking leads the way: what data do you need, and how do you read it correctly?
Nhanh.vn orders and inventory come from different APIs, and each API has a few fields that are easy to misread. The table below matches questions to sources.
| Question | Nhanh v3 API | Which field to read |
|---|---|---|
| Which channel sold how much? | order/list |
saleChannel, order source, status |
| How much stock is left in each warehouse? | product/list |
the per-warehouse inventory object of each product |
| Which store is a warehouse ID in the inventory? | business/depot |
warehouse name and address |
| How much did retail stores collect? | bill/list |
retail bills, stock in and out |
Three traps that have produced wrong reports:
saleChannel = 1means "Admin", not Facebook. These are orders staff create by hand in Nhanh. They may come from Facebook, Shopee chat, customer care or Website, and you tell them apart by order source. Treating every Admin order as Facebook inflates the Facebook channel. The processed table from 360 has achannelcolumn classified by the brand's channel configuration; orders that cannot be classified stay blank, with no guessing.- The shipping fee is a quote until handover.
carrier.shipFeeis calculated when the waybill is created. It only becomes a real cost once the order has been handed to the carrier (sendCarrierAt > 0). A "Thành công" (Successful) order with a waybill number may still never have reached the carrier. - Nhanh.vn has no "returned order" in the marketplace sense. The statuses Xác nhận hoàn (Return confirmed), Đang chuyển hoàn (Returning), Đã chuyển hoàn (Returned to sender) and Thất bại (Failed) all mean goods going back to the seller. The 360 table records them all as
delivery_failed. Do not add them to the return rate when comparing with Shopee or TikTok Shop.
AI speeds it up: how long does setup take, and what are the steps?
The order table takes about 15 minutes and needs no code. The inventory table needs a small workflow, about 30 minutes if you use n8n.
Scheduled order table
- Sign up at Quantri360 Partner and turn on two-factor authentication.
- Go to the Nhanh.vn platform and authorize your Nhanh business.
- Destinations → Google Sheets → sign in to Google; leave the spreadsheet field blank and the system creates a new sheet.
- Connections: Nhanh.vn → "Đơn hàng Nhanh.vn (đã xử lý)" (Nhanh.vn orders, processed) → Sheets destination → an hourly, daily or weekly schedule. You can filter by status.
Each row is one product in an order, including channel, status, province, carrier, waybill number, price and discount. The automatic schedule is a paid add-on: see the pricing.
Inventory table by warehouse
The ready-made connection type "Tồn kho Nhanh.vn" (Nhanh.vn inventory) is currently "Coming soon". For now, pull inventory with the Nhanh API through 360:
curl -s -X POST "https://partner.quantri360.com/v1/nhanh/v3.0/product/list" \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"paginator":{"size":50}}'
Each product comes with an inventory object holding stock per warehouse. In n8n: schedule at 07:00 → HTTP Request calling product/list, looping on paginator.next → split by product and warehouse → write to Google Sheets (clear the old tab and rewrite so it always holds the latest numbers). Call business/depot once to turn warehouse IDs into store names. A Nhanh order workflow template is available under Docs after you log in; for inventory, change its HTTP node to product/list.
Use AI to read the table. Put the two tabs side by side and ask ChatGPT or Claude:
"The Orders tab holds Nhanh orders for the last 14 days, and the Stock tab holds current stock by warehouse. For each product code and warehouse, calculate days of stock remaining = stock ÷ (quantity sold in 14 days ÷ 14). List the codes under 7 days. Skip rows with status = delivery_failed or cancelled."
You settle the definition of "sold" in your question. AI just does the calculation quickly and consistently.
Measurable results
Record the three metrics below over the first two weeks, compared with the old way. You need no outside tools, only the table and the run log.
- Staff hours: the time spent exporting, filtering and pasting two files each week, before and after having an automatic table.
- Inventory latency: the time of the latest workflow run compared with when you read the table. Running daily at 07:00, the numbers are at most one day old; if you need them closer, run hourly.
- Discrepancies found: the number of Admin orders previously counted as Facebook, the number of orders with a quoted shipping fee not yet handed over, and the number of failed delivery rows once called returns.
If you also sell on marketplaces, see Shopee orders in Google Sheets. To send a Zalo message when a Nhanh order changes status, see ZNS by order status.
Related APIs
- order/list: order list filtered by creation date, update date or order ID.
- product/list: product list with stock per warehouse.
- product/detail: details of one product for individual lookups.
- business/depot: list of warehouses and stores.
- bill/list: retail bills and stock in/out slips.
Read more: business process automation, the overview article for this topic.