Salta al contenuto

Crypto affiliate and referral payouts: pay every partner at once

Crypto affiliate payouts let you pay thousands of partners tiny amounts across many countries with no bank details. Here is how to batch or automate referral payouts in crypto safely.

Payora9 min readEN · RU · UK · ES · DE

Crypto affiliate payouts solve a very specific problem: paying thousands of partners, a few dollars each, spread across dozens of countries, without collecting a single bank detail from anyone. With Payora you paste up to 500 recipients into the cabinet or POST them to the payout API; the batch total plus fees is held on your internal balance the moment you submit, and the payout then follows your account’s configured approval and release flow. This post is about when referral payouts in crypto genuinely beat wires and PayPal, the constraints nobody tells you about, and how to wire the whole thing into a payout cycle so a failed cron run never double-pays.

Why crypto fits affiliate and referral payouts

Affiliate and rev-share programs have a payout shape that traditional rails handle badly: many recipients, small amounts, international, on a repeating schedule. Crypto fits that shape almost exactly.

  • One global rail. A partner in Manila, one in Lagos and one in Buenos Aires are paid the same way, in the same minutes, off the same balance. There is no country matrix of what PayPal supports or which corridor your bank quietly blocks.
  • Tiny minimums actually work. A $4 rev-share commission is a rounding error to a $15 international wire fee, so you never send it. Pay the same $4 in USDT on a cheap network and the fee is cents. Small, frequent payouts stop being uneconomic.
  • No bank-detail friction. You collect one field per partner — an address — instead of an IBAN, a routing number, a SWIFT/BIC and a legal name that has to match. Onboarding a new affiliate is a paste, not a form.
  • Fast. Once you sign, settlement is minutes to the recipient, not two to five business days with a wire that might bounce back for a name mismatch.
  • Payments are final, so there are no chargebacks on what you pay out. An affiliate cannot reverse a commission you sent them the way a card buyer can dispute a purchase.

That last point cuts both ways, which brings us to the honest part.

The honest constraints

Finality has a flip side: there is no clawback. If you approve and release a commission for a fraudulent or self-referred affiliate, a completed on-chain payout cannot simply be pulled back — the same finality that protects you from chargebacks cuts both ways. So the discipline moves upstream: approve carefully, hold suspicious accounts before the batch, and treat confirmed release as the point of no return. Payora will not screen your affiliates for you; that judgement stays with your program.

The second constraint is operational. Submitting a batch — from the cabinet or the API — reserves the funds on your Payora balance and creates a payout batch, but you should not treat recipients as paid at submission time. Follow the approval, release and status flow configured for your account, then verify the resulting payout status and transaction evidence before you mark commissions paid. Anyone promising "API call, money instantly gone and already settled" is describing a more automated and riskier model. The mass-payout architecture write-up gives broader context, but the current operational steps belong in the product docs and your account settings.

Two ways to run crypto affiliate payouts

For a monthly or ad-hoc run, the cabinet is the fastest path. Open mass payouts, paste up to 500 lines of address amount [tag/memo], and submit. The batch total plus the per-item fee is held on your balance, so a batch cannot be overspent, then you complete the configured approval and release steps for that account. XRP destination tags and XLM memos go in that optional third field per line.

For a program that pays on a fixed cycle, drive it from the API instead. POST /v1/payout takes a currency and up to 500 items and returns a 201 with a batch_id, the item_count, total and fee. Authentication is the same HMAC scheme as the rest of the API — the headers X-Payora-Key, X-Payora-Timestamp and X-Payora-Signature, where the signature is hex(HMAC-SHA256(api_secret, timestamp . "." . raw_body)) within a 120-second window.

curl -X POST https://api.payora.money/v1/payout \
  -H "X-Payora-Key: $KEY" \
  -H "X-Payora-Timestamp: $TS" \
  -H "X-Payora-Signature: $SIG" \
  -H "Idempotency-Key: rev-share-2026-07" \
  -H "Content-Type: application/json" \
  -d '{"currency":"USDT","items":[
    {"address":"TXy...","amount":"12.50","tag":""},
    {"address":"TAb...","amount":"4.00","tag":""}
  ],"note":"July affiliate rev-share"}'

Full request and response shapes, plus the payout status and cancel endpoints, live in the API docs. A still-pending batch can be cancelled with POST /v1/payout/{id}/cancel, which releases the held balance back to you.

Idempotency: a retried cron run never double-pays

This is the single most important detail for automated affiliate payouts. Cron jobs fail halfway. A network blip drops the response after the server already created your batch, your retry logic fires, and now you are one nervous moment from paying every affiliate twice.

Send an Idempotency-Key header with a value that is stable for the payout cycle — the cycle id itself is ideal, for example rev-share-2026-07. The first request creates the batch; any retry carrying the same key returns the same batch_id and creates nothing new. A different payload under a key that is already committed comes back as a 409 idempotency_conflict instead of silently forking. Build the key from your billing period, not a random UUID per attempt, and a failed run is safe to simply run again.

Reconcile with the payout.sent webhook and per-item tx hashes

You should never mark a commission "paid" in your own database off an optimistic guess. Wait for proof. After the configured release flow completes and Payora has transaction evidence for the batch items, it fires a signed payout.sent webhook carrying the batch_id and each item with its on-chain tx_hash. It is signed and verified with the same HMAC-SHA256 scheme as invoice.paid, so the signature-verification guide applies unchanged.

The reconciliation loop is simple and audit-friendly:

  1. Submit the cycle's batch with the period as the idempotency key.
  2. On the payout.sent webhook, verify the signature, then match items back to affiliates by address and amount.
  3. Store each tx_hash against the commission so a partner asking "where's my money" gets a block-explorer link, not a support ticket.

If you would rather poll, GET /v1/payout/{id} returns the same per-item status and tx hashes on demand.

Fees: favour a cheap network for many small payouts

Accepting money on Payora is 0%. The configurable move fee (1.5% on the Free plan, plus the coin’s network fee) applies to payouts and is held per item alongside the batch, and the on-chain network fee is separate and unavoidable. For affiliate runs — lots of small amounts — the network fee is where you win or lose, so the coin and network you choose matter more than anything else.

Paying USDT on Tron or on a cheap EVM chain like Polygon or Base costs cents per transfer; paying the same commissions in native ETH on Ethereum mainnet at a busy hour can cost more than the commission itself. Pick the network first, then the payout size stops mattering. There is a full breakdown in the guide on reducing crypto payment fees.

Strict validation stops a bad address from costing you

A payout run is unforgiving of typos because it is final. Payora validates the whole batch before it holds a single coin: if any address is malformed or any amount has more decimal places than the coin supports, the entire request is rejected with HTTP 422 and the offending item indexes. It is all-or-nothing on purpose — a run never silently drops a partner or truncates an amount. Fix the flagged rows and resubmit. Because a bad affiliate address bounces the batch instead of eating the funds, one partner who pasted their address wrong cannot cost you the payment.

Put it together

An affiliate program on Payora looks like this: partners submit an address, your platform builds the cycle's payout list, you POST it with the period as the idempotency key on a cheap network, strict validation catches bad rows, your team follows the configured approval and release flow, and the payout.sent webhook writes transaction evidence back to every commission. Create a free account to get API keys, or read the mass payouts page to see the batch flow end to end.

Comments

Ready to get started?

Create an account and have your first invoice running in under an hour.

Cosa risponde questa pagina