Brand-paid offers inside the rewards tab you built.
Offers agreed with you, in your own screens, through the Offer API. Advertisers pay for each action; you choose what members get on most offers.
Sign-up is by request. We reply by email.
Partner offers
- Harbor Blocks Install the game $2.10 back
- Tidewater Putt Three steps in the game $3.05 back
- Copper Kitchen Create an account $1.55 back
- Quiet Orchard Install the game $1.20 back
Cash back lands once the partner confirms the step.
Who it's for
For banks with a rewards tab to fill.
- You have a rewards or earn area Cash back, points or a balance members already check.
- You build your own screens Your designers own the layout. We send data, not a widget.
- You approve every partner We agree each offer with you before it's live.
Not you? Buying sign-ups for your bank? See banking for advertisers
How it works
From an agreed list to a credited member.
-
We agree the list
Your team sees each offer before it's live, and we approve offers on your account one by one. Build on the Offer API, or start faster with the Hosted Offerwall.
#yourbank-affiliateos Shared with AffiliateOSToday
AOAffiliateOS team
Four offers for the rewards tab: Harbor Blocks, Tidewater Putt, Copper Kitchen and Quiet Orchard. No finance or gambling offers, per your list.
YouYou
Compliance approved all four. Offer text as the advertiser wrote it.
AOAffiliateOS team
Approved on your account. They're in your API response now.
-
Pull them into your screens
One call returns the offers on your account with payouts, steps and a tracking link each. A few campaigns we run ourselves can reach any account, approved-only ones included, so block any offer you didn't agree with
block_offer_ids.Offer API, one rowGET /publisher/offers ?country=US&platform=ios &vertical=none &block_offer_ids=aff_7q20 { "name": "Harbor Blocks", "effectivePayoutUsd": 4.2, "trackingUrl": "…/click?…&sub_id={SUB_ID}&device_id={DEVICE_ID}" }IDs and amounts are examples from our fictional world. -
Verify, then credit
Each conversion and reversal sends a signed postback. Take out
verifier, recompute the HMAC-SHA256 of the full URL with your secret, compare, then credit the member.BASEmust be the scheme and host in your postback URL.Verify a postback (Node)const crypto = require("node:crypto"); const SECRET = process.env.AFOS_SECRET; const BASE = "https://api.yourbank.example"; const url = new URL(req.url, BASE); const p = url.searchParams; const sig = p.get("verifier"); p.delete("verifier"); const expected = crypto .createHmac("sha256", SECRET) .update(url.toString()) .digest("hex"); if (expected !== sig) return res.status(401).end(); // credit p.get("sub_id")IDs and amounts are examples from our fictional world.
Today
AffiliateOS team
Four offers for the rewards tab: Harbor Blocks, Tidewater Putt, Copper Kitchen and Quiet Orchard. No finance or gambling offers, per your list.
You
Compliance approved all four. Offer text as the advertiser wrote it.
AffiliateOS team
Approved on your account. They're in your API response now.
GET /publisher/offers
?country=US&platform=ios
&vertical=none
&block_offer_ids=aff_7q20
{
"name": "Harbor Blocks",
"effectivePayoutUsd": 4.2,
"trackingUrl": "…/click?…&sub_id={SUB_ID}&device_id={DEVICE_ID}"
} const crypto = require("node:crypto");
const SECRET = process.env.AFOS_SECRET;
const BASE = "https://api.yourbank.example";
const url = new URL(req.url, BASE);
const p = url.searchParams;
const sig = p.get("verifier");
p.delete("verifier");
const expected = crypto
.createHmac("sha256", SECRET)
.update(url.toString())
.digest("hex");
if (expected !== sig) return res.status(401).end();
// credit p.get("sub_id") What your members see
Our data, drawn by your app.
The Offer API sends fields, not a design. Pick a field to see where it lands in your rewards tab.
{
"id": "aff_hb40",
,
,
"goals": [
{
"id": "g1",
,
}
],
} Partner offers
Money
What you get paid for.
Install offers pay you once, at install; later steps carry a member reward we don't pay you for. Event-paid offers list what each step pays.
Pay shapes that fit
- Pay per install (CPI)
- Games and apps members try for cash back. One payout at install.
- per install
- Pay per sign-up or trial
- One payout when the advertiser confirms the action.
- per action
- Pay per event
- Some offers pay on two or more steps. Each step's price is on the offer.
- per step
Live now, in these categories
- Monopoly Go $9.49 per install
- Ancestry.com $6.00 per free-trial start
- RAID: Shadow Legends $8.82 per install
- myPurina: Install and Register $3.50 per sign-up
- Travel Town $5.89 per install
- Whatnot $13.09 per sign-up
Tracking and money
Tracking and money work the same everywhere.
One conversion, in order: your user's tap, our click record, the advertiser's confirmation, then a signed postback to your server.
- Tap u_48213
- Click clk_7Q2f81
- Conversion advertiser confirms
- Postback signed
- Your server 200 OK
-
Click Tracking
Every tap is recorded with your user's ID and up to ten of your own values, sub1 to sub10.
How clicks are tracked -
Signed postbacks
Each one carries an HMAC-SHA256 verifier made with your secret. Without a secret, we don't send.
How postbacks work -
Fraud Defense
Suspect installs are held, unpaid, until reviewed. Traffic Quality lists the users we reject, with the reason.
How fraud checks work -
Reporting
Trace any conversion from tap to your server, or download every conversion as a CSV.
How reporting works
Before you start
Rules for banking apps.
What's allowed, what's yours to handle and where we say no.
- Approval
Offers are approved one by one on your account.
- Required
Offer text comes from the advertiser. Keep claims about rates, bonuses and terms exactly as approved.
- Ask first
Tell us what to leave out, such as other banks. On the Offer API,
vertical=noneleaves out offers we tag as sports betting or real-money gaming. - Your job
Your own disclosures: what members earn, when and in what form.
Can we keep other banks and gambling off our list?
Yes. We agree offers with you one by one. In your API request, vertical=none leaves out offers we tag as sports betting or real-money gaming, and block_offer_ids blocks any other offer by ID.
Can it match our design?
Yes. The Offer API sends data: names, images, steps, payouts and a tracking link. Your app draws every pixel.
Do you send us members' personal data?
No. The postback carries the member ID you gave us, the offer, the status and the payout. You keep the member record.
Cash back or points?
Either. We pay you in dollars per conversion, and you decide what the member gets and in what form. Where the advertiser sets a reward for a step, the API marks it with userRewardIsAdvertiserSet; pay members that amount.
Is there something for our vendor review?
Start with our security page, then email hello@affiliateos.ai with anything your review needs.
Fill your rewards tab with offers you approved.
Sign-up is by request. We reply by email.