Accounting for Multi-Recipient Orders
Two ways to keep Send To Many parent and recipient orders from double-counting revenue in Xero, QuickBooks, or Bookkeep, and how sales tax reaches your books with each.
Every Send creates a parent order (also called the aggregate order or gifter order), which holds the payment, and one recipient order per address, which holds the products that ship. Accounting apps that sync Shopify orders, such as Bookkeep, A2X, Xero's Shopify connector, or a QuickBooks connector, see both layers. Unless one layer is kept out, a Send's revenue reaches your books twice. The parent order also records tax as a custom line item rather than Shopify tax, which changes how tax reaches your tax liability accounts.
This article covers the two setups that keep revenue counted once and tax recorded correctly, and how to choose between them. Share it with whoever runs your books.
Test both the revenue and the tax side with a small Send before you go live. Run a Send with two or three recipients, let it sync, and confirm the sales total and the tax total land where you expect in your accounting software.
How Send To Many orders look to accounting software
Your accounting app reads the same order fields Shopify does. The table shows what each order type carries, and which fields you can filter on.
| Parent order | Recipient orders with calculated values | Recipient orders with $0 values | |
|---|---|---|---|
| How many | One per Send | One per recipient | One per recipient |
| Payment | The real payment, through your normal gateway (Shopify Payments, payment terms, or marked as paid) | A placeholder transaction on the Send to Many payment gateway | No transaction |
| Line items | Custom line items: one per product, plus Aggregate shipping and Aggregate tax. All are non-taxable and none touch inventory | Real catalog products at their calculated prices | Real catalog products at $0 |
| Tax | The Aggregate tax custom line only. Shopify tax on the order is $0 | Shopify tax lines with rate, jurisdiction, and amount | None |
| Shipping | The Aggregate shipping custom line | A Shopify shipping line | None |
| Tags | Send to Many #[Send ID] and Send to Many aggregate (checkout orders also get Send to Many Storefront-Parent) | Send to Many #[Send ID] (checkout orders also get Send to Many Storefront-Child) | Same as calculated |
| Source | Created from a Shopify draft order | Created by the Send To Many app | Created by the Send To Many app |
Two points from this table drive everything below:
- Nothing on the parent order is Shopify tax. Accounting apps book the Aggregate tax line as a sales line, not as tax collected. Whichever option you choose, the parent order's tax needs to be reclassified or taken from the recipient orders.
- Most accounting apps filter by payment gateway or by the app that created the order, not by tag. Bookkeep can exclude orders by tender type and can segment orders by app. A2X and Link My Books can exclude a payment gateway. Xero's own Shopify connector and most QuickBooks connectors have no order filters. Check your app's settings before choosing an option.
Option 1: Calculated recipient orders, parent order excluded from accounting
Use this option when your accounting app can leave out one set of orders and you want Shopify's own tax reports to stay complete. Revenue, tax, and shipping come from the recipient orders. The parent order supplies the payment and nothing else.
How it works
With calculated values, each recipient order carries its real products, its Shopify tax lines by rate and jurisdiction, and its shipping line. Your accounting app reads sales and tax from those orders, the same way it does for a regular storefront order. The parent order is excluded from sales, so its product lines and its Aggregate tax and Aggregate shipping lines never reach your revenue accounts.
The parent order's payment still arrives in your payout or bank reconciliation. Map the Send to Many payment gateway on the recipient orders to the same clearing account, so the recipient sales and the parent order's real payment settle against each other.
Set it up
- In Send To Many, set recipient orders to calculated values. For uploads, open the Send preset and set Order revenue handling to Create orders marked as paid using the calculated amount. For multi-recipient checkout, go to Settings > Multi-recipient Checkout > Order processing and choose calculated values. See Sales Tax Calculation, Collection, and Reporting.
- In your accounting app, exclude the parent orders. Where the app filters by tag, exclude
Send to Many aggregate. Where it segments by sales channel or app, the parent order falls under draft orders, since Shopify creates it from a draft order. Check whether you create other draft orders that the same rule would catch. - Map the Send to Many payment gateway to the clearing account your parent order payments settle into.
- Filter the parent orders out of your Shopify sales reports as well, so Shopify and your books agree. See How to Filter Shopify Reports to Avoid Double-Counting Bulk Orders.
If your accounting app can only exclude orders by payment gateway, excluding the Send to Many gateway removes the recipient orders instead of the parent order. Revenue is then counted once, from the parent order, but the recipient orders' tax lines leave with them and the parent order's tax is still the Aggregate tax sales line. In that case, add the monthly tax journal from Option 2.
What you get
Shopify's Taxes and United States sales tax reports are complete, since the recipient orders carry the tax. Your accounting app records tax by rate from the same orders, with no manual entry.
If your connector creates one invoice per Shopify order and maps line items to accounts by SKU, there is a second way to keep the parent order out of revenue. We can add a suffix to the SKU of every product line on the parent order and set a dedicated SKU on its Aggregate tax and Aggregate shipping lines. Your bookkeeper then maps the suffixed SKUs to a clearing account and the tax SKU to a tax liability account. Contact support to turn this on for your store, and test one Send before relying on it.
Option 2: $0 recipient orders and a monthly tax journal entry
Use this option when your accounting app has no way to leave out the parent order, or when you would rather not maintain order filters. Your accounting software, not Shopify, becomes the record of sales tax on these Sends.
How it works
With $0 values, recipient orders carry the real products at $0 with no tax and no shipping. They add nothing to revenue, tax, or shipping in your books even when they sync. The parent order carries the revenue, and its Aggregate tax and Aggregate shipping lines arrive as sales lines. Once a month, you move the tax portion out of sales and into your tax payable accounts, using the Send To Many Sales Tax report for the amounts.
If you want the $0 recipient orders out of your books entirely, many apps can exclude them by the app that created them (Send to Many). Keep them in if your app records cost of goods from orders: the recipient orders carry the real products, and the parent order's custom lines have no cost.
Set it up
- In Send To Many, set recipient orders to $0 values. For uploads, open the Send preset and set Order revenue handling to the $0 option. For multi-recipient checkout, go to Settings > Multi-recipient Checkout > Order processing and choose $0 values.
- In your accounting app, note which sales account the parent order's Aggregate tax line posts to. That is the account the monthly journal debits.
- If you track shipping income separately, do the same for the Aggregate shipping line.
Post the monthly tax journal
- In Send To Many, go to Analytics > Sales Tax and set the date range to the month you are closing. The filters use Send dates, so choose the range that covers the Sends completed in that month.
- Exclude cancelled Sends and orders if the report includes them, then click Export to download the CSV. Exports over 10,000 rows are emailed to you.
- Total the Tax amount column by tax rate. Group by state or province as well if you remit to more than one jurisdiction.
- In your accounting software, post a manual journal dated the last day of the month: debit the sales account from step 2 of the setup for the total, and credit each tax payable account for its share. If your software builds the tax return from tax rates on transactions, apply the matching tax rate to each credit line.
- If you reclassify shipping, add a second journal moving the Aggregate shipping total from sales to shipping income.
With $0 recipient orders, Shopify's Taxes and United States sales tax reports show no tax for these Sends. File from your accounting software. The Send To Many report does not net refunds: a refunded recipient order still shows its original tax, so adjust for refunds issued in the month.
What you get
Revenue is counted once with no filters to maintain, and the parent order's tax lands in the right liability accounts each month. Shopify's own sales reports also stay clean, since the recipient orders carry $0.
Approaches that don't work
- Filtering by order name. Recipient order names can follow a template you set, but the parent order's name is assigned by Shopify when the draft order completes and can't be changed. A name or number rule can only remove recipient orders, which takes their tax lines with them.
- Cancelling the parent order. Send To Many can cancel the parent order automatically after payment, but accounting apps keep any cancelled order that captured a payment. Cancelling changes the order's status, not what reaches your books.
- Deleting parent invoices in your accounting software. Daily-summary connectors never create per-order invoices, so there is nothing to delete. Per-order connectors attach the real payment to the parent invoice, and deleting it leaves that payment unmatched.
Choosing between the two options
| Option 1: calculated values, parent order excluded | Option 2: $0 values, monthly tax journal | |
|---|---|---|
| Shopify tax reports | Complete, by state and jurisdiction | Show no tax for these Sends |
| Accounting app requirement | Must be able to exclude orders by tag, or segment draft orders | None. Works with any connector |
| Recurring work | None once filters are set | One journal entry per month from the Sales Tax export |
| Shopify sales reports | Need the Send to Many aggregate filter | Clean without filters |
| Loyalty and other order-based apps | See two paid orders per recipient Send | See one paid order per Send |
| Best for | Merchants who file sales tax from Shopify, or whose connector filters by tag | Merchants who file tax from their accounting software, or whose connector has no order filters |
If you are unsure, start with Option 2. It works with every connector, and you can switch to calculated values later by changing the Send preset or checkout setting. Orders already generated keep the values they were created with.
Related articles
- Sales Tax Calculation, Collection, and Reporting: how tax is calculated per recipient and how Shopify's tax reports show Send To Many orders
- How to Filter Shopify Reports to Avoid Double-Counting Bulk Orders: the tag filters for Shopify's own analytics
- Managing Aggregate Orders: what the parent order contains and how to keep it out of fulfillment
- Send presets and order revenue handling: where the calculated and $0 settings live for uploads
- Send To Many and Your ERP: the field-level reference for mapping orders into back-end systems
Still have a question?
Ask Manny, the Send To Many bot, about “Accounting for Multi-Recipient Orders” or anything else in the docs.