← All docs

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

StateWhat it means
PendingAttributed to an affiliate and waiting for your decision. It cannot be paid out.
To payApproved. It joins the affiliate's balance on the Payouts page and goes out with the next payout.
RejectedPays 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.
PaidNothing 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.
ImportedHistory 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

The filters sit in a panel on the right that stays in view as you scroll. You can narrow by state, by a date range (with your own From and To dates), by program, by affiliate (several at once), by a minimum sale amount, and by a text search that matches the product title, the order name, or the customer name. Clear filters appears once anything is set. 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.

Columns is in that panel too, since it decides what the list puts in front of you the same way the filters do. It switches Date, State, Affiliate, Program, Customer, Products, Sale, Commission, Attribution, and Paid on; the order itself is always shown. What you pick is kept in the page's address alongside the filters and the sort, so a list narrowed to something worth looking at survives a reload and can be sent to whoever has to deal with it.

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, sorting is by clicking a column header (Date, Order, Affiliate, Sale, Commission, Paid on, each way), and it reorders every row matching your filters, not just the ten on screen. Export CSV, under the filters in the same panel, hands back what you are looking at: the columns you chose, in the order you sorted them, covering every row matching your filters rather than the page on screen.

Download reports

Settings > Reports turns what Sprout Affiliate knows into a CSV file for a spreadsheet or an accountant. Pick a report and a period, narrow it if you like, and press Download. There are eight reports:

Every report except Tax forms can be narrowed to one program or to chosen affiliates, and Affiliates, Referral orders, and Products to a status as well. Concise report keeps only the main columns. Amounts are in your store’s currency, named in each column heading. Text that starts with =, +, - or @, such as a name typed on the signup form, gets a leading apostrophe, so a spreadsheet shows it as text instead of running it as a formula.

Tax forms reach your browser still locked. The browser opens each one with your tax passphrase, on your computer, and only then writes the file, so Sprout Affiliate never sees a tax ID. The Tax forms report is offered only in the store’s own admin, not when viewing it from another store in your group.

Three limits. Clicks are kept for 120 days, so a click report or click total goes back 120 days at most. The Referral orders and Products reports read the same orders as this page, so a rejected order more than 59 days old is not in them. And a report of more than 50,000 rows is refused, with a message to choose a shorter period, instead of being cut short, so a file you download is always the whole report.

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.

A share of an order split by clicks, a royalty, or a recruiting override row opens its order read only, on the web and on the phones. The order's numbers on that page are the seller's, so one line names the row's own part (under Referred by on the web, under Status on the phones): whose it is, what it pays, and where it stands, for example "Shared commission for Ib: $3.00, approved", "Royalty for Dee: $4.50, paid", or "Level 2 override for Sam: $1.00, pending". The page has no Approve or Reject, because those would decide the seller's whole order.

An order whose program splits commission by clicks, and that the customer clicked more than one affiliate for, lists who got what part under Split between the affiliates the customer clicked in its Order & commission card: the affiliate the order counts for first, then everyone else's part, each linking to that affiliate's page. The order's screen in the iPhone and Android apps lists the same parts under the same heading.

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. Neither includes a flagged order: an order a fraud rule matched waits under Flagged orders and is approved or rejected one at a time (see Fraud protection). 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 has a row for each fraud rule you have on in Settings > Fraud detection, and each row shows what that rule found for this order. The rules run while an order waits for approval and are not run again once it is paid, so a paid order's rows say so (the name check can still be read from the order itself). See Fraud protection. The referring page under Source and the Pages the visitor viewed 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.

Waiting before automatic approval

An approved order is payable straight away. There is no clearing timer after approval.

What you can do is make automatic approval wait. Days to wait before approving orders automatically, in Settings > General under the auto-approve switches, takes 0 to 365 and defaults to 0. With a wait set, an order that would approve automatically stays in Pending for that many days after it was placed, with the badge "Approves automatically on YYYY-MM-DD", and is approved on that day. Refunds and chargebacks that arrive in the meantime are applied first, so you are not paying commission and then clawing it back. The wait applies wherever automatic approval is on: the store, a program, or an affiliate. Your own Approve click never waits.

If you would rather decide each order yourself, leave auto-approve off and approve orders once you are comfortable with them. If you turn auto-approve on with no wait, 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 is on the Growth plan and up. On Free, the three settings below show "Automatic order approval is on the Growth plan." instead of offering Automatically, and every referral order waits for your review. If a store moves down to Free, orders placed before the change still approve the way it was set, and orders placed after it wait for review, marked "Automatic approval is on the Growth plan" in the order list, on the order and in the phone app. Affiliates never see your reasons: their order page and app say the order is waiting for the store's review, or, where it is so, that it is a test order, was canceled, is waiting for the customer's payment, or will be approved on the day your wait ends. Back on Growth or higher, the orders that waited approve the way the settings say.

Paid visits, leads, and custom events follow the same rule, by when each was recorded.

Auto-approve can be set in three places, and the most specific one wins:

  1. The affiliate. On their detail page, "Approve their referral orders" can be set to Automatically, Always review manually, or Use program / store default. Beside it, the line "This setting will override the program default" and a green Program default pill that names what their program says and opens that setting.
  2. The program. "Approve referral orders" offers Automatically (no review), Always review manually, or Use store default.
  3. 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

These orders 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:

Each fraud rule is described in Fraud protection. Test orders, canceled 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. The other holds are real sales: no fee is charged while they wait, and the fee is billed if you approve them.

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