Referral orders
Every order Sprout Affiliate has connected to an affiliate appears on the Referral orders page. It is in the app's left-hand navigation, under Payouts. The page is the full list: orders waiting for your approval, orders approved and waiting to be paid, orders approved with no commission to pay, orders you rejected, orders already paid, and history you imported from a previous app. Click an order name to open its detail page, which is where you approve, reject, or send it back to pending.
The states an order moves through
| State | What it means |
|---|---|
| Pending | Attributed to an affiliate and waiting for your decision. It cannot be paid out. |
| To pay | Approved. It joins the affiliate's balance on the Payouts page and goes out with the next payout. |
| Rejected | Pays nothing. The order is kept on the list rather than deleted, so you can find it and restore it if you rejected it by mistake. |
| Paid | Nothing is owed on it. Either a payout has been recorded, through a PayPal batch or a manual "mark as paid", or the commission was $0 so there was nothing to send. A $0 referral never enters the payout queue, and stays on the list so it does not look like it vanished. |
| Imported | History you brought in from another affiliate app. Sprout Affiliate never moved this money, so it is labelled separately and its row does not link to a Shopify order. |
Filtering and exporting
You can filter by state, by affiliate, by a minimum sale amount, and by a text search that matches the product title, the order name, or the customer name. The list shows 10 rows per page. Once more than 10 rows match, a Per page control appears under the list offering 10, 20, 50, or 100.
Two things to know. First, Paid and Imported rows are read from the payout ledger, which stores the order name, affiliate, sale, and commission but not the products or the customer, so a text search finds those rows by order name only.
Second, the Sort control offers Newest first, Oldest first, Highest commission, and Lowest commission, and it reorders every row matching your filters, not just the ten on screen. Export CSV is always newest first whatever Sort is set to. The export covers every row matching your filters, not just the page you are looking at, with columns for date, order, affiliate, customer, products, sale, commission, and state.
Approving and rejecting
Which buttons you get depends on where the order is. A pending order shows Approve and Reject. An approved order shows Move back to pending and Reject.
A rejected order shows a single Restore to pending button, so putting a rejection right is a two-step job: restore it, then approve it. Each action shows an undo bar for 10 seconds, and Cmd/Ctrl+Z triggers the same undo. An order that has already been paid shows no buttons.
The Payouts page approves in bulk. The Approve button next to an affiliate approves all of that affiliate's pending orders at once, and Approve all approves every pending order in the store. To decide one order on its own, open that order. Approving and rejecting are available on every plan.
The order detail page also shows the products, order totals, the commission, the customer (only if you have granted the app the customer-data permission), how the order was attributed (discount code, referral link, or the Web Pixel, the script Sprout Affiliate installs on your storefront to report a referral when checkout completes), a Timeline giving the time the link was opened, the time the order was placed, and the gap between the two, and a Fraud checks card.
That card runs one check, Self-referral by name, and shows it only if you ticked "Hold orders where the buyer's name matches the affiliate" in Settings. The referring page under Source and the Pages they visited list both come from page-visit tracking and need the Growth plan or higher. Those rows are collected on every plan, they are just not shown on Free. They also depend on the click being carried by the affiliate link, so a referral tracked only by discount code has neither.
There is no hold or clearing period
Sprout Affiliate has no hold-days or clearing timer. An approved order is payable straight away.
The approval step is the delay mechanism. If you want commission to wait until your refund window has passed, leave auto-approve off and approve orders once you are comfortable with them. If you turn auto-approve on, expect to pay commission on orders that could still be refunded, and read "Refunds and clawbacks" below.
Auto-approve, and how the three settings resolve
Auto-approve can be set in three places, and the most specific one wins:
- The affiliate. On their detail page, "Approve their referral orders" can be set to Automatically, Always review manually, or Use program / store default.
- The program. "Approve referral orders" offers Automatically (no review), Always review manually, or Use store default.
- The store. "Auto-approve referral orders" in Settings, also shown on the Payouts page as "Automatically approve new referral orders".
The app reads the affiliate setting first. If it says Automatically or Always review manually, that decides the order. If it says Use program / store default, the program decides. If the program also says Use store default, the store checkbox decides. That order of reading is why turning auto-approve on at store level does not change an affiliate you have explicitly set to "Always review manually".
One action always beats auto-approve: click Move back to pending on an order and it stays pending, whatever the affiliate, program, and store settings say. That is the only way to pull one order out of an auto-approving program.
Orders the app will not auto-approve
Four kinds of order never auto-approve, even with auto-approve on. They sit in Pending with a badge giving the reason, and you can still approve them by hand:
- Test order. Test-mode purchases are tracked so you can check that attribution works, but they are not real money.
- Order cancelled.
- Payment pending, voided or expired. The money has not settled.
- Possible self-referral. Only when you have turned on "Hold orders where the buyer's name matches the affiliate" in Settings, and only when the two names match exactly. It is held rather than rejected, because a shared name can be a coincidence. Matching on email or IP is not possible, because Shopify does not return that data to the app on the order query.
Test orders, cancelled orders, and orders whose payment has not settled are also exempt from the transaction fee, so you are not charged a percentage of a sale the app refuses to attribute. A held self-referral is different: it is a real, paid sale, so its fee stands unless you reject the order.
Refunds and clawbacks
For an order that has not been paid out yet, no action is needed. The app re-reads the order and works from its current value, so a refund lowers the commission the next time the figures refresh, which is the next page load after the cached copy is more than 30 seconds old, and a partial refund on one line lowers only that line's share. A fully refunded order drops to $0.
That shrinking applies to percentage programs. On a flat-per-order program a partial refund does not reduce an unpaid order's commission, because the flat amount does not follow how much of the order survives. A full refund does: with nothing left of the sale there is no referred order to pay for, and the commission drops to $0. The same happens on a program scoped to particular products when every one of those lines is returned. Reject the order if you do not want to pay a partially refunded flat commission.
Once an order has been paid, the money is already gone, so the app raises a clawback. It appears as its own row named "order name refund" with a negative commission, and it goes through the same approval flow as any other referral, including auto-approve.
Approve it and it nets against that affiliate's next payout. Reject it and you have waived that amount. If a second, deeper refund happens later, a fresh clawback is raised for the new difference, because waiving $10 is not the same decision as waiving $40.
Why the rate is locked when the order arrives
The first time the app works out commission for a referral order it writes down the rate for that order and never changes it. Flat programs lock their dollar amount the same way. The lock is what makes editing a program's rate apply to future orders only. Without the lock, raising your rate would quietly reprice every order still sitting in Pending, including ones from last month.
The rate written down is, in order: the program's tier rate for that affiliate's order number if the program uses commission tiers, then the affiliate's own rate if you set one (including one from a CSV import), then the program's rate.
Locking the rate does not freeze the money. The locked rate is applied to the order's current value, which is what makes refunds shrink commission correctly. What the commission is calculated on (the discounted subtotal, and whether shipping, tax or discounts are added back) comes from the Commission calculation checkboxes in Settings (Discounts, Shipping, Tax) and is read live, so ticking one re-prices every order that has not been paid yet.
$0 commission orders
An order worth $0, for example a free product ordered through an affiliate link, still shows up for approval. On a percentage program, 0% of nothing is $0, and approving it closes the referral as Paid, because there is nothing to send. On a flat-per-order program it is $0 as well, because a flat amount only pays when there is money left on the order.
A different case: an order with real money on it that calculates $0 commission (usually because none of its products fall inside the program's scope) is not listed at all. It is treated as out of scope for that program rather than shown as a $0 row.
Limits worth knowing
- Free plan cap. The Free plan attributes the first 200 referral orders per calendar month, counted by order date. Orders past that get no commission and do not appear on this page. The Payouts page shows a warning saying how many were excluded. Every paid plan is uncapped.
- Time window. The list works from the last 59 days of orders, counted from midnight in your store's timezone, plus any older order that is still owed (tracked, approved, rate-locked, or already charged a fee, and not yet paid or rejected). Older unpaid commission is deliberately kept so it cannot disappear on day 59.
- The transaction fee is charged when the sale happens, not when you pay the affiliate. It is 2% on Growth, 1.5% on Professional, and 1% on Enterprise, and there is no fee on Free. Rejecting a referral credits back a fee that was actually charged, and restoring the referral makes that fee owed again. A credit comes off your next bill. It is not paid back to your card.
- Undoing a payout. A payout you recorded yourself with "Paid them" can be undone, which sends its orders back to "To pay". A batch sent through PayPal cannot, because the money has already left. Nor can a store-credit batch, because the credit is already on the customer's account. Both read "Sent via PayPal" instead of an Undo button.
- Affiliates do not see rejections. Their portal lists Pending, To pay, and Paid referrals. A rejected order simply drops out of their list, with no explanation, so tell them if it matters.
- Anti-leak changes what appears here. If you turn on anti-leak discount protection (Professional plan or higher), an order that only used the affiliate's discount code, with no click on that affiliate's link recorded against it, is not attributed at all and never reaches this list.
- Numbers are cached. The first load per store computes fresh, then a cached copy is served and refreshed in the background once it is more than 30 seconds old, so a change made outside the app (a refund in Shopify) can take an extra page load to show. Approving, rejecting or paying clears the cache immediately.
- Read failures are visible. If Shopify's order data cannot be read, the page shows "Live orders couldn't be read right now" and falls back to what it has. Nothing is lost, but treat the totals as incomplete until the banner clears.