# Affonso — Affiliate Software to Scale Your SaaS
> Launch your SaaS affiliate program in under 15 minutes.
> Starting at €15/mo — no transaction fees, fraud detection, managed payouts in 190+ currencies.
## What is Affonso?
Affiliate software for SaaS. All you need to launch and manage your affiliate program, with the tools that help you find affiliates who drive revenue.
## Key Features
- **Fast setup** — Go live in minutes with built-in payment integrations (Stripe, Paddle, Polar, Creem, Dodo Payments)
- **Flexible commissions** — Fixed, percentage, one-time, or recurring payouts with per-product and per-affiliate overrides
- **Managed payouts** — We pay your affiliates worldwide via bank wire or PayPal. One invoice per month, 190+ currencies
- **Fraud protection** — Block self-referrals, detect disposable emails, flag suspicious activity automatically
- **White-label affiliate portal** — Branded dashboard with real-time analytics, 14 languages, embeddable in your app
- **Real-time analytics** — Track every click, conversion, and revenue attribution with deep campaign insights
- **GDPR-ready tracking** — Works when users decline cookies, compatible with Cookiebot, OneTrust, and any consent platform
- **Affiliate discovery** — AI-powered finder and marketplace to recruit high-quality affiliates
- **Automated invoicing** — Self-billing invoices, W-8/W-9 tax form collection, compliance included
- **Multi-level commissions** — Pay-per-lead, multi-tier, and custom commission structures
## For AI Agents
- **REST API**: https://api.affonso.io/v1 — [Documentation](https://docs.affonso.io/api/introduction)
- **OpenAPI spec**: https://api.affonso.io/openapi.json
- **MCP Server**: https://api.affonso.io/mcp — [Documentation](https://docs.affonso.io/mcp/introduction)
- **TypeScript SDK**: [@affonso/sdk](https://www.npmjs.com/package/@affonso/sdk)
- **CLI**: [@affonso/cli](https://www.npmjs.com/package/@affonso/cli)
## OAuth 2.1 Authentication
- **Authorization**: https://api.affonso.io/oauth/authorize
- **Token**: https://api.affonso.io/oauth/token
- **Dynamic registration**: https://api.affonso.io/oauth/register
- **Discovery**: https://api.affonso.io/.well-known/oauth-authorization-server
---
# Help Center
## Competitor Search — The Best Way to Start
Why searching for competitor websites is the fastest way to find high-quality affiliates
If you're not sure where to start with the Affiliate Finder, we recommend **searching for competitor websites** first. Here's why.
## Why competitor search works so well
When you search for a competitor URL, you find websites and creators that are already writing about products like yours. These people:
- **Already understand your market** — They know what your target audience cares about
- **Have existing content** — They've already written reviews, comparisons, or tutorials in your space
- **Are easier to convert** — They're familiar with affiliate programs in your niche and know how they work
- **Have the right audience** — Their readers are already looking for products like yours
This makes them the lowest-hanging fruit for your affiliate program.
## How to do it
1. Go to **Discovery** and start a **New Search**
2. Enter a competitor's website URL (e.g. `competitor.com`)
3. Browse the results — you'll see websites that mention or link to that competitor
4. Add the best matches to your **Shortlist**
## What to look for
Focus on creators who:
- Have written detailed reviews or comparisons (not just a passing mention)
- Regularly publish content in your niche
- Have an engaged audience (comments, social shares)
## Next steps
Once you've built a shortlist from competitor searches, you can [find their email addresses](/help/affiliate-finder/find-email-addresses) and [start your outreach](/help/affiliate-finder/shortlist-and-outreach).
**Pro tip:** Don't stop at one competitor. Run searches for 3-5 competitors to build a solid list of potential affiliates.
---
## Discovery Credits
Understand how discovery and email credits work in the Affiliate Finder
The Affiliate Finder uses two types of credits: **discovery credits** for searching and **email credits** for looking up contact information.
## Discovery Credits
Discovery credits are used when you run a search. Each search costs 1 discovery credit.
| Plan | Discovery Credits / Month |
|------|--------------------------|
| Free | 5 |
| Launch | 15 |
| Growth | 35 |
| Elite | 50 |
## Email Credits
Email credits are used when you look up an email address for a website. Each lookup costs 1 email credit.
| Plan | Email Credits / Month |
|------|----------------------|
| Free | — |
| Launch | — |
| Growth | 50 |
| Elite | 250 |
## Yearly plans
On a yearly plan, you receive **all 12 months of credits upfront**. For example, Elite yearly gives you 600 discovery credits and 3,000 email credits from day one — so you can run larger campaigns right away without worrying about monthly limits.
## Good to know
- **Credits reset monthly** on monthly plans — your allocation refreshes at the start of each billing cycle
- **Cached results are free** — If you look up the same website again within 30 days, it won't cost a credit
- **Use credits wisely** — Shortlist first, then use email lookup only on your top candidates
## Checking your balance
You can see your remaining credits at the top of the Discovery page in your dashboard.
---
## Finding Email Addresses
How to use the email lookup to find contact information for potential affiliates
Once you've found potential affiliates, you'll need their contact information to reach out. The email lookup feature helps you find email addresses for the websites in your search results or shortlist.
## How to use it
Click the **Find Email** button next to any result. The system will look up contact information for that website and show you the results.
## What you get
We use a waterfall enrichment process that checks multiple data sources to find the best contact email for a website. In some cases, multiple emails may be found — the most relevant one is shown first.
## Credits
Each email lookup costs **1 email credit**. Your monthly allocation depends on your plan:
| Plan | Email Credits / Month |
|------|----------------------|
| Launch | — |
| Growth | 50 |
| Elite | 250 |
**Yearly plans** receive all 12 months of credits upfront — so on Elite yearly you'd get 3,000 email credits right away.
If you look up the same website again within 30 days, it won't cost an additional credit — you'll see the cached result.
For more details on credits, see [Discovery Credits](/help/affiliate-finder/discovery-credits).
## Tips
- **Use email lookup selectively** — Don't burn credits on every result. First shortlist the most promising candidates, then find their emails
- **Look at the website first** — Some websites have their contact info right on their page, no credit needed
---
## How to Search for Affiliates
Learn how to use the search to find affiliates that match your niche
The Affiliate Finder lets you search for potential partners using keywords or competitor URLs. Here's how to get started.
## Starting a new search
1. Go to **Discovery** in the sidebar
2. Click **New Search**
3. Enter your search query — this can be keywords related to your niche (e.g. "project management tools") or a competitor's website URL
4. Review the results
## Understanding the results
Each result shows you:
- **Website/Creator** — The name and URL of the potential affiliate
- **Niche relevance** — How closely they match your search
- **Traffic & reach** — An estimate of their audience size
- **Email** — Contact information (if found or after using email lookup)
## Tips for better results
- **Be specific** with your keywords — "best CRM for startups" works better than just "CRM"
- **Try different angles** — Search for your product category, related topics, or competitor names
- **Start with competitor searches** — See the [Competitor Search](/help/affiliate-finder/competitor-search) article for why this is the best starting point
## Adding to your shortlist
Found someone interesting? Click the **Add to Shortlist** button to save them. You can review and manage all your saved candidates in the [Shortlist](/help/affiliate-finder/shortlist-and-outreach).
---
## Shortlist & Outreach
How to manage your shortlist and reach out to potential affiliates
The shortlist is where you collect all your top affiliate candidates before reaching out to them.
## Managing your shortlist
Go to **Discovery > Shortlist** to see all the candidates you've saved. From here you can:
- Review your saved candidates
- Find email addresses for candidates you haven't looked up yet
- Remove candidates that are no longer relevant
## Exporting your shortlist
When you're ready to start outreach, click **Export** to download your shortlist as a CSV file. The export includes all the information you've gathered — website, name, email address, and more.
## Starting your outreach
We recommend uploading your exported CSV to a dedicated outreach tool (like Instantly, Smartlead, or similar) to automate your email campaigns. This way you can:
- Send personalized emails at scale
- Set up automated follow-up sequences
- Track open rates and replies
**Tip:** A good outreach sequence typically has 3-4 emails over 2 weeks. Keep it short, personal, and focused on why your program is a great fit for their audience.
## What makes a good outreach message
- **Be personal** — Reference their content or website specifically
- **Lead with value** — Explain what's in it for them (commission rates, audience fit)
- **Keep it short** — Nobody reads long cold emails
- **Include a clear CTA** — "Want me to set you up?" works better than a wall of information
---
## What is the Affiliate Finder?
Learn how the Affiliate Finder helps you discover and recruit affiliates for your program
The Affiliate Finder helps you discover potential affiliates that are a great fit for your product. Instead of waiting for affiliates to find you, you can actively search for creators, bloggers, and websites in your niche and reach out to them.
## How it works
1. **Search** — Enter keywords, competitor URLs, or niche topics to find relevant websites and creators
2. **Review** — Browse through the results and see who might be a good match
3. **Shortlist** — Save the best candidates to your shortlist
4. **Find contact info** — Use email lookup to get their contact details
5. **Reach out** — Export your shortlist and start your outreach
## Where to find it
Go to **Discovery** in the left sidebar of your dashboard. From there you can start a new search or view your shortlist.
## What you need
The Affiliate Finder is available on all plans. Each plan comes with a set amount of discovery credits and email credits — yearly plans receive all 12 months of credits upfront. Check the [Credits](/help/affiliate-finder/discovery-credits) article for details.
---
## Understanding Conversion Rate & Initial EPC
Learn how your two most important performance metrics are calculated and what they mean for your success.
# Understanding Your Key Performance Metrics
Your **Conversion Rate** and **Initial EPC** are the two most important numbers for measuring affiliate success. Here's exactly how they work and what they mean for you.
## Conversion Rate: "How many clicks become customers?"
### The Simple Formula
**Conversion Rate = Paying Customers ÷ Total Clicks × 100**
### Real Example
```
Monday: You get 100 clicks on your affiliate link
Over the next 2 weeks:
→ 5 people sign up AND make their first purchase
→ 10 people sign up but never buy anything
Result: Monday shows "Conversion Rate: 5%"
```
### Key Points
- **Only counts paying customers**, not just signups
- **Appears on the day you got clicks**, even if purchases happen later
- **Updates over time** as more people convert (up to 60 days typically)
---
## Initial Earn Per Click: "How much revenue per click?"
### The Simple Formula
**Initial EPC = First Purchase Revenue ÷ Total Clicks**
### Real Example
```
Monday: You get 100 clicks
Over the next 2 weeks:
→ Customer A: First purchase $50
→ Customer B: First purchase $100
→ Customer C: First purchase $75
→ Customer A buys again: $30 (ignored for EPC)
Result: Monday shows "Initial EPC: $2.25" ($225 ÷ 100 clicks)
```
### Key Points
- **Only first purchases count** - shows true referral value
- **Repeat purchases ignored** - they're product value, not referral value
- **Includes all clicks** - even non-buyers, so don't expect huge numbers
---
## "Why do these numbers seem different from what I expected?"
### "My conversion rate seems low"
**2-5% is actually excellent!** Here's why:
- ✅ **2-5%**: Outstanding performance
- ✅ **1-2%**: Good, solid performance
- ⚠️ **0.5-1%**: Average, room for improvement
- 🔴 **<0.5%**: Needs optimization
**Remember**: We only count people who actually pay, not just visitors or signups.
### "My EPC seems small"
**$1-5 per click is great!** Industry benchmarks:
- 🏆 **$5+**: Exceptional (usually high-ticket products)
- ✅ **$2-5**: Very good performance
- ✅ **$1-2**: Solid, profitable performance
- ⚠️ **$0.50-1**: Average, can be improved
- 🔴 **<$0.50**: Needs strategy adjustment
### "The numbers keep changing"
**This is completely normal!** Both metrics update for 30-60 days because:
- People take time to decide and purchase
- Higher or lower value customers convert at different speeds
- Your true performance emerges over time
---
## When Do These Numbers Update?
### Timeline Attribution
**Both metrics appear on the day you got clicks**, regardless of when purchases happen.
```
Day 1: You share your link → 50 clicks recorded
Day 3: First purchase → Conversion rate & EPC update on Day 1
Day 7: Second purchase → Both metrics update on Day 1 again
Day 14: Third purchase → Both metrics update on Day 1 again
```
### Tracking Duration
We track conversions indefinitely, but most happen within:
- **24 hours**: 20-30% of total conversions
- **1 week**: 60-70% of total conversions
- **1 month**: 90-95% of total conversions
---
## 📈 How to Improve Your Performance
### Boosting Conversion Rate
1. **Target Better Audiences**
- Focus on people who actually need the product
- Share in relevant communities and forums
- Use educational content to pre-qualify interest
2. **Improve Your Messaging**
- Be clear about product benefits
- Address common objections upfront
- Use social proof and testimonials
3. **Time Your Promotions**
- Share when people are ready to buy (end of month, budget planning)
- Follow up with interested prospects
- Use limited-time offers strategically
### Boosting Initial EPC
1. **Promote Higher-Value Plans**
- Focus on premium tiers when appropriate
- Educate about advanced features
- Target serious businesses, not hobbyists
2. **Quality Over Quantity Traffic**
- 100 targeted clicks > 1000 random clicks
- Focus on warm audiences who trust you
- Build relationships before promoting
3. **Use Compelling Incentives**
- Exclusive discounts for your audience
- Bonus materials or consultations
- Limited-time value adds
---
## 🔍 Troubleshooting Common Issues
### "My conversion rate is 0% but people told me they bought"
**Possible causes:**
- ⏳ **Too early**: Give it 1-2 weeks minimum
- 🔗 **Different link used**: Customer may have used different method
- ❌ **Incomplete signup**: Check if customer finished all steps
- 🏷️ **Attribution issue**: They might be credited to different source
### "My numbers seem inconsistent"
**This is normal because:**
- Different quality of traffic on different days
- Seasonal buying patterns
- Various customer types convert at different rates
- Market conditions and competition changes
### "When should I worry about performance?"
**Give any campaign 2-4 weeks** before making big changes. Early data can be misleading.
**Red flags after 1 month:**
- Conversion rate consistently under 0.5%
- EPC under $0.25
- No conversions at all with 200+ clicks
---
## 🎯 Pro Tips for Success
### Set Realistic Expectations
- **Week 1**: Often looks low (only fast converters)
- **Week 2-3**: More realistic picture emerges
- **Month 2+**: True long-term performance
### Focus on Trends, Not Daily Numbers
- Look at weekly and monthly patterns
- Compare similar promotional efforts
- Track improvement over time, not absolute perfection
### Quality Metrics vs Vanity Metrics
- **Quality**: Conversion rate, EPC, customer satisfaction
- **Vanity**: Total clicks, social media likes, email opens
Focus on metrics that directly translate to income.
---
## 🏆 What Great Performance Looks Like
### Example: Successful Affiliate
```
Month 1: 1,000 clicks → 25 conversions → 2.5% conversion rate
Average first purchase: $150 → EPC: $3.75
Monthly recurring income: $750+
```
### Your Growth Path
1. **Start**: Learn what works with your audience
2. **Optimize**: Improve targeting and messaging
3. **Scale**: Do more of what's working
4. **Diversify**: Try new channels and strategies
**Remember**: Consistency beats perfection. Small improvements compound over time.
---
_💡 **Need help optimizing your performance?** Check out our other analytics guides or contact support with specific questions about your metrics._
---
## What are Credit-Based Commissions?
Reward affiliates with product credits instead of cash payouts, perfect for SaaS platforms and loyal customers
Credit-based commissions reward affiliates with product credits instead of cash payouts. This works especially well for loyal customers who naturally share your product and when you want to keep affiliates engaged with more of what they already use.
## How to Set Up Credit-Based Commissions
1. Go to your [Groups & Rewards](https://affonso.io/app/groups) settings
2. Select the affiliate group you want to add rewards to
3. Click "Add Incentive" for that group
4. Choose which products/plans trigger this incentive (monthly plans, yearly plans, one-time products, or specific products)
5. Set incentive type to "Credits" and enter the credit amount per referral
6. Configure payout conditions (lifetime, time-limited, or payment-limited)
7. Set approval settings and create the incentive
**Example:** 20 credits per referral for monthly plans, with lifetime duration and immediate approval.
**Alternative:** You can also set up [individual commission rates](/help/managing-affiliates/setting-individual-commission-rates) for specific affiliates instead of group-based rewards.
## What Happens After Setup
Unlike cash commissions, credits can be awarded instantly after verified referrals and don't require banking details or invoices. Affiliates can redeem credits for your products, upgrades, or services either automatically through your system or manually through your team.
## Credit vs. Cash Commissions
Credit rewards reduce financial burden while offering high perceived value. They work best when rewarding loyal users rather than professional marketers, and when you already have a product people love and want more of. Cash commissions remain better for creators or agencies expecting traditional payouts.
---
**Ready to implement credit-based commissions?** Contact support for help setting up your credit reward system.
---
## Double-Sided Incentives with Coupon Codes
Boost affiliate performance and customer conversion with discount codes that automatically apply to referred customers — using program-wide or unique affiliate coupons
Double-sided incentives create a win-win situation where affiliates earn commissions while their referred customers automatically receive discount codes. This powerful feature increases both affiliate motivation and customer conversion rates by providing immediate value to every referred visitor.
Affonso supports two types of coupon codes for double-sided incentives:
- **Program-Wide Coupons:** A single coupon code shared across all affiliates in a program. Every referred customer sees the same discount.
- **Unique Affiliate Coupons:** Individual coupon codes per affiliate. Each affiliate can have their own personalized discount code(s), enabling more targeted promotions and better tracking.
You can use either type — or both together. When a customer arrives via an affiliate referral link, the Affonso tracking pixel automatically makes both the program-wide coupon and the affiliate's unique coupons available in the `affonso_data` cookie.
## Option 1: Program-Wide Coupon
Program-wide coupons are the simplest way to get started. One coupon code applies to all affiliates in the program.
### Create Program-Wide Coupon
1. Navigate to your [Affiliate Program Settings](https://affonso.io/app/affiliate-program)
2. Scroll down to the **"Program-Wide Coupon Code"** section
3. Click **"Create Program Coupon"**
4. **Configure your coupon:**
- **Discount Type:** Choose percentage or fixed amount
- **Discount Value:** Set your discount amount (e.g., 20% or $10)
- **Duration:** Select "once", "forever", or "repeating"
- **Coupon Code:** Enter a memorable code (e.g., "WELCOME20")
5. Click **"Create Coupon"** to generate it across all your connected payment providers
The coupon will be automatically created in Stripe, DODO, and Polar (depending on your integrations) and becomes immediately available to all customers.
### Access the Coupon in Your Checkout
```javascript
// Get the program-wide discount
const discount = window.Affonso.getDiscount();
if (discount) {
console.log(discount.promoCode); // e.g., "WELCOME20"
console.log(discount.couponId); // Payment provider coupon ID
console.log(discount.amount); // e.g., 20
console.log(discount.type); // "percentage" or "fixed"
}
```
## Option 2: Unique Affiliate Coupons
Unique affiliate coupons give each affiliate their own personalized discount code. This is great for influencer partnerships, brand ambassadors, or any scenario where you want affiliates to promote their own codes.
### Create Unique Coupons for Affiliates
You can create unique coupon codes for individual affiliates through:
- **Dashboard:** Navigate to the affiliate's profile and create a coupon code in the **"Coupon Codes"** section
- **API:** Use the [Affonso API](/help/connect/api-setup) to create coupons programmatically via `POST /v1/coupons`
- **Self-Service:** Enable self-service coupon creation to let affiliates create their own codes from the affiliate portal
### Access Affiliate Coupons in Your Checkout
When a customer arrives via an affiliate's referral link, all of that affiliate's unique coupons are available:
```javascript
// Get all unique coupons for this affiliate
const coupons = window.Affonso.getAffiliateCoupons(); // Returns array
if (coupons.length > 0) {
const coupon = coupons[0]; // Most recently created coupon
console.log(coupon.promoCode); // e.g., "JOHN20"
console.log(coupon.couponId); // Payment provider coupon ID
console.log(coupon.amount); // e.g., 20
console.log(coupon.type); // "percentage" or "fixed"
}
```
## Using Both Together
You can combine both coupon types. A common pattern is to prefer the affiliate's unique coupon when available, and fall back to the program-wide coupon:
```javascript
// Prefer affiliate's unique coupon, fall back to program-wide
const affiliateCoupons = window.Affonso.getAffiliateCoupons();
const programDiscount = window.Affonso.getDiscount();
const coupon = affiliateCoupons.length > 0
? affiliateCoupons[0] // Use affiliate's unique coupon
: programDiscount; // Fall back to program-wide
if (coupon) {
fetch('/api/checkout', {
method: 'POST',
body: JSON.stringify({
couponId: coupon.couponId,
// ... your other checkout data
})
});
}
```
For a complete implementation guide on auto-applying coupons at checkout, see [Auto-Apply Affiliate Coupons at Checkout](/help/commission-payouts/commission/auto-apply-affiliate-coupons).
## How It Works
1. **Customer clicks affiliate link** with referral parameter (e.g., `?via=affiliate123`)
2. **Affonso tracking pixel** automatically detects the referral and fetches coupon data
3. **Coupon information is stored** in the `affonso_data` cookie — both program-wide and affiliate-specific coupons
4. **Your checkout flow** retrieves the coupon and applies it during payment
5. **Customer gets discount** while affiliate earns commission on the sale
## Access Methods
You can access coupon data using these JavaScript methods:
```javascript
// Get program-wide discount (one per affiliate program)
const discount = window.Affonso.getDiscount(); // Returns discount object or null
// Get unique affiliate coupons (all coupons for this specific affiliate)
const coupons = window.Affonso.getAffiliateCoupons(); // Returns array (empty if none)
// Get all data
const data = window.Affonso.getData();
// Example discount/coupon object:
// {
// amount: 20,
// type: "percentage",
// maxDuration: "once",
// couponId: "stripe_coupon_id",
// promoCode: "WELCOME20"
// }
```
---
## How to Reject Referrals and Commissions
Manage fraudulent activity, duplicate accounts, and invalid referrals by rejecting referrals and declining commissions in your affiliate program
Rejecting referrals and commissions gives you full control over which sales are eligible for payouts. Whether you're dealing with duplicate accounts, policy violations, chargebacks, or other fraudulent activity, Affonso provides flexible tools to manage these situations while protecting your program integrity.
> **Looking for self-referral specific guidance?** See our dedicated guide on [How to Reject a Self-Referral or Invalid Affiliate Sale](/help/faq/reject-self-referral-sales).
## Common Reasons to Reject Referrals
You might need to reject referrals and commissions for several legitimate reasons:
- **Duplicate accounts:** Same customer signing up multiple times to earn referral bonuses
- **Policy violations:** Affiliates using prohibited marketing methods (spam, misleading ads)
- **Chargebacks:** Customer disputed the charge or requested a refund
- **Invalid traffic:** Bot traffic, click fraud, or cookie stuffing attempts
- **Terms violations:** Any activity that breaches your program terms and conditions
- **Self-referrals:** Affiliates referring themselves (see our [dedicated guide](/help/faq/reject-self-referral-sales))
## How to Reject a Referral
Rejecting a referral blocks all future commissions from that specific customer relationship.
1. Navigate to your [Referrals](https://affonso.io/app/referrals) dashboard
2. Find the referral you want to reject
3. Click the **"⋯"** dropdown in the referral row
4. Select **"Change Status"**
5. Choose **"Rejected"** from the available statuses
6. Confirm the change
The referral status immediately changes to REJECTED, and any future purchases from that customer through that affiliate will no longer generate commissions.
## How to Decline Individual Commissions
Sometimes you need to reject specific commissions without blocking the entire referral relationship. This is useful for chargebacks or one-time policy violations.
### Option 1: From the Referrals Dashboard
1. Open your [Referrals](https://affonso.io/app/referrals) dashboard
2. Find the referral containing the commission
3. Click the **"⋯"** dropdown
4. Select **"View Transactions"**
5. In the transaction modal, find the specific commission
6. Click the **"⋯"** dropdown for that transaction
7. Select **"Change Status"**
8. Choose **"Declined"**
### Option 2: From the Sales Dashboard
1. Navigate to your [Sales](https://affonso.io/app/sales) dashboard
2. Locate the specific sale you want to decline
3. Click the **"⋯"** dropdown for that sale
4. Select **"Change Status"**
5. Choose **"Declined"**
The commission is immediately removed from pending payouts and marked as declined. The affiliate will no longer receive payment for that specific transaction.
## Understanding the Difference: Rejected vs Declined
It's important to understand when to use each status:
**Reject a Referral** when:
- You want to block ALL future commissions from a customer
- The referral relationship itself is invalid
- You're dealing with fraud or serious policy violations
**Decline a Commission** when:
- You need to reject ONE specific transaction
- There was a chargeback or refund
- The referral is legitimate but this specific sale isn't eligible
- You want to keep the relationship active for future purchases
## What Happens After Rejection
### When You Reject a Referral:
- Status changes to REJECTED permanently
- Future purchases from that customer won't generate commissions
- Existing pending commissions remain unless manually declined
- The referral appears as rejected in reporting and analytics
- The affiliate can still promote your program to other customers
### When You Decline a Commission:
- That specific commission is removed from pending payouts
- Other commissions from the same referral remain unaffected
- The customer can still make future purchases that generate commissions
- The declined amount is excluded from all payout calculations
## Managing Past Commissions After Rejection
**Important:** Rejecting a referral does NOT automatically decline existing commissions that were generated before the rejection. You must handle those separately.
To clean up existing commissions after rejecting a referral:
1. Open the rejected referral's transaction history
2. Review each pending or approved commission
3. Decline any commissions that should not be paid
4. Leave legitimate commissions if they were earned before the violation
This gives you granular control to handle each situation fairly while protecting your program.
## Best Practices for Managing Rejections
**Act Quickly:** Review new referrals within the first 24-48 hours to catch fraudulent activity before commissions are approved or paid out.
**Document Everything:** Keep internal notes about why referrals or commissions were rejected. This helps if affiliates question the decision or you need to review patterns later.
**Communicate Clearly:** If you reject a legitimate affiliate's commission due to policy violations, communicate the specific issue so they can correct their approach.
**Set Clear Terms:** Make your program rules explicit in your affiliate terms and conditions. Clear expectations prevent most rejection scenarios.
**Monitor Patterns:** Use the [referrals dashboard](https://affonso.io/app/referrals) filters to identify suspicious patterns like multiple referrals from similar email addresses or IP addresses.
**Review Regularly:** Schedule weekly reviews of new referrals and commissions to catch issues early and maintain program quality.
## Bulk Actions for Multiple Rejections
If you need to reject multiple referrals or commissions at once:
1. Use the [referrals dashboard](https://affonso.io/app/referrals) filters to identify problematic entries
2. Note the specific referrals or transactions you need to reject
3. Process each rejection individually to ensure accuracy
4. Consider reaching out to support for assistance with large-scale cleanup operations
---
**Need help managing complex rejection scenarios?** Contact support for personalized guidance on protecting your affiliate program from fraud and abuse.
---
## Multi-Level Commissions
Reward affiliates for recruiting other affiliates with up to 3 levels of sub-affiliate commissions
Multi-level commissions let you reward affiliates not just for their own sales, but also for the sales made by affiliates they recruit. When a sub-affiliate generates a sale, their parent affiliate automatically earns a commission — up to 3 levels deep.
**How it works:** Affiliate A recruits Affiliate B. When Affiliate B makes a sale and earns a $100 commission, Affiliate A automatically receives a multi-level commission based on your configured rate. If Affiliate B then recruits Affiliate C, the chain continues — Affiliate A earns from Affiliate C's sales too.
## Setting Up Multi-Level Commissions
1. Go to your [Groups & Rewards](https://affonso.io/app/groups) settings
2. Select the group you want to enable multi-level commissions for
3. In the **Multi-Level Commissions** section, click **"Add Level"**
4. Choose the calculation type and set the rate
5. Optionally add Level 2 and Level 3 for deeper referral chains
Levels must be added in order — you can't add Level 2 without Level 1. Removing a level automatically removes all higher levels.
## Calculation Types
### Percentage of Commission
The parent earns a percentage of the sub-affiliate's commission amount. This is the default and most common setup.
**Example with 10% at each level:**
- Sub-affiliate earns $100 commission from a sale
- Level 1 parent earns $10 (10% of $100)
- Level 2 grandparent earns $1 (10% of $10)
- Level 3 great-grandparent earns $0.10 (10% of $1)
With this mode, commissions naturally decrease at each level since each level is a percentage of the previous level's earning.
### Percentage of Sale
The parent earns a percentage of the original sale amount, regardless of the sub-affiliate's commission rate.
**Example with 5% at each level on a $200 sale:**
- Sub-affiliate earns their normal commission
- Level 1 parent earns $10 (5% of $200)
- Level 2 grandparent earns $10 (5% of $200)
- Level 3 great-grandparent earns $10 (5% of $200)
With this mode, every level earns the same amount since it's always based on the original sale.
## Per-Affiliate Overrides
You can customize multi-level rates for individual affiliates. This is useful for top performers or partners with special agreements.
1. Go to the affiliate's detail page
2. In the Multi-Level section, add or modify rates for specific levels
3. The override takes priority over the group-level configuration
Overrides follow the same level rules — no gaps allowed, and levels can't exceed the group's maximum configured level.
## How Affiliates Recruit
When multi-level commissions are active, affiliates automatically see a **recruitment link** in their portal under the **Sub-Affiliates** tab. Anyone who signs up through this link becomes their sub-affiliate. Affiliates can track their recruited sub-affiliates, see their sales activity, and monitor their multi-level earnings — all from their portal dashboard.
## Manually Assigning Parent Affiliates
You can also manually set up parent-child relationships:
1. Go to the affiliate's group page
2. Click on the affiliate and select **"Assign Parent"**
3. Search for the parent affiliate by name or tracking ID
4. Confirm the assignment
The system prevents circular references — you can't assign an affiliate as a parent if it would create a loop in the referral chain.
## Refund Handling
When a sale is refunded, multi-level commissions are handled automatically:
- **Full refund:** All related multi-level earnings are set to REFUNDED
- **Partial refund:** Multi-level earnings are proportionally reduced based on the refund ratio
- **Declined/disputed:** All related multi-level earnings follow the same status
## Things to Know
- Multi-level commissions only apply to monetary commission incentives (not credits, free months, or points)
- Parent affiliates must be in ACTIVE status to receive multi-level earnings
- If a parent affiliate in the chain is inactive, the chain stops at that level
- Multi-level earnings inherit the same hold period and approval settings as the direct commission
- Multi-level commissions are included in regular payout calculations
---
**Ready to grow your affiliate network?** Visit your [Groups & Rewards](https://affonso.io/app/groups) settings to enable multi-level commissions.
---
## Set Custom Rewards for Specific Products and Plans
Set up targeted incentives for specific products to optimize commission rates based on margins and strategic priorities
Product-specific rewards let you create targeted incentives based on what's being sold. You can offer higher commissions for premium products, special rates for new launches, or adjust rewards based on product margins and strategic priorities.
## How to Create Product-Specific Rewards
1. Go to your [Groups & Rewards](https://affonso.io/app/groups) settings
2. Select the affiliate group you want to add rewards to
3. Click **"Add Incentive"** for that group
4. Choose **"Specific products"** as your trigger option
5. **Select or create products:**
- Search for existing products in your list, OR
- Click **"Create New Product"** to add a new one
6. **If creating new products:**
- Enter product name (e.g. "Premium Plan")
- Add Price or Plan ID from your payment processor (e.g. "price_123")
- Add details (optional, e.g. "Starter Plan")
- Use **"Add another price"** for multiple pricing tiers
7. **Set incentive details:** Choose Fixed Amount, Percentage, Credits, or Free Months with your desired rate
8. **Configure payout conditions** and **approval settings**
9. Create the incentive
## What Happens After Setup
The reward applies only to sales of your selected products. Affiliates earn the specific commission rate you set for those products, while other products use different incentive rates or default group rates. You can create multiple product-specific incentives to build a comprehensive reward structure.
## Strategic Use Cases
Use product-specific rewards to offer higher commissions for premium products with better margins, create special launch incentives for new products, provide different rates for annual vs monthly plans, or adjust rewards based on strategic business priorities like customer lifetime value.
---
**Ready to create targeted rewards?** Visit your [Groups & Rewards](https://affonso.io/app/groups) settings to set up product-specific incentives.
---
## What are Groups?
Organize affiliates into logical collections for easier management and tailored commission structures
Groups let you organize affiliates into logical collections that share similar characteristics, commission structures, or business relationships. Instead of managing hundreds of partners individually, you can create meaningful segments with tailored incentives and streamlined management.
**Default Group:** Every affiliate program starts with a default group. New affiliates are automatically assigned to this group when they join your program. The group description you write will be displayed on the affiliate portal login page.
## How to Create and Manage Groups
1. Go to your [Groups & Rewards](https://affonso.io/app/groups) settings
2. Click **"Create New Group"** to open the group creation modal
3. Enter group name, description (shown on affiliate login page), and optional custom website URL
4. Save the new group
5. Click **"Manage Partners"** on any group to add or move affiliates between groups
You can search for specific affiliates and select them to move from their current group. The system will warn you when moving affiliates between groups with different commission structures.
## What Groups Enable
With groups, you can set standard commission rates for similar affiliates, manage multiple partners efficiently under one structure, create clear progression paths between different group tiers, and organize partners based on performance, specialization, or market focus. Groups are flexible - you can move affiliates between groups and adjust settings as your program evolves.
## Common Group Types
- Customer Referrals: Existing customers who refer others, often rewarded with account credits or service extensions rather than cash payouts.
- Influencers: Content creators and social media personalities who need different commission structures due to their broad reach and content-based promotion style.
- Agency Partners: Marketing agencies and consultants who bring higher-value customers and may deserve elevated commission rates.
- Integration Partners: Software companies who have integrated with your platform and promote it to their user base.
**Ready to create your first group?** Visit your [Groups & Rewards](https://affonso.io/app/groups) settings to set up organized commission structures.
---
## What are Incentives and Rewards?
Create reusable reward templates to motivate affiliates with flexible commission structures and alternative rewards
Incentives are reusable reward templates that motivate your affiliates to promote your products. Instead of setting up the same commission structure multiple times, you create it once and apply it to multiple groups or individual partners as needed.
## How to Create Incentives
1. Go to your [Groups & Rewards](https://affonso.io/app/groups) settings
2. Select the affiliate group you want to add an incentive to
3. Click **"Add Incentive"** for that group
4. **Choose products:** Select which products/plans trigger this incentive (monthly plans, yearly plans, one-time products, or specific products)
5. **Set incentive details:**
- Enter incentive name (e.g. "20% recurring commission")
- Choose type: Fixed Amount, Percentage, Credits, or Free Months
- Set the rate/value
6. **Configure payout conditions:** Lifetime, time-limited, or payment-limited
7. **Set approval settings:** Immediate, hold period, or manual review
8. Create the incentive
## Types of Incentives Available
### Monetary Incentives
- **Fixed Amount:** Set a specific amount per sale in any currency (e.g. $20 per conversion, €15 per conversion, or £10 per conversion)
- **Percentage:** Commission based on a percentage of the sale value (e.g. 10% of sale)
### Non-Monetary Incentives
- **Credits:** Reward with product credits (e.g. 10 credits per referral)
- **Free Months:** Grant free months of your service (e.g. 1 free month per sale)
- **Points:** Award points for each conversion, which can later be exchanged for benefits or perks (e.g. 100 points per referral)
## What Happens After Creation
The incentive becomes active immediately and applies to new referrals that match your product criteria. You can use the same incentive template across multiple groups, modify it for different scenarios, or create individual overrides for specific affiliates.
---
**Ready to create your first incentive?** Visit your [Groups & Rewards](https://affonso.io/app/groups) settings to set up reward templates.
---
## Automating Affiliate Payouts with Affonso
Eliminate manual payout work with Affonso's automated system that handles invoicing, payments, and tax compliance for affiliate commissions
With Managed Payouts enabled, Affonso handles the entire affiliate payment process from start to finish. No more chasing invoices, managing banking details, or worrying about tax forms — you handle one monthly invoice and we take care of everything else.
💡 **Managed Payouts are exclusively available with the Growth & Elite Plan.**
## How Managed Payouts Work
When Managed Payouts are enabled, Affonso manages the end-to-end process of distributing affiliate commissions:
### 1. Monthly Invoice – Sent NET 7
In the first week of each month, we generate an invoice summarizing all approved commissions from the previous month. Only commissions that have cleared your [program-specific hold period](/help/commission-payouts/payouts/how-to-pay-affiliate-commissions) are included.
The invoice is sent via Stripe or Revolut and includes a payment link, allowing you to complete payment with just one click. The invoice includes all necessary business information and documentation for your records.
**Service Fee:** Each invoice includes a flat $25 service fee covering operational and compliance work for global payouts (waived for Elite Plan users).
⏱️ **Important:** We begin processing affiliate payouts only after receiving your payment, so prompt payment prevents delays for your affiliates.
### 2. Pay Affonso – We Handle the Rest
You can pay the invoice using:
To cover payment processing fees charged by the payment providers, a small surcharge is added to the total invoice amount:
**Via Stripe** – 3.25% surcharge
- Credit Card
- Bank Transfer
- PayPal
- Other supported payment methods
**Via Revolut** – 2.8% surcharge
- Credit Card
- Bank Transfer
- Other supported payment methods
**Currency Notes:**
- All invoices are issued in USD
- If your program operates in another currency, we convert commission amounts to USD using the exchange rate on invoice creation day
- Additional currency conversion fees may apply for different billing currencies
### 3. Global Affiliate Payouts
Once we receive funds, we distribute affiliate earnings via:
- **Bank Wire Transfers**
- **PayPal**
**Important:** All affiliate payouts are made in USD. Different commission currencies are converted to USD using the exchange rate on invoice creation day.
**Fees:** All fees related to receiving affiliate payouts (bank or platform fees) are the affiliate's responsibility, following industry standard practice.
### 4. Tax & Compliance Handled
Affonso manages all tax and compliance tasks in the background:
- Collecting required forms from affiliates
- Generating proper documentation
- Ensuring everything stays compliant
- No paperwork or follow-ups required from you
✅ **You receive one invoice, make one payment – we handle everything else.**
### 5. High-Volume Payout Fee
For more than 25 affiliates in a single month, we charge an additional $0.50 per affiliate payout beyond the first 25.
## Why Choose Managed Payouts
**Benefits:**
- **Time-saving:** No [manual payment processing](/help/commission-payouts/payouts/how-to-pay-affiliate-commissions)
- **Compliant:** All tax and legal requirements handled
- **Scalable:** Works globally with any number of affiliates
- **Simple:** One monthly invoice covers everything
**Perfect for:**
- Growing affiliate programs
- International affiliate networks
- Businesses wanting to focus on growth, not payments
## Getting Started
Managed Payouts are only available with the **Growth Plan**. Not on Growth yet? [Upgrade your plan](https://affonso.io/pricing) to unlock automated affiliate payments and eliminate manual payout work.
---
**Questions about Managed Payouts?** Contact support to learn more about automated payment processing and Growth Plan features.
---
## How & When Affiliate Payouts Are Generated
Understanding when and how Affonso automatically creates payouts based on thresholds, hold periods, and payout frequency settings
Affonso automatically handles payout generation based on your program settings, ensuring affiliates get paid consistently while protecting your business from chargebacks and fraud.
## Conditions That Must Be Met
For Affonso to create an open payout, all three conditions must be fulfilled:
### 1. Payout Threshold is Reached
Each affiliate program has a minimum payout threshold that affiliates must earn before a payout is triggered. You can define this threshold in your program settings (typically $50-$100).
**Example:** If your threshold is $50 and an affiliate has earned $45, no payout is created. Once they reach $50+ in approved commissions, the system evaluates the next payout opportunity.
### 2. Commission Hold Period Has Passed
When a sale occurs through an affiliate, the commission doesn't become "approved" immediately. There's a hold period (in days) to account for potential refunds or disputes.
**Example:** With a 30-day hold period, an affiliate earns a $20 commission on May 1st. This commission becomes "approved" on May 31st (assuming no refund). Only approved commissions count toward the payout threshold.
### 3. Payout Frequency Check is Triggered
Once the threshold is reached with approved commissions, Affonso checks on schedule whether to create a payout based on your frequency setting:
- **Weekly:** System checks every Monday
- **Monthly:** System checks on the 1st of each month
**Example:** If an affiliate crosses the threshold on Thursday, the system generates the open payout the following Monday (for weekly frequency).
## Where to Configure These Settings
You can adjust all payout settings from your Program Details page:
1. Go to [Payout Settings](https://affonso.io/app/affiliate-program/payment-terms) in your dashboard
2. Configure your preferred options:
- **Payout threshold** (minimum amount for payout)
- **Commission hold period** (days to wait before approval)
- **Payout frequency** (weekly or monthly)
- **[Auto payout](/help/commission-payouts/payouts/automating-affiliate-payouts-with-affonso)** (optional automation)
## What Happens Next
Once an open payout is created:
- You'll see it listed under [**Payments > Pending**](https://affonso.io/app/payments)
- You can review and [send payouts manually](/help/commission-payouts/payouts/how-to-pay-affiliate-commissions) or export the data
- Affiliates will see that a payment is pending and being processed
## Troubleshooting
If a payout hasn't been created yet, check:
- Whether the affiliate has reached the threshold
- Whether their commissions are still in the hold period
- When the next payout check is scheduled
---
**Need help with payout settings?** Contact support for assistance with configuring your payout rules and schedules.
---
## How to Pay Affiliate Commissions
This article explains how to process affiliate payouts in Affonso — from exporting commissions to marking them as paid
If you're on the Launch Plan or using the Revenue Pass, affiliate payouts are handled manually by you as the program owner. Affonso helps you track, export, and manage commissions for external payment without processing payments on your behalf.
💡 **Want to automate payouts?** The Growth and Elite Plans include [managed payouts](/help/commission-payouts/payouts/automating-affiliate-payouts-with-affonso) and credit note generation.
## When Payouts Are Generated
Payouts in Affonso are automatically generated based on each program's payment term settings:
- **Monthly payouts:** Created on the first business day of each month
- **Weekly payouts:** Created on Mondays
Only commissions that meet certain [payout conditions](/help/commission-payouts/payouts/how-and-when-affiliate-payouts-are-generated) will be included in a payout.
## How to Process Manual Payouts
### 1. Review Available Payouts
Once a payout is generated, you'll see pending affiliate commissions in your [Payouts dashboard](https://affonso.io/app/payments). Here you can:
- Review all affiliate commissions due for payment
- Export payouts grouped by method (PayPal, Wise, etc.) as CSV files
- View and pay each payout individually
💡 **Tip:** The CSV export is ideal for using PayPal or Wise's bulk payment tools.
### 2. Make Payments Externally
After exporting, complete the actual payments through your preferred provider (PayPal, Wise, bank transfer, etc.).
**Important:** Affonso does not process payments directly — you are responsible for sending funds externally.
### 3. Mark Payouts as Paid
After completing external payments:
1. Return to your [Payouts dashboard](https://affonso.io/app/payments) in Affonso
2. Mark each payout as **"Paid"**
This keeps your records accurate and updates the affiliate's dashboard to show payment completion.
### 4. Credit Notes (Elite Plan)
If you're on the Elite Plan with this feature enabled:
- Affonso automatically generates credit notes for each paid affiliate payout
- Credit notes are available to both you and the affiliate for accounting purposes
- Adds transparency and bookkeeping convenience for both sides
## Summary
Manual payouts in Affonso provide flexibility while maintaining transparency and tracking:
- **[Payouts are auto-generated](/help/commission-payouts/payouts/how-and-when-affiliate-payouts-are-generated)** based on program payment terms
- **Payments must be made outside Affonso** through your preferred method
- **Always mark commissions as paid** to keep records accurate
- **Growth Plan users get automatic credit notes** for accounting
## Prefer Hands-Off Affiliate Payouts?
Tired of exporting CSVs, handling payments manually, and dealing with tax documents?
**With the Affonso Growth or Elite Plan, we handle everything:**
- [Managed payouts](/help/commission-payouts/payouts/automating-affiliate-payouts-with-affonso) via PayPal or Wise
- One monthly invoice — we pay all affiliates on your behalf
- Credit notes generated for every payout
- We manage tax handling, compliance, and payout tracking
All you do is approve — we take care of the rest.
---
**Need help with manual payouts?** Contact our support team for assistance with export processes and payment tracking.
---
## Manually Generate Payouts
Pay your affiliates exactly when you need to, not when the system decides
Your finance team needs to close the books on Friday. An affiliate is asking when they'll get paid. You ran a special promotion and want to reward participants immediately. These are real situations where waiting for the automatic payout schedule doesn't work.
Manual payout generation lets you pay affiliates on your timeline, not the system's.
## When You'll Use This
**Closing the books**: Your accountant needs affiliate payouts processed by month-end or quarter-end, regardless of when the automatic schedule runs.
**Responding to affiliate requests**: An affiliate reaches out asking about their earnings. Instead of explaining the schedule, just generate their payout and tell them it's done.
**Special promotions**: You ran a holiday campaign or special event and want to reward those affiliates right away - good for motivation and relationship building.
**Cleaning up small balances**: Some affiliates have $20 or $30 sitting there, below your threshold. Clear it out to simplify your books, even if they haven't hit the minimum.
**One-time situations**: A departing affiliate needs their final payment. A manual adjustment needs to go out. Someone asks for an exception. Handle it in seconds.
## How to Generate Manual Payouts
### Navigate to Upcoming Payments
Go to [**Payments > Upcoming**](https://affonso.io/app/payments/upcoming) in your dashboard. Click **"Generate Manual Payouts"** at the top.
### Pick Your Date Range
Select the time period you want to process. The form starts with last month's dates, but you can adjust to any range - last week, last quarter, specific campaign dates, whatever you need.
### Choose Who Gets Paid
- **All affiliates**: Everyone with eligible commissions in that date range
- **Single affiliate**: Search for and select one specific affiliate
### Override the Minimum (Optional)
Toggle this on if you want to pay affiliates who haven't reached your normal threshold. Useful for final payments or clearing small balances.
### Click Generate
That's it. The system starts processing in the background. Close the window and go back to work - you'll see the results under [**Payments > Pending**](https://affonso.io/app/payments) when it's done.
## What Happens Next
Once the processing completes:
1. Open payouts appear under [**Payments > Pending**](https://affonso.io/app/payments)
2. Affiliates see that payment is being processed
3. You can review, [send payments manually](/help/commission-payouts/payouts/how-to-pay-affiliate-commissions), or export for accounting
The system uses the same financial logic as automatic payouts - no duplicate payments, proper invoice numbering, same accuracy you'd expect.
## Common Questions
**How long does it take?**
Depends on how many affiliates and transactions. A handful of affiliates? Seconds. A hundred affiliates with lots of transactions? A few minutes. Either way, it runs in the background so you don't have to wait around.
**What if an affiliate doesn't have approved commissions?**
They won't get a payout. Only commissions that have passed the hold period and are approved get included. Same rules as automatic payouts.
**Can I generate payouts for the same date range twice?**
The system won't create duplicate payouts. If commissions are already associated with an existing payout, they're skipped.
**What if I need to cancel or redo it?**
Once generated, you'll find the payouts under Pending. You can review them there before actually sending payments. If something's wrong, contact support - they can help sort it out.
---
**Need help?** Contact support if you run into issues or have questions about your specific situation.
---
## PayPal Mass Payouts
Learn how to export affiliate payouts from Affonso and process bulk payments through PayPal Mass Payments
PayPal Mass Payments lets you pay multiple affiliates at once using a simple CSV file export from Affonso. This guide walks you through the entire process — from generating payouts to completing bulk payments in PayPal.
## Before You Start
### Prerequisites
1. **Pending payouts in Affonso** — Payouts are either [generated automatically](/help/commission-payouts/payouts/how-and-when-affiliate-payouts-are-generated) based on your program settings, or you can [manually generate payouts](/help/commission-payouts/payouts/manually-generate-payouts-for-custom-date-ranges) for custom date ranges.
2. **PayPal Business account** — Mass Payments (Payouts) requires a PayPal Business account with Payouts enabled. Personal accounts cannot send mass payments.
3. **Sufficient PayPal balance** — You must have enough funds in your PayPal balance to cover all payments. Mass payments can only be sent from your balance, not from a linked bank account or card.
## Step 1: Export PayPal Payouts from Affonso
1. Go to your [Payments dashboard](https://affonso.io/app/payments)
2. Select the **Pending** tab to view all open payouts
3. Click **Export** and choose **PayPal**
4. A CSV file will download containing all affiliates who have PayPal as their preferred payment method
The exported file includes:
- Email addresses of recipients
- Payment amounts
- Currency codes
## Step 2: Set Up PayPal Payouts
If you haven't enabled Payouts on your PayPal Business account yet:
1. Log in to your [PayPal Business account](https://www.paypal.com)
2. Go to **Business Tools** → [Make Payments](https://www.paypal.com/mep/merchantapps/businesstools)
3. Under "Make payments", click **Payouts**
4. Complete the onboarding process to enable mass payments
## Step 3: Process the Mass Payment
1. In your PayPal account, click **Pay & Get Paid**
2. Under "Make payments", select **Payouts**
3. Upload the CSV file exported from Affonso
4. Review all recipients and payment amounts
5. Confirm and send the payments
### Important Notes
- **Currency matching:** Your PayPal balance and the mass payment file must be in the same currency. If paying in multiple currencies, create separate files for each.
- **Maximum recipients:** Each mass payment can include up to 5,000 individual payments.
- **Fees:** PayPal charges 2% of the total transaction amount (capped at a maximum fee) for Payouts Web uploads, or a flat $0.25 per transaction via API.
## Step 4: Mark Payouts as Paid in Affonso
After successfully sending payments through PayPal:
1. Return to your [Payments dashboard](https://affonso.io/app/payments) in Affonso
2. Select the payouts you just processed
3. Mark them as **Paid**
This updates your records and shows affiliates that their payment has been sent.
## Troubleshooting
### "Denied" Status in PayPal
If your mass payment shows as "Denied", check that:
- You have sufficient funds in your PayPal balance
- All email addresses in the file are valid
- The currency matches your balance currency
### Recipients Without PayPal Accounts
If a recipient doesn't have a PayPal account, PayPal will notify them via email to claim the payment. Unclaimed payments are automatically returned to you after 30 days.
## Prefer Hands-Off Payouts?
Don't want to manage PayPal exports and payments manually? With [Managed Payouts](/help/commission-payouts/payouts/automating-affiliate-payouts-with-affonso) on the Growth or Elite Plan, Affonso handles everything — you pay one invoice, and we distribute funds to all your affiliates worldwide.
---
**Need help with PayPal mass payments?** Contact our support team for assistance with exports or troubleshooting.
---
## Wire Transfer Bulk Payouts
Learn how to export affiliate payout data from Affonso for processing bank wire transfers
For affiliates who prefer traditional bank transfers, Affonso lets you export all necessary payment details for processing wire transfers through your bank. This guide explains how to export the data and what to do next.
## Before You Start
### Prerequisites
1. **Pending payouts in Affonso** — Payouts are either [generated automatically](/help/commission-payouts/payouts/how-and-when-affiliate-payouts-are-generated) based on your program settings, or you can [manually generate payouts](/help/commission-payouts/payouts/manually-generate-payouts-for-custom-date-ranges) for custom date ranges.
2. **Business bank account** — Most banks offer batch/bulk wire transfer functionality for business accounts. Check with your bank about their specific requirements and file formats.
## Step 1: Export Wire Transfer Payouts from Affonso
1. Go to your [Payments dashboard](https://affonso.io/app/payments)
2. Select the **Pending** tab to view all open payouts
3. Click **Export** and choose **Wire Transfer**
4. A CSV file will download containing all affiliates who have bank transfer as their preferred payment method
The exported file includes all necessary details:
- Recipient name
- Bank name
- IBAN (International Bank Account Number)
- SWIFT/BIC code
- Payment amount
- Currency
## Step 2: Process Transfers Through Your Bank
Since every bank has different procedures for bulk or batch wire transfers, the exact steps will vary depending on your financial institution. Generally, you'll need to:
1. **Log in to your business banking portal**
2. **Navigate to payments or transfers** — Look for options like "Batch Payments", "Bulk Transfers", or "File Upload"
3. **Upload or import the CSV file** — Some banks may require reformatting the data to match their specific template
4. **Review all transfers** — Verify recipient details and amounts
5. **Authorize the payments** — May require additional authentication or approval
### Bank-Specific Considerations
- **File format:** Some banks require specific CSV formats or even XML files. You may need to adjust the exported data to match your bank's requirements.
- **Batch limits:** Banks often have limits on the number of transfers per batch or daily/monthly limits.
- **Processing time:** International wire transfers typically take 1-5 business days depending on the destination country.
- **Fees:** Wire transfer fees vary significantly by bank and destination. International transfers often incur higher fees than domestic ones.
## Step 3: Mark Payouts as Paid in Affonso
After initiating the transfers through your bank:
1. Return to your [Payments dashboard](https://affonso.io/app/payments) in Affonso
2. Select the payouts you just processed
3. Mark them as **Paid**
This updates your records and shows affiliates that their payment has been initiated.
## When to Use Wire Transfers
Wire transfers are ideal when:
- Affiliates don't have PayPal or Wise accounts
- Large payment amounts make wire fees more economical
- Affiliates prefer receiving funds directly to their bank account
- Operating in regions where PayPal/Wise have limited support
## Considerations
### Fees
Wire transfer fees can be significant, especially for international transfers. Consider:
- Your bank's outgoing wire fee
- Intermediary bank fees (for international transfers)
- Recipient's bank incoming wire fee
For smaller payments, [PayPal](/help/commission-payouts/payouts/paypal-mass-affiliate-payouts) or [Wise](/help/commission-payouts/payouts/wise-bulk-affiliate-payouts) may be more cost-effective.
### Currency Conversion
If paying affiliates in different currencies, your bank will apply their exchange rates. These are often less favorable than services like Wise. Consider whether it's more economical to use Wise for multi-currency payments.
## Prefer Hands-Off Payouts?
Don't want to manage wire transfers manually? With [Managed Payouts](/help/commission-payouts/payouts/automating-affiliate-payouts-with-affonso) on the Growth or Elite Plan, Affonso handles everything — you pay one invoice, and we distribute funds to all your affiliates worldwide via PayPal or bank transfer.
---
**Need help with wire transfer exports?** Contact our support team for assistance with formatting or bank-specific requirements.
---
## Wise Bulk Payouts
Learn how to export affiliate payouts from Affonso and process batch payments through Wise Business
Wise Batch Payments lets you pay multiple affiliates worldwide with low fees and competitive exchange rates. This guide walks you through exporting payouts from Affonso and processing them through Wise.
## Before You Start
### Prerequisites
1. **Pending payouts in Affonso** — Payouts are either [generated automatically](/help/commission-payouts/payouts/how-and-when-affiliate-payouts-are-generated) based on your program settings, or you can [manually generate payouts](/help/commission-payouts/payouts/manually-generate-payouts-for-custom-date-ranges) for custom date ranges.
2. **Wise Business account** — Batch payments are only available for Wise Business accounts. [Sign up for Wise Business](https://wise.com/business) if you haven't already.
3. **Sufficient balance** — Ensure you have enough funds in your Wise account or are ready to transfer the required amount.
## Step 1: Export Wise Payouts from Affonso
1. Go to your [Payments dashboard](https://affonso.io/app/payments)
2. Select the **Pending** tab to view all open payouts
3. Click **Export** and choose **Wise**
4. A CSV file will download containing all affiliates who have Wise as their preferred payment method
The exported file is formatted for direct upload to Wise Batch Payments.
## Step 2: Upload to Wise Batch Payments
1. Log in to your [Wise Business account](https://wise.com)
2. From the **Payments** menu, select **Batch**
3. Or go directly to [wise.com/batch](https://wise.com/batch)
4. Upload your CSV file from Affonso
5. Review all transfers in your batch
## Step 3: Pay for Your Batch
You can pay for your batch in two ways:
### Option A: Pay from Your Wise Account
1. Choose **Your account** as the payment method on the final step
2. The funds will be deducted directly from your Wise balance
### Option B: Pay by Bank Transfer
1. Wise will provide:
- The full amount to send
- Bank details for the transfer
- A unique payment reference (starts with **B-**)
2. Send the bank transfer using the exact amount and reference
3. Click **I have paid** to confirm
4. Wise will process payments once funds are received
**Important:** Always use your unique batch payment reference (B-ref) when sending money by bank transfer — this helps Wise complete your transfers faster.
## Step 4: Track Your Transfers
Once paid, you can track all transfers in real time from your Wise account dashboard. Each recipient will receive their payment according to Wise's standard delivery times.
## Step 5: Mark Payouts as Paid in Affonso
After your batch is processed:
1. Return to your [Payments dashboard](https://affonso.io/app/payments) in Affonso
2. Select the payouts you just processed
3. Mark them as **Paid**
This updates your records and shows affiliates that their payment has been sent.
## Wise Fees
Wise charges a fee for each transfer in your batch. The total fee is displayed before you confirm the payment. Key points:
- Fees vary by currency and destination country
- Check [Wise's pricing page](https://wise.com/pricing) for current rates
- If you've accepted a Guaranteed Rate, ensure payment is sent before it expires — otherwise payments will use the live exchange rate
## Benefits of Wise for Affiliate Payouts
- **Low fees:** Often significantly cheaper than PayPal or bank wires
- **Great exchange rates:** Mid-market rates with transparent fees
- **Global reach:** Send to 80+ countries
- **Fast delivery:** Most transfers arrive within 1-2 business days
## Prefer Hands-Off Payouts?
Don't want to manage Wise exports and batch payments manually? With [Managed Payouts](/help/commission-payouts/payouts/automating-affiliate-payouts-with-affonso) on the Growth or Elite Plan, Affonso handles everything — you pay one invoice, and we distribute funds to all your affiliates worldwide.
---
**Need help with Wise batch payments?** Contact our support team for assistance with exports or troubleshooting.
---
## API Integration
Connect Affonso to your tools and automate your affiliate program
# API Integration
Want to integrate your affiliate program into your existing workflows? The Affonso API gives you full control – no manual back-and-forth.
## What You Can Do
- Create, update, and retrieve affiliates
- Manage referrals and commissions
- Control payouts
- Pull data into your CRM, dashboard, or automation tool
## Getting Started
1. Go to **Connect → API** in your dashboard
2. Click **Create Key**
3. Set a name, permissions, and expiration
4. Copy your key (it's only shown once!)
Include your key in every request:
```
Authorization: Bearer sk_live_your_key_here
```
## Permissions
You control exactly what each key can do:
- **Affiliates**: read, write, delete
- **Referrals**: read, write, delete
- **Commissions**: read, write, delete
- **Payouts**: read, write, delete
Create separate keys for different use cases – one for your CRM, one for Zapier, one for your custom dashboard.
## Connect Any Payment Provider
Native integrations support Stripe, Paddle, Polar.sh, Creem, and Dodo Payments. But what if you use a different provider?
With the API, you can track purchases and subscriptions from any payment system. Send conversion data to Affonso when a sale happens – regardless of where the payment was processed.
## Common Use Cases
- **Connect any payment provider** – track sales from Gumroad, LemonSqueezy, or your custom checkout
- **Sync affiliates to your CRM** when they sign up
- **Build a custom reporting dashboard** with real-time data
- **Automate affiliate onboarding** through your own systems
- **Integrate with Zapier, Make, or n8n** for no-code workflows
## Full Documentation
For endpoints, request/response examples, and advanced usage:
→ [docs.affonso.io](https://docs.affonso.io/)
---
## Webhooks
Get real-time notifications when things happen in your affiliate program
# Webhooks
Stop polling for changes. Webhooks push events to your systems the moment they happen – so your tools can react instantly.
## What You Get Notified About
- **Affiliate events**: new signups, profile updates, status changes
- **Referral events**: new referrals, conversions
- **Commission events**: created, approved, rejected
- **Payout events**: initiated, completed, failed
## Setting Up Webhooks
1. Go to **Connect → Webhooks** in your dashboard
2. Click **Add Endpoint**
3. Enter your URL and select the events you want
4. Save and test your endpoint
## Security
Every webhook payload is signed with HMAC-SHA256. Verify the signature to ensure requests actually come from Affonso.
Failed deliveries are retried with exponential backoff. You can also replay failed events from the delivery log.
## Common Use Cases
- **Slack notification** when a new affiliate joins
- **CRM update** when a referral converts
- **Custom email** when a payout is processed
- **Analytics tracking** for every conversion
## Full Documentation
For payload formats, signature verification, and event details:
→ [docs.affonso.io/webhooks](https://docs.affonso.io/webhooks)
---
## How can I find affiliates? Guide to Recruiting High-Quality Affiliates
Finding the right affiliates can make or break your program's success. But where do you start? And more importantly, how do you find affiliates who will actually drive results?
Finding the right affiliates can make or break your program's success. But where do you start? And more importantly, how do you find affiliates who will actually drive results?
## Understanding Different Types of Affiliate Programs
Before diving into recruitment strategies, it's important to understand that companies use Affonso in various ways to grow through word-of-mouth marketing. The most common approaches include customer referral programs, public affiliate programs, influencer partnerships, and strategic partner marketing with complementary services.
## Start With Your Best Asset: Existing Customers
Your current customers are often your most powerful advocates. Why? They already understand your product's value and can speak authentically about their experience. But timing is everything when inviting customers to become affiliates.
Consider reaching out at these key moments:
- Right after they initially sign up, when their excitement about your product is at its peak
- After they've hit a significant milestone or success point with your product
- Following a positive NPS survey response
- After they renew their subscription
These moments represent times when customers are most likely to be enthusiastic about promoting your product.
## Beyond Your Customer Base
While existing customers form a strong foundation, there are several effective ways to expand your affiliate network. Here's how successful companies do it:
### Website Integration
Don't hide your affiliate program - make it visible. Add a link in your marketing site's footer or even in the top navigation. This passive recruitment method can bring in motivated affiliates who are already interested in your industry.
### Strategic Outreach
Building relationships with industry influencers takes time, but can yield significant results. Start by:
- Reaching out to relevant bloggers or journalists in your industry
- Searching for and connecting with top-ranked sites in your space
- Engaging with influencers who align with your brand
- Joining and actively participating in affiliate-focused groups on LinkedIn and Facebook
### Partnership Development
Some of the most successful affiliate relationships come from complementary businesses. Consider partnering with solutions that serve your target market but don't compete directly. These partnerships can lead to powerful cross-promotion opportunities.
## Landing Your Dream Affiliates
Here's something crucial to understand: your ideal affiliates rarely come to you - you need to go to them. Just like landing dream customers, recruiting top affiliates requires a proactive approach.
Take time to identify what makes an ideal affiliate for your business. Look for:
- Partners with an overlapping but non-competing audience
- Those offering complementary products or services
- Existing customers who have significant influence in your industry
**Pro Tip:** Create a spreadsheet of 20-50 dream affiliates. Include their contact information, audience size, and potential reach. Then develop a personalized outreach strategy for each one.
## Building Long-Term Success
Remember that building a thriving affiliate program is a marathon, not a sprint. It often takes several months for a program to gain real momentum. However, once it does, the multiplier effect can be remarkable - a single well-matched affiliate can generate numerous customers for your business.
Stay patient and persistent in your recruitment efforts. Focus on building genuine relationships rather than just chasing quick wins. The most successful affiliate partnerships often start with a genuine connection and shared values.
---
**Ready to start recruiting affiliates?** Our team is here to help you develop and execute your affiliate recruitment strategy.
---
## Can affiliates see customer details?
Privacy protection and what information affiliates can access about their referrals
**No, affiliates cannot see customer details or personal information.**
Affiliates only have access to aggregated performance data like total referrals, conversion statistics, commission earnings, click tracking, and performance metrics. They cannot see customer names, email addresses, purchase details, payment information, or any personal data.
This privacy protection follows GDPR and CCPA regulations while maintaining customer trust. Your customers' personal information stays private between you and them - affiliates can track their performance and earnings but cannot access individual customer details or contact information.
The only exception is when an affiliate has a direct business relationship with a customer outside of your affiliate program. Even then, they still won't see purchase details or account activity through the Affonso platform.
---
**Need more information about privacy and security?** Contact our team to learn more about how we protect your customer data.
---
## How do I customize my referral tracking parameters?
Learn how to configure and customize the URL parameters affiliates use for tracking their referrals
Affonso allows you to customize which URL parameters your affiliates can use for tracking their referrals. By default, all five standard parameters are enabled, but you can choose which ones to make available and set a default parameter that appears pre-selected in your affiliate portal.
## Available tracking parameters
Affonso supports five standard referral tracking parameters:
- `?atp=` - Affonso Tracking Parameter (default)
- `?via=` - Common alternative parameter
- `?affonso=` - Branded parameter
- `?aff=` - Short form of "affiliate"
- `?ref=` - Common abbreviation for "referral"
All enabled parameters work identically for tracking. For example, if an affiliate's tracking ID is `john-doe`, these links would all work the same:
- `https://yourdomain.com?atp=john-doe`
- `https://yourdomain.com?via=john-doe`
- `https://yourdomain.com?ref=john-doe`
## How to configure referral parameters
1. **Navigate to your affiliate program settings**
Go to your dashboard and open your affiliate program settings.
2. **Open Referral Parameters settings**
Find and click on the "Referral Parameters" section or button.
3. **Enable or disable parameters**
Use the checkboxes to enable or disable specific parameters. You must keep at least one parameter enabled.
4. **Set your default parameter**
Click on the "Default" badge next to your preferred parameter to set it as the default. The active default will appear with a red badge, while other enabled parameters show a gray "Default" badge that you can click.
5. **Save your changes**
Click "Save Changes" to apply your configuration.
## Choosing your default parameter
The default parameter is the one that will be **pre-selected** in the affiliate portal. When affiliates log in and view their tracking link, they'll see the default parameter in their link by default.
Affiliates can still switch to any other enabled parameter from the dropdown in the portal, but the default parameter provides the best initial experience.
## Why enable multiple parameters?
There are several benefits to enabling multiple tracking parameters:
**Flexibility for affiliates**
- Some affiliates may have existing tracking systems or preferences
- They can choose a parameter that fits their workflow
**Avoid conflicts**
- If an affiliate already uses `?ref=` for another purpose, they can switch to `?via=`
- Reduces friction during onboarding
**Professional appearance**
- The `?via=` parameter is widely recognized and trusted
- The `?affonso=` parameter shows you're using a professional platform
**Migration support**
- If you're switching from another platform, you can enable their parameter format
- Makes transition smoother for existing affiliates
## Best practices
**Enable all parameters initially**
- Start with all five parameters enabled to maximize flexibility
- You can always disable specific parameters later if needed
**Choose a clear default**
- `?via=` is the most widely recognized parameter
- `?atp=` is Affonso's branded parameter and works great too
- Consider your brand and what affiliates might be familiar with
**Communicate to affiliates**
- Let your affiliates know which parameters are available
- Explain that they can switch parameters in the portal if needed
**Consider your existing setup**
- If you're migrating from another platform, check what parameter they used
- Enable that parameter to maintain compatibility with existing links
## Important notes
- **All enabled parameters work identically**: There's no functional difference between parameters, only the URL format changes
- **Minimum one parameter**: You must always have at least one parameter enabled
- **Real-time changes**: Changes take effect immediately after saving
- **Existing links remain valid**: Disabling a parameter won't break existing tracking links using that parameter, but affiliates won't be able to select it in the portal anymore
## Need help?
If you have questions about configuring your referral parameters or need assistance with your affiliate program setup, please [contact our support team](mailto:hello@affonso.io).
---
## How to Disable Affiliate Links (Coupon-Only Tracking)
Learn how to run a coupon-only affiliate program by disabling affiliate links while keeping coupon code tracking active
Some businesses prefer to run affiliate programs using only coupon codes for tracking, without affiliate links. Affonso lets you disable affiliate links entirely while keeping coupon-based tracking fully functional.
## What Happens When You Disable Affiliate Links?
When you disable affiliate links for your program:
- **Affiliates will no longer see** the affiliate link section in their portal and dashboard
- **Coupon codes remain fully functional** and visible to affiliates
- **Existing affiliate links** will stop appearing in the UI (though technically they still track if someone has the URL)
- **Affiliates can only promote** using their coupon codes
This simplifies the affiliate experience when you only want to track conversions through coupons.
## When Should You Disable Affiliate Links?
Consider disabling affiliate links if:
- You run a **coupon-only affiliate program** (e.g., influencer discount codes)
- You want to **simplify the affiliate experience** by offering only one tracking method
- Your checkout process is **optimized for coupon codes** rather than URL parameters
- You want to **prevent link-based promotion** and focus on coupon sharing
## How to Disable Affiliate Links
1. Navigate to **Settings → Affiliate Program**
2. Scroll to the **"Tracking Settings"** section
3. Find the **"Affiliate Links"** toggle switch
4. Click the toggle to **disable** affiliate links
5. Click **"Save Changes"** at the bottom of the page
That's it! Your affiliates will immediately stop seeing affiliate links in their portal and dashboard.
## Can I Re-enable Affiliate Links Later?
Yes, absolutely! You can toggle affiliate links back on at any time by following the same steps. When you re-enable them, affiliates will immediately see their referral links again.
## What If I Use Both Links and Coupons?
If you want to offer both tracking methods to your affiliates, simply keep the **"Affiliate Links"** toggle enabled (this is the default). Affiliates will see both:
- Their unique referral link with tracking parameters
- Their coupon code (if you've set up program coupons or self-service coupons)
This gives affiliates flexibility in how they promote your products.
## Important Notes
- **Coupon tracking is independent**: Disabling links does not affect coupon code tracking in any way
- **No data is lost**: Existing referral data and commissions remain intact
- **No affiliate notification**: Affiliates are not automatically notified when you disable links - you may want to communicate this change to them
- **Technical links still work**: While the UI hides the links, if an affiliate already shared a link URL, it will technically still track (though we recommend communicating the change)
---
**Need help setting up a coupon-only program?** Contact our support team for guidance on configuring your affiliate program for coupon-based tracking.
---
## First-Touch vs. Last-Touch Attribution in Affiliate Tracking
Understanding which affiliate gets credit when customers click multiple affiliate links before converting
Attribution determines which affiliate gets credit for a conversion when a customer clicks multiple affiliate links before purchasing. Understanding this helps you set proper expectations with your affiliates and choose the right tracking approach for your business.
## How Attribution Models Work
**First-Touch Attribution:** The first affiliate who brought the customer gets all credit, even if they later clicked other affiliate links. This rewards affiliates for initiating interest and works well for longer sales cycles.
**Last-Touch Attribution:** The most recent affiliate before conversion gets credit, regardless of who referred first. This focuses on the final action that drove the purchase and works well for immediate conversions and promotions.
## What Affonso Uses
Affonso currently uses **last-touch attribution** by default for all programs. When a customer clicks multiple affiliate links, the most recent affiliate receives the commission.
**Example:** Customer visits via Affiliate A, then later returns via Affiliate B and purchases → Affiliate B gets the commission.
## Can I Change Attribution Models?
Currently, attribution logic is not customizable in Affonso - all programs use last-touch attribution. We're considering adding attribution model options based on user feedback.
If you'd like to see customizable attribution models, you can [vote for this feature request](https://affonso.featurebase.app/p/custom-attribution-choose-between-first-touch-and-last-touch) to help us prioritize it.
---
**Have questions about your attribution setup?** Contact our support team for clarification on how tracking works for your specific program.
---
## How do I change my tracking parameter?
Learn how to change your affiliate tracking ID in the Affonso portal
Your tracking parameter (also called tracking ID) is the unique identifier that appears in your affiliate links, like `?via=yourname`. You can change it at any time through the affiliate portal.
## Steps to change your tracking parameter
1. **Log in to your affiliate portal**
Access the affiliate portal through the link provided by the program you're promoting.
2. **Find the Advanced Settings**
Below your affiliate link, click on **Advanced Settings** to expand the options.
3. **Edit your tracking ID**
Click the pencil icon (✏️) next to your current tracking ID to enter edit mode.
4. **Enter your new tracking ID**
Type your desired tracking ID. It can contain letters, numbers, and hyphens (a-z, A-Z, 0-9, -).
5. **Confirm the change**
Click the checkmark (✓) to save. You'll see a confirmation popup warning you that:
- Your old tracking ID will no longer work
- You'll need to update all your existing links
6. **Update your links**
After confirming, make sure to update all places where you've shared your affiliate link with the new tracking parameter.
## Important notes
- **Old links stop working**: Once you change your tracking ID, any links using the old ID will no longer track your referrals.
- **Allowed characters**: Your tracking ID can contain letters, numbers, and hyphens. Hyphens cannot be at the start, end, or consecutive.
- **Minimum length**: Your tracking ID must be at least 4 characters long.
- **Must be unique**: The tracking ID must be unique within the program.
## Alternative: Use sub-parameters instead
If you want to track different campaigns or traffic sources without changing your main tracking ID, consider using [sub-parameters](/help/for-affiliates/sub-parameters) instead.
Sub-parameters let you add extra tracking information to your links:
- `?via=yourname&sub1=youtube` for YouTube traffic
- `?via=yourname&sub1=twitter&sub2=promo` for Twitter promotions
This way, you keep one consistent tracking ID while still getting detailed insights into where your conversions come from.
---
## How to Export Your Affiliate Data
Your Data. Your Control. Exporting from Affonso
At Affonso, transparency isn't just a buzzword. We understand that your data is crucial for your business, and you should have full control over it - whether you stay with us or decide to move on.
## Complete Data Export Service
While we hope Affonso continues to be your platform of choice, we respect your right to make the best decision for your business. If you need to export your data, we'll ensure you get everything you need in a format that works for you:
- **Complete affiliate database**
- **All referral records**
- **Payment history**
- **Commission structures**
- **Performance metrics**
## How to Request Your Export
Simply reach out to our team at [silvestro@affonso.io](mailto:silvestro@affonso.io), and we'll prepare a comprehensive export of your data. We'll work with you to:
- **Determine the best format for your needs**
- **Include all relevant data fields**
- **Help with understanding the exported data structure**
- **Assist with migration questions if needed**
No hidden processes, no unnecessary delays - just straightforward access to your business data when you need it.
## Our Promise
Your success matters more than keeping you locked into any platform. That's why we make data export simple and comprehensive, ensuring you can make informed decisions about your affiliate program's future.
## Before You Go
We value every customer and would love to understand if there's something we could improve. If you're considering switching platforms, let's talk first - maybe there's a solution we haven't explored yet. We are always open to feedback and ready to find ways to better serve your needs.
---
**Ready to export your data?** [Contact us at silvestro@affonso.io →](mailto:silvestro@affonso.io?subject=Data%20Export%20Request)
---
## How to integrate Affonso with next-safe-action?
Learn how to use Affonso affiliate tracking with next-safe-action Server Actions in Next.js.
[next-safe-action](https://next-safe-action.dev/) is a popular library for type-safe Server Actions in Next.js. Here's how to integrate Affonso affiliate tracking with your Server Actions.
## Basic Server Action Integration
First, make sure the Affonso tracking script is [installed in your Next.js](http://localhost:3000/help/installation-guides/frameworks/nextjs-integration) app. Then use the `affonso_referral` cookie in your Server Actions:
```typescript
'use server';
import { z } from 'zod';
import { cookies } from 'next/headers';
import { actionClient } from './safe-action';
const checkoutSchema = z.object({
email: z.string().email(),
priceId: z.string(),
});
export const createCheckoutAction = actionClient
.inputSchema(checkoutSchema)
.action(async ({ parsedInput: { email, priceId } }) => {
// Extract affiliate referral cookie
const cookieStore = await cookies(); // Next.js 15+
// const cookieStore = cookies(); // Next.js 13-14
const affiliateReferral = cookieStore.get('affonso_referral')?.value;
// Create Stripe checkout session with affiliate data
const session = await stripe.checkout.sessions.create({
customer_email: email,
line_items: [{ price: priceId, quantity: 1 }],
mode: 'subscription',
success_url: `${process.env.NEXT_PUBLIC_APP_URL}/success`,
cancel_url: `${process.env.NEXT_PUBLIC_APP_URL}/cancel`,
// Pass affiliate referral as metadata
metadata: affiliateReferral
? { affonso_referral: affiliateReferral }
: {},
});
return { checkoutUrl: session.url };
});
```
## Using Middleware for Automatic Cookie Extraction
You can create a middleware that automatically extracts the affiliate referral:
```typescript
import { createSafeActionClient } from 'next-safe-action';
import { cookies } from 'next/headers';
export const actionClientWithAffonso = createSafeActionClient({
// Handle server errors
handleServerError(e) {
console.error('Action error:', e.message);
return 'Something went wrong';
},
}).use(async ({ next }) => {
// Extract affiliate referral in middleware
const cookieStore = await cookies(); // Next.js 15+
const affiliateReferral = cookieStore.get('affonso_referral')?.value;
// Pass to action context
return next({
ctx: {
affiliateReferral,
},
});
});
```
Then use it in your actions:
```typescript
export const createCheckoutAction = actionClientWithAffonso
.inputSchema(checkoutSchema)
.action(
async ({ parsedInput: { email, priceId }, ctx: { affiliateReferral } }) => {
// affiliateReferral is now available in context
const session = await stripe.checkout.sessions.create({
customer_email: email,
line_items: [{ price: priceId, quantity: 1 }],
mode: 'subscription',
success_url: `${process.env.NEXT_PUBLIC_APP_URL}/success`,
cancel_url: `${process.env.NEXT_PUBLIC_APP_URL}/cancel`,
metadata: affiliateReferral
? { affonso_referral: affiliateReferral }
: {},
});
return { checkoutUrl: session.url };
}
);
```
## Frontend Usage
Use the action in your React components:
```tsx
'use client';
import { useAction } from 'next-safe-action/hooks';
import { createCheckoutAction } from './actions';
export default function CheckoutForm() {
const { execute, result, isExecuting } = useAction(createCheckoutAction);
const handleSubmit = (formData: FormData) => {
execute({
email: formData.get('email') as string,
priceId: 'price_1234567890',
});
};
return (
);
}
```
## Best Practices
### 1. Error Handling
Always handle cases where the affiliate referral might not be present:
```typescript
metadata: affiliateReferral ? { affonso_referral: affiliateReferral } : {};
```
### 2. Type Safety
Define types for your context:
```typescript
type ActionContext = {
affiliateReferral?: string;
};
export const actionClientWithAffonso = createSafeActionClient({
// ... config
});
```
### 3. Logging
Log affiliate referrals for debugging:
```typescript
.use(async ({ next }) => {
const affiliateReferral = cookieStore.get('affonso_referral')?.value;
if (affiliateReferral) {
console.log('Affiliate referral found:', affiliateReferral);
}
return next({ ctx: { affiliateReferral } });
});
```
## Multiple Payment Providers
The same pattern works with other payment providers:
```typescript
// Polar
const session = await polar.checkouts.create({
// ...
metadata: affiliateReferral ? { affonso_referral: affiliateReferral } : {},
});
// Dodo Payments
const session = await dodo.checkout.create({
// ...
metadata_affonso_referral: affiliateReferral,
});
```
This integration gives you the full power of next-safe-action's type safety while seamlessly passing affiliate referral data to your payment providers! 🚀
---
## My website and app are on different domains. Will affiliate tracking still work?
Discover how Affonso affiliate tracking works across multiple domains and what steps to take to ensure accurate referral attribution when your website and app are hosted separately.
Yes – but the setup differs slightly depending on whether you're using subdomains or completely separate domains. To ensure proper affiliate tracking, you’ll need to install the Affonso tracking script on both your website and your app domain.
## Subdomains (e.g. yourwebsite.com → app.yourwebsite.com)
If your site and app share the same root domain, tracking works out of the box. Just make sure the Affonso tracking script is installed on both the marketing site and the app:
```html
```
**Configuration:**
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent="true"` to the script above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
The tracking cookie (`affonso_referral`) is shared across all subdomains, so no extra work is needed.
## Different domains (e.g. yourwebsite.com → yourapp.com)
Browsers do not share cookies across domains, so you'll need to pass the affiliate tracking info manually.
When redirecting from your website to your app, forward the original affiliate tracking parameter (`?ref=abc123`, `?via=`, `?atp=`, etc.) in the URL.
**Example redirect:**
```javascript
const query = window.location.search;
window.location.href = `https://yourapp.com/signup${query}`;
```
As long as the parameter is present in the URL on your app domain, Affonso will pick it up again and set the correct cookie there.
**Important:** Be sure the tracking script is installed on both domains.
---
## Refer & Earn
Earn growing recurring commissions with our tiered affiliate program - up to 30% recurring.
Hey there! 👋
You're looking at a **performance-rewarding affiliate program** for promoting a cutting-edge affiliate marketing platform. Meta, right? Here's why promoting Affonso is your next big opportunity.
## Why This Is Different From Other Affiliate Programs
Our platform helps SaaS companies launch and scale their affiliate programs. When you refer someone who needs this, you're not just earning commission - **you're connecting them with a solution that generates real revenue.**
The result? Happy customers who stick around, generating recurring income for both them and you.
## Your Earning Potential: Tiered Commission Structure
Our commission rates grow with your success:
### 🚀 Starter Tier (0+ Referrals)
- **30% first month → 20% recurring commission**
- 180-day cookie window
- Monthly payouts ($100 minimum)
### 🎯 Advanced Tier (25+ Referrals)
- **35% first month → 25% recurring commission**
- +5% commission bonus on all sales
- 240-day cookie window
- Bi-weekly payouts ($50 minimum)
### 💎 Expert Tier (100+ Referrals)
- **40% first month → 30% recurring commission**
- +10% commission bonus on all sales
- Weekly payouts (no minimum)
- Dedicated account manager
**Plus for all tiers:**
- **💳 Flexible payments** via PayPal, Wise, or Wire transfer
- **📈 Real-time tracking** and detailed analytics
- **🎨 Marketing materials** and custom coupon codes
## What Makes Affonso Worth Promoting
#### Performance-Based Growth System
- **Your commission rates increase** as you prove your value
- Better benefits unlock at each tier (faster payouts, lower minimums)
- Built to reward serious affiliates who drive real results
#### Built Specifically For SaaS
- Designed from the ground up for SaaS businesses
- Seamlessly integrates with major payment providers
- Handles both one-time and recurring commissions automatically
#### Multiple Programs Under One Roof
- Companies can manage different products in one dashboard
- Perfect for growing SaaS businesses, Solo Founders, and Indiemakers
- Scales from startup to enterprise
## Your 3-Step Path to Recurring Income
#### 1. **Get Approved Fast**
- Sign up takes less than 60 seconds
- Quick approval process
- Start earning immediately
#### 2. **Share Your Unique Link**
- Get your personalized affiliate link
- Access our proven marketing materials
- Share with your network of entrepreneurs
#### 3. **Earn Recurring Commissions**
- **Growing commission rates** as you refer more customers
- Real-time tracking and reporting
- Regular payments with improving terms as you advance
#### Who's Your Perfect Referral?
Your network likely includes these ideal prospects:
- **SaaS Companies** looking to scale through partnerships
- **Digital Product Creators** wanting recurring revenue streams
- **Solo Founders & Indiemakers** building subscription products
- **Anyone selling subscription products** who wants growth
#### The Numbers That Matter
**Starting in the Starter Tier** - when you refer a customer on our $99/month plan:
- **Month 1:** You earn $29.70 (30% commission)
- **Month 2+:** You earn $19.80/month (20% recurring)
**As you advance tiers**, your earnings grow significantly:
- **Advanced Tier:** Up to $24.75/month recurring per customer
- **Expert Tier:** Up to $29.70/month recurring per customer
Just **10 successful referrals in Expert Tier** = **$2,970/month recurring income**
## Ready to Start Earning?
Join hundreds of affiliates already earning recurring commissions by helping SaaS companies grow.
**[Apply Now →](https://affonso.io/affiliate/apply)**
_Questions? Reach out to our affiliate team - we're here to help you succeed._
---
## How to Reject a Self-Referral or Invalid Affiliate Sale
Block self-referrals and fraudulent activity by rejecting referrals and declining commissions to protect your affiliate program
Self-referrals occur when affiliates sign up as customers and make purchases through their own referral links, which violates most program terms. Affonso gives you complete control to identify, block, and manage these situations to protect your program integrity.
## How to Handle Self-Referrals
### Step 1: Reject the Referral
Rejecting the referral prevents all future purchases from that customer from being tracked as valid referrals.
1. Navigate to your [Referrals](https://affonso.io/app/referrals) dashboard
2. Find the suspicious referral in the list
3. Click the **"⋯"** dropdown on the right
4. Select **"Change Status"**
5. Choose **"Reject"** from the status options
6. Confirm the change
### Step 2: Decline the Commission
After rejecting the referral, you need to decline the associated sale to prevent commission payout.
1. Click on the rejected referral to open the details drawer
2. Scroll down to the **Sales table** section
3. Locate the sale linked to the referral
4. Click the **"⋯"** dropdown next to the sale
5. Select **"Change Status"**
6. Choose **"Declined"**
This removes the commission from your pending payouts and ensures the affiliate won't receive payment for the fraudulent sale.
### Step 3: Remove the Affiliate (Optional)
If the affiliate hasn't generated any legitimate referrals and you want to terminate the partnership completely:
1. Go to your [Affiliates](https://affonso.io/app/affiliates) dashboard
2. Find the affiliate in the list
3. Click the **"⋯"** dropdown
4. Choose **"Reject Partnership"**
5. Confirm the action
This permanently ends the partnership and prevents any future tracking or rewards through their referral link.
## What Happens When You Reject a Self-Referral
When you reject a referral, the status changes to REJECTED in your dashboard. All future purchases from that customer will be automatically blocked from generating commissions. The declined commission is removed from pending payouts and won't be included in any future payment calculations.
If you remove the affiliate entirely, their referral link becomes inactive and any visitor using it will not be tracked or attributed to your program.
## Best Practices for Preventing Self-Referrals
Monitor new referrals regularly, especially from newly joined affiliates, to catch suspicious activity early. Look for matching email addresses, IP addresses, or similar customer information between the affiliate and referred customer. Set clear program terms that explicitly prohibit self-referrals and communicate these rules during affiliate onboarding.
Consider implementing a manual approval process for high-value sales or new affiliates until they establish a track record of legitimate referrals. Use the [referral dashboard](https://affonso.io/app/referrals) filters to quickly identify patterns that might indicate abuse.
---
**Need help managing fraudulent referrals?** Contact support for guidance on protecting your affiliate program from abuse.
---
## Postback URLs
Get real-time GET notifications when referrals, sales, or commissions happen.
Postback URLs send a GET request to your URL when events happen — perfect for ad networks, trackers, or automations.
## Quick Setup
1. Go to **Settings → Postback** in your affiliate portal
2. Click **Add Postback URL**
3. Pick your events, enter your URL with placeholders, save
## Events
| Event | Fires when… |
|-------|------------|
| `referral.lead` | New referral tracked |
| `referral.converted` | Referral becomes a customer |
| `sale.created` | Payment recorded |
| `commission.created` | Commission calculated |
## Placeholders
Insert these into your URL — they get replaced with real values:
| Placeholder | Example |
|-------------|---------|
| `{event_type}` | `commission.created` |
| `{referral_id}` | `ref_abc123` |
| `{tracking_id}` | `john` |
| `{affiliate_id}` | `aff_xyz789` |
| `{status}` | `CONVERTED` |
| `{sale_amount}` | `99.00` |
| `{sale_currency}` | `USD` |
| `{commission_amount}` | `12.50` |
| `{commission_currency}` | `USD` |
| `{transaction_id}` | `txn_123` |
| `{timestamp}` | `2026-03-05T10:30:45Z` |
## Example
**Template:**
```
https://tracker.com/pb?event={event_type}&rid={referral_id}&amount={commission_amount}
```
**What gets sent:**
```
https://tracker.com/pb?event=commission.created&rid=ref_abc123&amount=12.50
```
## Testing
Click **Send Test** on any saved postback URL. You'll see the HTTP status code and response time instantly.
## Limits
- Max **5** postback URLs
- **HTTPS** only
- **10s** timeout per request
- Up to **3 delivery attempts** with exponential backoff (5 s → 30 s)
---
## How to Use Sub-Parameters for Advanced Link Tracking
Learn how to use sub-parameters to track multiple campaigns, traffic sources, and content with a single affiliate link.
As an affiliate, you might want to track where your referrals come from - whether it's from YouTube, Twitter, a blog post, or an email campaign. Sub-parameters let you do exactly that without creating multiple affiliate links.
## What Are Sub-Parameters?
Sub-parameters (sub1 through sub5) are additional tracking fields you can add to your affiliate link. They allow you to organize and analyze your traffic sources with a single tracking ID.
Instead of creating separate links for each campaign, you can use one link with different sub-parameters:
```
https://example.com?via=john&sub1=youtube&sub2=review-video
https://example.com?via=john&sub1=twitter&sub2=promo-post
https://example.com?via=john&sub1=newsletter&sub2=weekly-digest
```
All these links use the same tracking ID (`john`), but you can see exactly which source brought each referral.
## Why Use Sub-Parameters Instead of Multiple Links?
### One Link, Unlimited Tracking
With sub-parameters, you don't need to request new tracking IDs for each campaign. Your main affiliate link stays the same - you just add parameters to track different sources.
### Better Organization
Sub-parameters help you organize your tracking by:
- **sub1**: Traffic source (youtube, twitter, blog, email, etc.)
- **sub2**: Campaign or content type (review, tutorial, promo, etc.)
- **sub3**: Additional details (video-id, post-date, etc.)
- **sub4 & sub5**: Any other tracking dimensions you need
### Detailed Analytics
When you check your affiliate dashboard, you'll see exactly which sub-parameter combinations are driving the most conversions. This helps you focus your efforts on what works best.
## How to Set Up Sub-Parameters
### In Your Affiliate Portal
1. Go to your affiliate dashboard
2. Click on **Advanced Settings** below your affiliate link
3. Select the parameter you want to use (sub1, sub2, etc.)
4. Enter a value for that parameter
5. Copy your customized link
### Manually Adding Parameters
You can also add sub-parameters directly to your link:
**Basic link:**
```
https://example.com?via=yourtrackingid
```
**With one sub-parameter:**
```
https://example.com?via=yourtrackingid&sub1=youtube
```
**With multiple sub-parameters:**
```
https://example.com?via=yourtrackingid&sub1=youtube&sub2=tutorial&sub3=jan2026
```
## Best Practices
### Keep Values Short and Consistent
Use lowercase, short identifiers:
- `youtube` instead of `YouTube_Channel_123`
- `twitter` instead of `X-formerly-Twitter`
- `blog` instead of `my-personal-blog`
### Create a Naming Convention
Decide on a consistent system. For example:
| Parameter | Purpose | Example Values |
|-----------|---------|----------------|
| sub1 | Platform | youtube, twitter, blog, email |
| sub2 | Content Type | review, tutorial, comparison |
| sub3 | Campaign | summer2026, launch, holiday |
### Track What Matters
You don't need to use all five parameters. Start with sub1 for your traffic source, and add more only if you need additional detail.
## Example Use Cases
### Content Creator
```
?via=sarah&sub1=youtube&sub2=review
?via=sarah&sub1=youtube&sub2=tutorial
?via=sarah&sub1=instagram&sub2=story
```
### Blogger
```
?via=mike&sub1=blog&sub2=comparison-post
?via=mike&sub1=blog&sub2=sidebar-banner
?via=mike&sub1=newsletter&sub2=weekly
```
### Social Media Marketer
```
?via=emma&sub1=twitter&sub2=thread
?via=emma&sub1=linkedin&sub2=article
?via=emma&sub1=reddit&sub2=comment
```
## Viewing Your Sub-Parameter Data
Your affiliate dashboard shows analytics broken down by sub-parameters, so you can see:
- Which traffic sources drive the most clicks
- Which content types convert best
- Which campaigns are performing well
Use this data to double down on your best-performing strategies.
---
**Pro Tip:** Instead of changing your tracking ID when you want to track a new campaign, use sub-parameters. It keeps your main link consistent while giving you all the tracking flexibility you need.
---
## Getting Started with the Affiliate Discovery Agent
Set up your AI-powered affiliate discovery agent to automatically find potential partners across YouTube, Instagram, websites, and more platforms.
# Start Finding Affiliates with AI
The Affiliate Discovery Agent uses AI to automatically search for potential affiliate partners across multiple platforms. Instead of manually browsing through social media and websites, let our agent find relevant creators and influencers for you.
## How the Agent Works
Set up your agent once, then run targeted search campaigns to discover affiliates. The AI analyzes content creators across platforms like YouTube, Instagram, Reddit, LinkedIn, and regular websites to find people discussing topics related to your product or mentioning your competitors.
### Configure Your Agent
Add relevant keywords that describe your product and list your main competitors. The agent uses these to identify potential partners who already create content in your space.
**Keywords examples:** "project management", "productivity software", "team collaboration"
**Competitors:** List 2-3 main competitors by name and website
### Choose Your Platforms
Select which platforms to search across:
- **Websites** - Bloggers and content sites
- **YouTube** - Video creators and reviewers
- **Instagram** - Influencers and creators
- **Reddit** - Community discussions
- **LinkedIn** - Professional content creators
- **TikTok, Facebook, X, Medium, Substack** - Additional platforms
### Start Your Search
Create a search campaign by selecting your platforms. The agent will run in the background and email you when results are ready (typically 3-15 minutes).
## Understanding Credits
Each search campaign consumes credits based on your keywords, competitors, and selected platforms. Here's how credits work:
**Credit Calculation:** (Number of Keywords + Number of Competitors) × Number of Platforms = Total Credits
**Plan Allocations:**
- **Revenue Pass & Trial:** 5 credits per month
- **Launch:** 15 credits/month (180 credits/year for yearly plans)
- **Growth:** 35 credits/month (420 credits/year for yearly plans)
- **Elite:** 50 credits/month (600 credits/year for yearly plans)
**Example:** 3 keywords + 2 competitors across 4 platforms = 20 credits total
## Maximizing Your Results
Start with your most important keywords and platforms. You can always run additional campaigns as you get more credits. Focus on platforms where your target audience is most active.
The agent presents results with contact information, audience insights, and relevance scores to help you prioritize your outreach efforts.
---
**Ready to find your first affiliates?** Go to [Affiliate Discovery Agent](https://affonso.io/app/discovery) and configure your search parameters.
---
## Connect your payment provider
Learn how to connect your payment provider to automatically track purchases and calculate affiliate commissions.
# Connect Your Payment Provider
Connect your payment provider to automatically track purchases and calculate commissions.
## How to Connect
1. Go to **Program** → **Connect** in your [dashboard](https://affonso.io/app/affiliate-program/connect)
2. Select your payment provider (e.g Stripe, Paddle, Polar, Creem, Dodo Payments etc.)
3. Follow the setup instructions
Once connected, Affonso will be notified by your payment provider about all payments, refunds, and subscription cancellations. We can then check if they came from affiliates and calculate commissions accordingly.
## Next Step
After connecting your payment provider, you need to integrate Affonso tracking into your application and checkout flow to pass referral data to your payment provider.
**→ [Pass referral data to your payment provider](/help/getting-started/payment-provider-guide)**
---
## The Affiliate Marketplace
Get discovered by more affiliates by listing your program in the Affonso marketplace.
Listing your program in the Affonso Marketplace puts it in front of every affiliate across Affonso, helping you win qualified partners without cold outreach.
## How the Marketplace Works
- The marketplace is off by default; only listed programs are visible.
- When you list your program, your affiliates see a **Marketplace** link in their left navigation. They can discover other programs, apply, and jump into those affiliate portals.
- Affiliates from other listed programs can find your program, apply, and enter your portal just as easily—unlocking cross-promotion between programs.
- Your listing shows your logo, tagline, and category so affiliates instantly understand what you offer.
## How to List Your Program
1. Open [Marketplace Settings](https://affonso.io/app/marketplace).
2. Toggle **Listed in Marketplace** on.
3. Add a clear **Tagline** that explains why affiliates should promote you.
4. Select the **Category** that best matches your business.
5. Review your **Brand Logo** (PNG/JPEG, max 2MB) to ensure it looks good in the directory.
6. Click **Save Changes**.
Your affiliates will immediately see the Marketplace entry in their portal, and new partners from other programs can start applying to yours.
---
Ready to get discovered by more affiliates? Turn on your marketplace listing today.
---
## Get Started in 3 Steps
Set up Affonso on your website in minutes and start tracking affiliate conversions to grow your business.
# Get Your Affiliate Program Running in Minutes
Set up Affonso on your website in minutes to track affiliate conversions and grow your business through partnerships. Here's how to get started in 3 simple steps:
### Add Tracking Script to Your Website
Paste our tracking script into your website's `` tag to start monitoring affiliate traffic and conversions:
```html
```
**Configuration:**
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
- Using Google Tag Manager? If you manage your scripts through GTM, [follow our GTM integration guide](/help/installation-guides/tag-managers/google-tag-manager-integration) instead.
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent="true"` to the script above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
### Installation Guides
Choose your framework or platform for detailed installation instructions:
#### Frameworks & Libraries
**Don't see your platform?** Affonso works with any website that runs JavaScript. Need help? [Email us at hello@affonso.io](mailto:hello@affonso.io)
### Track User Signups (Optional but Recommended)
While this step is optional, we **strongly recommend** implementing signup tracking for better insights and affiliate management.
### Implementation
Add this code after your user registration logic:
```javascript
// Simple: pass the user's email
window.Affonso.signup(userEmail);
// Advanced: pass an options object
window.Affonso.signup({
email: 'user@email.com', // optional
externalUserId: 'user_123', // optional
name: 'John Doe' // optional
});
```
At least one of `email` or `externalUserId` is required when using the object format. Use `externalUserId` to track users by your internal user ID instead of (or in addition to) their email address.
**Why track signups?**
- See which affiliates drive the most registrations
- Calculate conversion rates from clicks to signups
- Optimize your funnel based on affiliate performance
[**📖 Learn more about signup tracking →**](/help/installation-guides/overview/signup-tracking)
### Connect Your Payment Provider
[Connect your payment provider](/help/getting-started/connect-payment-provider) to automatically track purchases and calculate commissions.
---
## Next Steps
Once your basic setup is complete, take your affiliate program to the next level:
- Testing Your Integration
- Custom Branding
- Go-live checklist
- Invite Affiliates
- Upload Marketing Materials
- Create Affiliate Discovery Agent
- Affiliate Program Best Practices
---
**Need help?** [Contact our support team](mailto:hello@affonso.io) - we typically respond within 2 hours during business hours.
---
## Payment Provider Guide
Learn how to pass affiliate tracking data to your payment provider for accurate commission calculation.
After [connecting your payment provider](/help/getting-started/connect-payment-provider), you need to pass affiliate tracking data from your application to your payment system. This ensures that when customers make purchases, Affonso can properly attribute commissions to the right affiliates.
## Choose Your Payment Provider
## Need Help?
Don't see your payment provider or integration method? [Contact us at hello@affonso.io](mailto:hello@affonso.io) and we'll help you set it up.
---
## Bolt.new Integration
Learn how to integrate Affonso affiliate tracking into applications generated by Bolt.new.
Bolt.new is an AI-powered web development tool that generates complete applications from text prompts. To add Affonso tracking to your existing project, use the interactive system below.
## Choose Your Integration Method
Select your payment provider, then choose your integration method to copy the AI prompt:
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-buy-button.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Buy Button
Embedded purchase buttons
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-pricing-tables.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Pricing Tables
Subscription pricing tables
### Polar Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
### Paddle Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/references/paddle-billing-checkout.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Billing Checkout
Paddle Billing checkout
### Dodo Payments Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
API-based checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Shareable payment URLs
### Creem Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Programmatic checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Bolt.new.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Simple payment links
## How to Use
1. **Select your payment provider** by clicking on the logo above
2. **Choose your integration method** by clicking on the method image
3. **Complete AI prompt is automatically copied** to your clipboard
4. **Paste directly in Bolt.new** - no additional editing needed!
5. **Replace `[your-program-id]`** with your actual Program ID from [your Affonso dashboard](https://affonso.io/app/affiliate-program/connect)
---
## Cursor Integration
Learn how to integrate Affonso affiliate tracking into applications built with Cursor AI code editor.
Cursor is an AI-powered code editor that helps you build applications faster. To add Affonso tracking to your existing Cursor project, use the interactive system below.
## Choose Your Integration Method
Select your payment provider, then choose your integration method to copy the AI prompt:
## How to Use
1. **Select your payment provider** by clicking on the logo above
2. **Choose your integration method** by clicking on the method image
3. **Cursor will open automatically** with the prompt ready to use
4. **Replace `[your-program-id]`** with your actual Program ID from [your Affonso dashboard](https://affonso.io/app/affiliate-program/connect)
---
## Lovable Integration
Learn how to integrate Affonso affiliate tracking into applications generated by Lovable.
Lovable generates full-stack web applications with modern frameworks. To add Affonso tracking to your existing Lovable project, use the interactive system below.
## Choose Your Integration Method
Select your payment provider, then choose your integration method to copy the AI prompt:
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-buy-button.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Buy Button
Embedded purchase buttons
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-pricing-tables.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Pricing Tables
Subscription pricing tables
### Polar Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
### Paddle Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/references/paddle-billing-checkout.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Billing Checkout
Paddle Billing checkout
### Dodo Payments Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
API-based checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Shareable payment URLs
### Creem Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Programmatic checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Lovable.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Simple payment links
## How to Use
1. **Select your payment provider** by clicking on the logo above
2. **Choose your integration method** by clicking on the method image
3. **Complete AI prompt is automatically copied** to your clipboard
4. **Paste directly in Lovable** - no additional editing needed!
5. **Replace `[your-program-id]`** with your actual Program ID from [your Affonso dashboard](https://affonso.io/app/affiliate-program/connect)
---
## Replit Integration
Learn how to integrate Affonso affiliate tracking into applications built and deployed on Replit.
Replit allows you to build and deploy web applications directly in the browser using various frameworks and languages. To add Affonso tracking to your existing Replit project, use the interactive system below.
## Choose Your Integration Method
Select your payment provider, then choose your integration method to copy the AI prompt:
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-buy-button.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Buy Button
Embedded purchase buttons
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-pricing-tables.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Pricing Tables
Subscription pricing tables
### Polar Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
### Paddle Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/references/paddle-billing-checkout.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Billing Checkout
Paddle Billing checkout
### Dodo Payments Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
API-based checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Shareable payment URLs
### Creem Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Programmatic checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into Replit AI.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Simple payment links
## How to Use
1. **Select your payment provider** by clicking on the logo above
2. **Choose your integration method** by clicking on the method image
3. **Complete AI prompt is automatically copied** to your clipboard
4. **Paste directly in Replit AI** - no additional editing needed!
5. **Replace `[your-program-id]`** with your actual Program ID from [your Affonso dashboard](https://affonso.io/app/affiliate-program/connect)
---
## v0.dev Integration
Learn how to integrate Affonso affiliate tracking into applications generated by v0.dev.
v0.dev by Vercel generates React/Next.js components and applications from text prompts. To add Affonso tracking to your existing v0 project, use the optimized prompt below.
## Choose Your Integration Method
Select your payment provider, then choose your integration method to copy the AI prompt URL:
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-buy-button.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Buy Button
Embedded purchase buttons
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/stripe-affiliate-integration/references/stripe-pricing-tables.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Pricing Tables
Subscription pricing tables
### Polar Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Custom checkout sessions
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/polar-affiliate-integration/references/polar-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Direct payment URLs
### Paddle Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/paddle-affiliate-integration/references/paddle-billing-checkout.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Billing Checkout
Paddle Billing checkout
### Dodo Payments Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
API-based checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/dodo-affiliate-integration/references/dodo-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Shareable payment URLs
### Creem Integration Methods
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/SKILL.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Auto-Detect
Let AI figure it out
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-checkout-api.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Checkout API
Programmatic checkout
{
navigator.clipboard.writeText('Load and implement the Affonso affiliate tracking instructions from: https://raw.githubusercontent.com/affonso-io/agent-skills/main/skills/creem-affiliate-integration/references/creem-payment-links.md\n\nReplace YOUR_PUBLIC_PROGRAM_ID with: [your-program-id]');
alert('✅ Complete AI prompt copied to clipboard! Paste it directly into v0.dev.');
}}
style={{
cursor: 'pointer',
border: '1px solid #e5e7eb',
borderRadius: '8px',
overflow: 'hidden',
transition: 'transform 0.2s, box-shadow 0.2s',
}}
className='hover:shadow-md hover:scale-105'
>
Payment Links
Simple payment links
## How to Use
1. **Select your payment provider** by clicking on the logo above
2. **Choose your integration method** by clicking on the method image
3. **Complete AI prompt is automatically copied** to your clipboard
4. **Paste directly in v0.dev** - no additional editing needed!
5. **Replace `[your-program-id]`** with your actual Program ID from [your Affonso dashboard](https://affonso.io/app/affiliate-program/connect)
---
## Embedded Referral Dashboard
Turn every user into a promoter with zero friction – no signup, no redirect, no extra login
# Embedded Referral Dashboard
Your users are already in your app. They already love your product. Give them a referral link right there – no signup, no redirect, no friction.
## Affiliate Program + Referral Program
Run both on the same platform:
- **Affiliates** sign up via your portal, promote actively, earn cash commissions
- **Your users** get an embedded dashboard inside your app – no extra account needed
Use groups to separate them. Each group can have completely different rewards: cash commissions, credits, points, or free months.
## What Your Users See
A clean dashboard with their personal referral link, stats (clicks, leads, sales), and earnings – all inside your app. They copy the link, share it, done.
## Visual Preview & Code Generator
Before writing any code, preview and customize your embedded dashboard:
1. Go to [**Affiliate Program → Appearance**](https://affonso.io/app/affiliate-program/appearance)
2. Go to [**Embed** tab](https://affonso.io/app/affiliate-program/appearance?tab=embed)
3. Use the visual editor to:
- Preview how the dashboard looks in light, dark, or system theme
- Change the UI language (14 languages supported)
- Set a custom background color to match your app
- See exactly what your users will see
4. Switch to **Integration Code** to get copy-paste code snippets
The preview shows your actual branding – your logo, your colors – so you know exactly what users will see before you integrate.
## Get Started
Integration takes a few lines of code. Your server generates a token, your frontend renders an iframe.
→ [Full integration guide](https://docs.affonso.io/api/embedded-dashboard)
→ [API reference](https://docs.affonso.io/api/endpoint/embed/create-token)
---
## Astro Integration
Learn how to integrate Affonso affiliate tracking into your Astro application.
Astro's component-based architecture and island-first approach make it ideal for adding tracking scripts through layout components that work efficiently with static generation and partial hydration.
## Add tracking script to your Astro app
Astro's recommended approach is to create a layout component that includes your tracking script, which can then be reused across all your pages for consistent tracking.
1. Create or open your main layout at `src/layouts/Layout.astro`
2. Add the tracking script in the `` section
3. Use this layout across your pages:
```astro
---
export interface Props {
title: string;
}
const { title } = Astro.props;
---
{title}
```
**Configuration:**
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent='true'` to the Script component above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
**Alternative:** Use [Astro's environment variables](https://docs.astro.build/en/guides/environment-variables/) with the `PUBLIC_` prefix to manage your Program ID dynamically.
## Testing
1. Start your Astro dev server: `npm run dev`
2. Visit `localhost:4321?atp=test` (or your configured port)
3. Check browser DevTools → **Console** → type `window.affonso_referral`
4. Build and deploy: `npm run build`
5. Verify tracking in your Affonso dashboard
**Note:** Astro's island architecture means client scripts run after page load, which works well with Affonso's deferred loading.
## Next Steps
Once installed, you can access affiliate referral data and pass it to your payment provider. [Connect your payment provider →](/help/getting-started/payment-provider-guide)
---
## Django Integration
Learn how to integrate Affonso affiliate tracking into your Django application.
Django's template inheritance system makes it easy to add tracking scripts globally across your entire application using a base template that all pages extend.
## Add tracking script to your Django app
Django's recommended approach is to add the tracking script to your base template, which serves as the foundation for all other templates in your application.
1. Open or create your base template at `templates/base.html`
2. Add the tracking script in the `` section
3. Ensure all your page templates extend this base template:
```html
{% block title %}Your Site{% endblock %}
{% block content %} {% endblock %}
```
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent='true'` to the Script component above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
**Alternative:** Store your Program ID in [`settings.py`](https://docs.djangoproject.com/en/stable/topics/settings/) and reference it in your template using `{{ settings.AFFONSO_PROGRAM_ID }}`.
## Testing
1. Start your Django server: `python manage.py runserver`
2. Visit `localhost:8000?atp=test`
3. Check browser DevTools → **Application** → **Cookies** → `affonso_referral`
4. Deploy and verify tracking in your Affonso dashboard
**Note:** Make sure your `ALLOWED_HOSTS` includes your domain when deployed.
## Next Steps
Once installed, you can access affiliate referral data and pass it to your payment provider. [Connect your payment provider →](/help/getting-started/payment-provider-guide)
---
## Laravel Integration
Learn how to integrate Affonso affiliate tracking into your Laravel application.
# Laravel Integration
Laravel's Blade templating system combined with environment configuration provides a clean and maintainable way to add tracking scripts across your entire application.
## Add tracking script to your Laravel app
Laravel's best practice is to add the tracking script to your main layout template and configure your Program ID through environment variables for better security and flexibility.
1. Open your main layout file at `resources/views/layouts/app.blade.php`
2. Add the tracking script in the `` section
3. Configure your Program ID in your environment file:
```html
@yield('title', config('app.name'))@yield('content')
```
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent='true'` to the Script component above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
[Find your Program ID →](https://affonso.io/app/affiliate-program)
Create a configuration file at `config/affonso.php` and add your credentials to your `.env` file following [Laravel's configuration conventions](https://laravel.com/docs/configuration).
## Testing
1. Start your Laravel server: `php artisan serve`
2. Visit `localhost:8000?atp=test`
3. Check browser DevTools → **Application** → **Cookies** → `affonso_referral`
4. Deploy and verify tracking in your Affonso dashboard
**Note:** Ensure your session configuration allows cross-domain cookies if using subdomains.
## Next Steps
Once installed, you can access affiliate referral data and pass it to your payment provider. [Connect your payment provider →](/help/getting-started/payment-provider-guide)
---
## Next.js Integration
Learn how to integrate Affonso affiliate tracking into your Next.js application using App Router.
Next.js provides built-in Script optimization that makes it easy to add tracking scripts with optimal loading performance.
## Add tracking script to your root layout
Next.js App Router allows you to add scripts globally through the root layout component for consistent tracking across all pages.
1. Open your root layout file at `app/layout.tsx` (or `app/layout.jsx`)
2. Import the [Script component](https://nextjs.org/docs/app/api-reference/components/script) from `next/script`
3. In the `` section, add your Affonso tracking script:
```tsx
import Script from 'next/script';
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
{children}
);
}
```
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent='true'` to the Script component above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
## Testing
1. Start your development server: `npm run dev`
2. Visit `localhost:3000?atp=test`
3. Check browser DevTools → **Application** → **Cookies** → `affonso_referral`
4. Deploy and verify tracking in your Affonso dashboard
## Next Steps
Once installed, you can access affiliate referral data and pass it to your payment provider. [Connect your payment provider →](/help/getting-started/payment-provider-guide)
---
## Nuxt.js Integration
Learn how to integrate Affonso affiliate tracking into your Nuxt.js application.
# Nuxt.js Integration
Nuxt.js provides multiple ways to add tracking scripts that work seamlessly with server-side rendering, static generation, and client-side hydration.
## Add tracking script to your Nuxt app
The recommended approach is to create an `app.html` file in your root directory, which gives you full control over the HTML template that wraps your Nuxt application.
1. Create an `app.html` file in your project root directory
2. Copy the default Nuxt HTML template
3. Add your Affonso tracking script in the `` section:
```html
{{ HEAD }}
{{ APP }}
```
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
> **🍪 Need GDPR/Cookie Consent compliance?** Add `data-requires-consent='true'` to the Script component above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
**Alternative:** Configure the script via [`nuxt.config.ts`](https://nuxt.com/docs/api/nuxt-config#head) in the `app.head.script` array or create a client-side plugin.
## Testing
1. Start your development server: `npm run dev`
2. Visit `localhost:3000?atp=test`
3. Check browser DevTools → **Console** → type `window.affonso_referral`
4. Deploy and verify tracking in your Affonso dashboard
## Next Steps
Once installed, you can access affiliate referral data and pass it to your payment provider. [Connect your payment provider →](/help/getting-started/payment-provider-guide)
---
## React Integration
Learn how to integrate Affonso affiliate tracking into your React application with React Router.
React provides flexible ways to add tracking scripts, either through the useEffect hook for dynamic loading or directly in your HTML template for immediate loading.
## Add tracking script to your React app
The recommended approach is to add the script dynamically in your root component using React's useEffect hook for proper cleanup and lifecycle management.
1. Open your root component file, typically `src/App.jsx`
2. Import `useEffect` from React
3. Add the script loading logic inside useEffect:
```jsx
import { useEffect } from 'react';
function App() {
useEffect(() => {
const script = document.createElement('script');
script.async = true;
script.defer = true;
script.setAttribute('data-affonso', 'YOUR_PUBLIC_PROGRAM_ID');
script.setAttribute('data-cookie_duration', 'YOUR_COOKIE_DURATION');
script.src = 'https://cdn.affonso.io/js/pixel.min.js';
document.head.appendChild(script);
return () => {
// Cleanup on unmount
if (document.head.contains(script)) {
document.head.removeChild(script);
}
};
}, []);
return
{/* Your components */}
;
}
export default App;
```
- Replace `YOUR_PUBLIC_PROGRAM_ID` with your program ID from the [Affonso dashboard](https://affonso.io/app/affiliate-program)
- Set `YOUR_COOKIE_DURATION` to how many days the tracking should persist
> **🍪 Need GDPR/Cookie Consent compliance?** Add `script.setAttribute('data-requires-consent', 'true');` to the script creation above and [follow our GDPR integration guide](/help/installation-guides/overview/gdpr-cookie-consent-integration) for privacy-first tracking.
**Alternative:** Add the script directly to your `public/index.html` file in the `` section for immediate loading.
## Testing
1. Start your development server: `npm start`
2. Visit `localhost:3000?atp=test`
3. Check browser DevTools → **Console** → type `window.affonso_referral`
4. Deploy and verify tracking in your Affonso dashboard
## Next Steps
Once installed, you can access affiliate referral data and pass it to your payment provider. [Connect your payment provider →](/help/getting-started/payment-provider-guide)
---
## Svelte/SvelteKit Integration
Learn how to integrate Affonso affiliate tracking into your Svelte or SvelteKit application.
Svelte and SvelteKit offer flexible ways to add tracking scripts, with SvelteKit providing an HTML template approach and regular Svelte using component lifecycle hooks.
## Add tracking script to your Svelte app
For SvelteKit, the recommended approach is to modify your `app.html` template to include the tracking script globally across all routes.
1. Open `src/app.html` in your project
2. Add the tracking script in the `` section
3. Make sure it's before the `%sveltekit.head%` placeholder:
```html
%sveltekit.head%