One keystroke. One scan event. Done.
The receive scan is the warehouse control loop. Scan the AWB, the return ID, the tracking number, or the forward shipment ID — Robnu resolves to the right OrderReturn, flips internal_status to received, and writes an append-only return_scan_events row.
- Scan-resolver service handles four input modes: AWB, return ID, tracking number, forward shipment ID.
- POST /v1/returns/scan is idempotent — a second scan on the same parcel is a safe no-op.
- Ctrl/Cmd+K opens the global scan/search topbar from anywhere in the app.
What you get.
Four resolution modes
Auto, Scan, Order, Return, Shipment, Payout. The Auto mode tries each in turn; the explicit modes constrain the resolution surface so a barcode that could mean two things resolves predictably.
Idempotent by design
A second scan on the same parcel writes a duplicate event but doesn't double-flip. The receive_at timestamp is the first scan; subsequent scans are audit-only.
Permission-scoped
returns:scan permission gates the action. Warehouse operators get scan-only access; finance and OWNER get the full surface.
Scan + search API surface.
- POST /v1/returns/scan — submit a scan; flips status, writes event.
- GET /v1/returns/scan/resolve — preview a scan input without writing.
- GET /v1/search — global search across orders / returns / shipments / payouts.
Practical answers.
Multi-leg returns track each leg as a ReturnAwb row. The scan resolves to the canonical OrderReturn regardless of which leg was scanned. The event row records the specific AWB used.
Yes. The scan input accepts keyboard input (the standard barcode-reader interface). The Ctrl/Cmd+K topbar control focuses the input from anywhere.
The scan still flips internal_status to received; you then add a damage note that surfaces in the OrderReturn detail page. Damaged returns can still feed claims if the carrier is at fault.
Try it inside your own dashboard.
Free during early access. No card. Forever free under 25 orders/day.
