Skip to content
Gaurav TiwariDocs

Run a Refer and Earn Program with Coupon Affiliates

Updated October 17, 2026

Your happiest customers already recommend you to friends. Most stores never reward them for it, because a full affiliate platform means sign-up forms, tracking links, cookies and a dashboard to run, all for a handful of people who just want to share a discount.

Coupon Affiliates keeps it to one thing a customer can share anywhere: a personal coupon code. A friend who uses the code gets a discount. The customer who shared it earns a cash commission on every paid order that uses it, including the friend’s repeat orders. You review and pay those commissions yourself.

How the Program Works

  • A customer with a paid order opens Refer & Earn in their FluentCart account, reads your program terms and joins.
  • They get a personal percentage coupon in FluentCart, such as JORDAN7K2M. It doesn’t stack with other coupons.
  • A friend enters the code at checkout and gets the buyer discount.
  • Once FluentCart records the payment, a commission is created and held for your refund period.
  • When the hold ends, the commission waits for your approval. Nothing is approved or paid automatically.
  • You reserve a payout, send the money your usual way and record the transfer.

The defaults are a 10% buyer discount, a 10% commission and a 30-day hold. All three are settings.

Turn It On

  1. In GT Extensions → Modules, turn on Coupon Affiliates. If your FluentCart is too old for it, a notice in wp-admin tells you to update.
  2. Open FluentCart → Affiliates → Settings.
  3. Set the buyer discount, commission and refund hold, then read the program terms and edit them to match your business.
  4. Save settings.

Refer & Earn now appears in the account menu of customers with at least one paid order. Customers who haven’t paid for anything yet don’t see it.

Settings

  • Pause new referrals: affiliate codes stop working at checkout. Holds, approvals, refunds and payouts carry on.
  • Joining: Customers with a paid order get a code right away, or I approve each request first.
  • Buyer discount (%): the discount on new affiliate coupons. Tick Also update existing affiliate coupons to change the ones already issued.
  • Commission (%): a share of eligible product revenue after discounts and before tax. A change applies to new orders only.
  • Refund hold (days): how long a commission waits before it’s ready for your approval, from 0 to 365.
  • Minimum payout: the smallest amount you’ll reserve for one affiliate. Leave 0 for no minimum.
  • Code prefix: up to 12 letters or numbers put in front of every new code, such as REF.
  • Excluded product IDs: FluentCart products that get no referral discount and earn no commission.
  • Program terms: shown before a customer joins. Each acceptance stores the version of the terms the customer accepted, and editing the text creates a new version.
  • Share message: the ready-made message customers can copy. It understands {code}, {discount} and {site}.
  • Account menu label: the menu name customers see, Refer & Earn by default.

For expiry dates, spend limits or category rules, edit the affiliate’s coupon in FluentCart → Coupons. The module reads the code from FluentCart, so a code you rename there shows up correctly everywhere.

What Your Customers See

Before joining, Refer & Earn shows the buyer discount, the commission rate, your program terms and a box to accept them. After joining, it shows:

  • the referral code with a Copy button
  • a share message with a Copy button
  • a share link, when Extra Enhancements → Coupon links is on
  • balances per currency: On hold, Approved, awaiting payment, and Paid
  • referral orders with an anonymous reference such as R-000042, a date, a status and the commission
  • refund adjustments and payouts you’ve recorded

Referred buyers are never named. Affiliates see no names, emails, addresses or products from their friends’ orders.

The share link adds ?coupon= to your shop address. It remembers the code for one day on that browser and applies it once the friend adds something to the cart. Commission comes from the coupon on the final order, so a friend who removes the code doesn’t earn the affiliate anything.

You can also put Refer & Earn on any page with the [gtfc_refer_earn] shortcode.

What Earns a Commission

The commission is worked out per order line. Products earn on what the buyer actually paid for them after every discount, before tax. These never earn:

  • shipping, tax, fees and signup fees
  • products in your excluded list
  • subscription renewals, plan upgrades and free trials where nothing was paid
  • GT invoice, quote and deposit payments
  • orders placed in FluentCart test mode, which go to a separate test ledger and never count toward balances

An order earns only after FluentCart records the payment. A placed order, a fulfilled order or a cash on delivery order that hasn’t been collected earns nothing yet. Repeated payment notices from a gateway don’t create a second commission.

Amounts follow the order’s currency, and each currency has its own balance. For currencies without decimals, such as Japanese yen, commissions round down to whole units.

Self-Referrals

A customer can’t earn from their own orders. The code is refused at checkout, and any order that slips through is rejected, when the buyer matches the affiliate by WordPress account, FluentCart customer or email address. Email matching ignores capital letters and +tags, so jane+deals@ and Jane@ count as the same person.

An order from the same IP address as the affiliate isn’t rejected, since families and offices share connections. It’s flagged with Shared IP with affiliate so you can look before approving.

Review Commissions

FluentCart → Affiliates opens with four numbers: active affiliates, commissions on hold, commissions that need a decision and the amount approved to pay. Below them are four tabs.

Affiliates lists everyone in the program with their code, status, commission rate and earnings. From here you can:

  • add an existing customer by account email or username, which creates their coupon at once
  • approve a pending request, suspend an affiliate or close an account
  • set a personal commission rate for one affiliate, which applies to their future orders

Suspending an affiliate disables their coupon in FluentCart. Closing does the same for good. In both cases, earnings already recorded stay and can still be paid.

Commissions lists every referral order by status: Awaiting payment, On hold, Ready for approval, Needs review, Approved, In payout, Paid, Reversed, Rejected and Test ledger. Open one to see its order lines, what each line earns, the payment evidence and a full decision history. From the detail screen you can approve it, reject it with a reason, recheck the order or set a different amount.

When several holds have ended, open the Ready for approval view and click Approve every commission ready for approval to clear them in one step. Commissions in Needs review always wait for you one by one: open each, choose Keep calculated amount or Set commission to, and save your decision.

When an Order Is Refunded

  • An itemized partial refund recalculates the commission at the rate it was earned at.
  • A refund that isn’t linked to items moves the commission to Needs review, so you decide the new amount.
  • A full refund reverses the commission once.
  • A refund after you’ve paid the affiliate keeps that payout as it was and creates an adjustment, which is taken off the affiliate’s next payout.
  • A refund while a payout is reserved puts that payout on hold until you release it or record that the transfer was already sent.

Pay Your Affiliates

The Payouts tab shows approved amounts per affiliate and currency, minus any open refund adjustments.

  1. Click Reserve payout. The commissions in it are locked so nothing changes while you pay.
  2. Download the CSV if you want a record for your bank or PayPal batch. Downloading doesn’t mark anything paid.
  3. Send the money your usual way.
  4. Back on the payout, enter the method, the exact amount sent, the date and the transfer reference, then click Mark paid.

The module never collects bank details. Ask affiliates for payment details through your usual channel. If you reserved a payout by mistake, Release reservation sends its commissions back to Approved.

If You Run Another Affiliate Plugin

FluentAffiliate, AffiliateWP, SliceWP and Solid Affiliate can all pay commission on FluentCart orders. When one of them is active, Coupon Affiliates holds new commissions and shows a notice, because two programs paying on the same coupon means paying twice.

Turn off that plugin’s FluentCart integration, then tick the confirmation under Other affiliate plugins in Settings. If the set of detected plugins changes later, the module asks again.

Turning It Off

FluentCart coupons stay in FluentCart even when GT Extensions is off. So switching off the module, or the whole plugin, disables every affiliate coupon first. History, balances and payouts stay.

To come back, open Settings and click Reconcile and reopen program. It first records any orders placed while the program was closed, then turns active affiliates’ coupons back on. An hourly pass also checks recent orders, 100 at a time, in case a payment notice was missed.

Privacy

Affiliate data is part of WordPress’s personal-data export and erasure tools. Erasing an affiliate closes their referral account and disables their coupon. Commission and payout records are kept, because you need them for your accounts.

Who Can Do What

Store staff who can view orders and customers in FluentCart can see the Affiliates screen. Only administrators can approve, reject, change rates, change settings or record payouts.

Good to Know

  • Tell affiliates to mention that they earn a commission when they share a code publicly. Refer & Earn shows that reminder under the share message.
  • Rate and discount changes never rewrite commissions already recorded.
  • The program has no tracking cookie. A sale counts only when the affiliate’s code is on the order.
Share

Was this helpful?

Still stuck? Open a support ticket