Shopify manual orders vs draft orders vs bulk placement: which to use for creator orders
Three ways to put a creator order into Shopify: create it by hand, complete a draft, or place in bulk via the API. What each does to payment, stock, tags and reporting.
Part of the complete guide to barter & creator order operations on Shopify.
Every creator, barter or seeding order has to get into Shopify somehow. There are three honest ways to do it: type it into Orders → Create order, save it as a draft order and complete it later, or let a bulk tool place it through the Admin API. They look similar from the outside. Underneath, they treat payment, stock, notifications and reporting quite differently, and the right one depends almost entirely on how many you place a month.
The three paths, as Shopify exposes them
1. Orders → Create order
This is the form most operators know. You add products, pick a customer or type a new one, add a discount, choose shipping, and then either collect payment (send an invoice, take a card, or mark as paid) or save it. If you collect payment or mark it paid, Shopify creates a real order on the spot with an order number, an inventory movement and, unless you untick it, a confirmation email or SMS to the customer.
For a ₹0 creator order the usual habit is a 100% discount and then “Mark as paid”. That works, and at low volume it is perfectly fine. The cost is the two to three minutes of clicking and typing per order, every time, plus the address retyping that produces the odd wrong PIN code.
2. Draft orders → complete
A draft order is the same form, saved without finishing. It sits in Orders → Drafts with its own D-number, and nothing else happens: no order number, no inventory deduction (unless you switch on reservation), no customer notification. It becomes an order only when it is completed, which happens in one of three ways: the customer pays the invoice link, the admin marks it as paid, or the admin marks it as payment pending.
Drafts are genuinely useful when the order is not final yet: the creator has not confirmed a shade, or you are waiting on an address. They are a poor place to park hundreds of confirmed ₹0 orders, because each one still needs a human to open it and click complete. We covered the scaling limits in draft orders at scale.
3. A bulk tool placing via the Admin API
The third path skips the admin form. A bulk-order tool reads your list (a sheet, a CSV, a synced roster of creators), matches each row to a variant, parses the address, applies the discount, and calls the Admin API to create the order directly. Done well, it creates a finished order in one call: total ₹0, financial status paid, inventory deducted, tags applied, notification suppressed if you want it suppressed. A run of 200 rows takes minutes, and you get a per-row result telling you which ones need attention.
Some tools still go the long way round: create a draft through the API, then complete it. That works on paid stores but inherits every limitation of the draft path, including the trial-store block described below.
What each path does to the order
The differences that matter to an ops lead are not in the form. They are in the side effects. Here is the honest comparison.
| Aspect | Create order (manual) | Draft order → complete | Bulk tool via Admin API |
|---|---|---|---|
| Payment status | Paid at creation if you collect or mark paid; pending otherwise | Nothing until completed; then paid or pending depending on how it was completed | Set explicitly at creation; a ₹0 order lands as paid with no fake payment |
| Inventory | Deducted when the order is created | Not touched while draft (unless reserved); deducted on completion | Deducted at creation; a tool can choose the location per order |
| Customer notifications | Confirmation sent unless you untick the box each time | Invoice email if you send one; confirmation on completion | Controlled per run; usually off for ₹0 orders, on for shipping updates |
| Discounts | Order-level or line-level, typed by hand each time | Same as manual, saved with the draft | Applied from a rule (100% barter, fixed amount, code) to every row |
| Tags | Typed manually; easy to forget or misspell | Typed manually; carried to the order on completion | Applied consistently from the list (campaign, creator handle, reference) |
| Reporting | Shows up as a sale; filter by tag if you remembered the tag | Invisible until completed, then same as manual | Clean tag set means one saved filter excludes them from revenue |
| Time per order | 2–3 minutes | 2–3 minutes to create, plus a return visit to complete | Seconds, plus the time to prepare a clean list |
Two rows deserve emphasis. Inventory: a pile of open drafts is stock that is neither sold nor available, which is how a creator gets an out-of-stock message a week after you promised the parcel. Tags: manual tagging is where reporting quietly breaks, because the tag is the only thing separating a ₹0 creator order from a real sale. If tags are new to your team, start with order tags for barter, gifting and seeding.
Where each path breaks
Draft completion on trial and development stores
Completing a draft through an invoice or checkout link runs through Shopify checkout. On a trial store, a development store, or a store that has not selected a plan, checkout is disabled and you get a message asking you to change your plan. Marking the draft as paid in the admin usually still goes through, but any tool or workflow that depends on the customer-facing invoice will stall. If you are testing a bulk tool on a dev store, this is the first thing to check: does it create orders directly, or does it create drafts and then try to complete them?
The “mark as paid” habit
Marking a full-price order as paid feels quick. It also records revenue you never received. Your sales reports rise, your average order value moves, and your accountant has an order with a ₹1,499 total and no payment gateway entry behind it. The cleaner habit is a 100% discount first, so the total is genuinely ₹0 and the paid status is true rather than asserted. The finance side of this is in gifting orders: inventory, discounts and accounting, and the discount mechanics in 100% discount orders.
Duplicate risk on retries
Manual orders rarely duplicate because a human sees the confirmation. Bulk placement is where duplicates appear, and it is almost always a retry problem. The API call times out, the tool (or the operator) tries again, and the first attempt turns out to have succeeded. Now one creator has two orders, two inventory deductions, and possibly two parcels. The fix is not “retry less”; it is idempotency, covered below.
Manual drift
The manual path breaks slowly rather than suddenly. Twenty orders a week is fine. Twenty a day is a part-time job, and it is exactly the kind of job where the 47th address gets a transposed PIN code. The arithmetic is simple: at 2–3 minutes per order, 100 orders is 3–5 hours of someone's week before a single mistake is corrected. We put a fuller version of that maths in the hidden cost of barter ops.
Which to use, by monthly volume
| Creator orders per month | Recommended path | Why | Watch out for |
|---|---|---|---|
| Under 10 | Create order, with a 100% discount | Setup cost of anything else is not worth it; the human is the quality check | Forgetting the tag; leaving the confirmation email ticked |
| 10–100 | Drafts for unconfirmed orders; a CSV import or bulk tool for confirmed batches | Batching once or twice a week saves hours; drafts hold the ones still in negotiation | Drafts piling up uncompleted; addresses copied from chat without a PIN check |
| 100+ | Bulk tool placing directly via the Admin API | Only path where time per order is close to zero and tagging is consistent | Retries without a reference tag; tools that secretly go draft → complete |
The middle band is the one most Indian D2C brands sit in, and it is where the mixed approach earns its keep. Confirmed creators go into a sheet; the sheet is placed in one batch; anything still being negotiated stays as a draft or, better, stays out of Shopify entirely until it is confirmed. If you are ready to move up a band, how to bulk create orders on Shopify walks through the options, and importing from CSV covers the spreadsheet route.
Idempotency: why a reference tag per order matters
Idempotency is a plain idea with a technical name: doing the same thing twice should have the same result as doing it once. For order placement, it means a retry must never create a second order for the same row.
Shopify does not give the Admin API a built-in “only create this once” key for orders, so the tool has to provide it. The workable pattern is:
- Give every row a unique referencebefore anything is sent: a row ID from the sheet, or an internal item ID. Not the creator's handle, since the same creator can legitimately get two orders.
- Write that reference onto the order as a tag (for example ref-8f3a21) and, ideally, also as a note attribute. Tags are searchable; note attributes survive tag edits.
- Before any retry, look the reference up. Search orders by that tag. If one exists, record its order number against the row and stop. If none exists, create it.
- Keep a per-row status (queued, placed, failed, needs attention) outside Shopify, so a crashed run can resume from where it stopped rather than from the top.
The reference tag pays off beyond retries. It is how you reconcile a sheet against Shopify a month later, how you answer “did we ever ship this creator's second parcel”, and how you tie an order back to a campaign when you are measuring barter ROI. Manual orders can carry the same tag; it just depends on a human typing it correctly every time.
The short version
- Create order for a handful a month. Discount to ₹0, tag it, untick the notification.
- Draft orders for orders that are not final. Complete them the same day they become final, and expect completion to fail on trial or dev stores.
- Bulk placement once you cross roughly a hundred a month, or earlier if the same person also runs your courier pickups. Insist on direct creation, a reference tag per order, and a resumable run.
If placing these orders by hand is eating your week, you can try it free and see your own list placed in minutes.
Frequently asked questions
What is the difference between a manual order and a draft order in Shopify?+
A manual order (Orders → Create order) and a draft order start from the same form. The difference is what you do at the end. Create order lets you collect payment or mark it paid and creates a real order at once. A draft order is saved unfinished and only becomes an order when someone completes it, either by paying an invoice or by the admin marking it paid.
Does a draft order reduce inventory in Shopify?+
Not by default. A saved draft holds no stock unless you turn on reservation for it. Inventory is only deducted when the draft is completed and becomes a real order. That is why a long queue of open drafts can sit on top of stock you have already sold elsewhere, and why creator drafts should be completed the same day they are created.
Why does completing a draft order fail on a trial or development store?+
Draft completion through an invoice or the checkout link uses Shopify checkout, which is disabled until the store is on a paid plan. You will see a message asking you to change your plan. Marking the draft as paid from the admin usually still works, but any flow that relies on the customer paying an invoice will stall on such stores.
Can a bulk order tool create duplicate orders if it retries?+
It can, unless it checks before it creates. A retry after a timeout has no way to know whether the first attempt landed. The safe pattern is a unique reference tag or note on every order, and a lookup by that reference before any retry. If the order already exists, the tool treats it as done instead of creating a second one.
Should I mark creator orders as paid or use a 100% discount?+
Use a 100% discount so the order total is genuinely ₹0 and the payment status reads paid without inventing a payment. Marking a full-price order as paid records revenue you never received, inflates sales reports and makes GST reconciliation messy. Discount first, then the paid status follows on its own. Tag the order so it can be excluded from reports.