Ambassly
← All posts

How to pay affiliates without making a mess

2026-07-07 · The Ambassly team

Affiliate payouts sound simple until the first refund lands after you already paid the commission.

The tracking link is the easy part. Paying people cleanly is the part that decides whether creators trust your program. You need a payout rhythm, a hold period, a review process, a batch export, and enough records that you can explain every dollar later.

This guide is for small SaaS teams paying affiliates manually or semi-manually. It is not tax, legal, or accounting advice. It is the operational shape you need before you send money.

Start with the ledger, not the payout button

Do not start by asking, "Can we automate PayPal?" Start by asking, "What exactly are we paying?"

Each commission should have a source invoice, customer, affiliate, amount, currency, status, and history. At minimum, use these statuses:

  • pending
  • approved
  • rejected
  • paid
  • clawed_back

Pending means the customer paid, but the commission is not payable yet. Approved means the hold period passed and the commission is ready for the next payout batch. Rejected means it failed a rule, like self-referral or duplicate-customer detection. Paid means money was sent. Clawed back means a refund or reversal changed the commission after it was created.

If you cannot explain why a commission has its current status, do not pay it yet.

Set a hold period before launch

A hold period is the gap between a commission being created and becoming payable. For SaaS affiliate programs, 30 to 45 days is the practical range in the Ambassly spec, and it should be at least as long as your refund window.

If your product has a 30-day refund policy and you pay affiliates after 7 days, you have created an avoidable problem. A customer can refund after the affiliate has already been paid. Then you either eat the loss or claw it back from the affiliate's future earnings.

Neither is the end of the world. Both are worse than waiting until the refund window has passed.

Make the hold period visible in your affiliate terms and portal. Creators understand that refunds exist. What they dislike is a pending balance with no date and no explanation.

Pick a payout cadence

Most small programs should pay monthly.

Weekly payouts sound creator-friendly, but they create more review work, more payment fees, and more edge cases. Quarterly payouts are easier for you, but they make the program feel sleepy unless the commissions are large.

Monthly is the boring middle:

  • On the 1st, find all approved unpaid commissions.
  • Review exceptions.
  • Export a payout batch.
  • Send payments.
  • Mark commissions paid with a payout ID or batch reference.

Do not pay one-off commissions manually throughout the month unless you have a specific reason. Random payouts make reconciliation harder and create inconsistent expectations.

Use thresholds carefully

A payout threshold keeps you from sending tiny payments that cost more to process than they are worth. The spec's default threshold is $50, which is a sensible starting point for SaaS programs.

The rule should be clear:

  • If approved unpaid balance is at least $50, include it in the next batch.
  • If it is below $50, roll it forward.
  • If the affiliate leaves the program, define whether and when below-threshold balances are paid.

Do not invent new rules when an affiliate asks. Write the rule once, apply it consistently, and keep the ledger visible.

PayPal mass-pay exports

For many small programs, PayPal is the simplest payout rail because affiliates already know it. The operational pattern is a batch export for PayPal Payouts: one row per affiliate, with PayPal email, amount, currency, and a note or reference.

The export should include enough data to reconcile later:

  • affiliate ID
  • affiliate name
  • PayPal email
  • amount
  • currency
  • payout period
  • internal payout ID
  • commission IDs included

Some tools call this a PayPal mass-pay format. PayPal product names and file requirements can change, so check PayPal's current documentation before uploading a batch. The important point is not the label. The important point is that you are exporting a structured batch, not copying numbers from a dashboard into a payment screen by hand.

After sending the batch, store the PayPal batch ID or transaction reference. Then mark the related commissions as paid. The order matters: export, send, record external reference, mark paid.

Plain CSV batch exports

CSV is still useful even if you pay through another system. A finance person, accountant, or founder can open it, audit it, and import it elsewhere.

A good payout CSV has two levels:

  • a payout summary by affiliate
  • a commission detail export behind each payout

The summary answers "who gets paid how much." The detail answers "why."

Do not make the payout file the only record. The source of truth should stay in the commission ledger. CSV is a transport format and audit artifact, not your database.

Handle refunds and clawbacks

Refunds are where weak payout systems break.

If a commission is still pending or approved, a refund should move it to clawed_back or rejected, depending on your terminology. The audit trail should say which Stripe charge, invoice, or refund caused the change.

If the commission is already paid, you cannot unsend the money. The usual operational fix is a negative adjustment that nets against a future payout. That adjustment needs to be visible, because affiliates will notice when a future payout is lower than expected.

This is another reason to keep the first version manual. Auto-payouts are nice when everything goes right. The approval queue is where you catch the cases that do not.

Tax basics to prepare for

Affiliate payments are business payments. Depending on where your company and affiliates are located, you may have reporting, withholding, invoice, VAT, GST, or information-return obligations. Do not guess your way through that. Ask the person who handles your accounting.

Operationally, you still need to collect the basics:

  • affiliate legal name or business name
  • payment email or payout account
  • country
  • address if your accounting process requires it
  • tax form status if applicable to your jurisdiction

Do not bury this after the affiliate has already earned money. Collect payout details before the first payout is due, and make it clear that incomplete payout details can delay payment.

What to tell affiliates

Your payout page should answer five questions without a support ticket:

  • How much have I earned?
  • What is pending?
  • What is approved?
  • When is the next payout?
  • Why did any commission change?

The answer can be simple. It does not need enterprise workflow. It does need dates, statuses, and event history.

In Ambassly, that is the point of the ledger: every commission has a visible path from click to invoice to hold period to payout.

The launch checklist

Before inviting affiliates, make sure you can do this end to end:

  • create a commission from a paid invoice
  • hold it until the refund window passes
  • approve it
  • include it in a payout batch
  • export PayPal and CSV files
  • mark it paid with an external reference
  • claw it back if the customer refunds before payout
  • create a negative adjustment if the refund happens after payout

That is the real payout system. Not the button. Not the integration logo. The system is the set of rules that lets you send money, answer questions, and reconcile the books later without rewriting history.