Seatext library / BotRefund evidence
How to Migrate Affiliate Payout History into BotRefund for Unified Reporting
To migrate existing affiliate payout history into BotRefund, export your payouts from each network as a CSV with columns for network, date, amount, and status, then upload it through BotRefund's dashboard. BotRefund validates the...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
How the migration works
BotRefund is built to audit every affiliate conversion before you pay a commission. To get your historical payouts into that same reporting view, you upload a CSV file that lists each payout with its network, date, amount, and status. BotRefund then matches those rows against the conversion data it has already collected from your tracking script. The result is a unified payout report that shows both your history and your current cycle in one place.
This process does not require you to rebuild your tracking or manually re-enter years of records. The CSV import is the fastest path, and it works even if your data is spread across multiple affiliate networks or platforms.
Why unified payout reporting matters
If you manage affiliate payouts across several networks, you likely get separate reports from each platform. You have to merge them by hand, which is time-consuming and error-prone. You might miss duplicate commissions, refunds, or fraudulent conversions that appear only when you compare networks side by side.
Unified reporting gives you a single view of all payouts. You can see which affiliates are generating clean revenue and which ones are costing you money. You also get a complete audit trail, which helps when you need to justify a rejected commission or when you want to negotiate better terms with a network. BotRefund's report combines your historical payouts with the audit scores for each conversion, so you know exactly which payouts are safe to release.
Prerequisites before you start
- Export payout history from each affiliate network or platform you use. Look for options like "export commissions", "payout history", or "transaction log".
- Standardize the file format to CSV. Combine multiple files into one if needed, and add a column that identifies the network or source.
- Make sure your tracking script is installed on your site. BotRefund reads UTM parameters and click IDs from your traffic to match payouts to the right conversions.
- Confirm you have the required columns at minimum: network/affiliate identifier, payout date, amount, and status (e.g., approved, paid, rejected, refunded).
Step-by-step migration process
Step 1: Export your payout history
Go to each affiliate network or payment system and export the payout records. Include as much detail as you can: affiliate ID, payout amount, date, currency, and any status fields. CSV is the preferred format.
If your network does not offer CSV export, check if you can copy the data from a table or use an API. If your history is only in PDFs, you will need to convert those to a digital format, for example by using a spreadsheet tool that can import PDF tables.
Step 2: Clean and standardize the data
Check that all rows have a consistent date format, a positive or negative amount, and a clear status. If you have refunds or rejected commissions, make sure those are marked. Remove duplicate rows if you see them.
Decide on a single date format, such as YYYY-MM-DD. If your amounts are in different currencies, add a currency column and keep it consistent per row. For status, use standard values like "approved", "paid", "rejected", "refunded". Do not mix synonyms like "approved" and "cleared" unless you map them to a standard list.
Step 3: Build and check your CSV structure
A well-structured CSV makes the import much smoother. At a minimum, include these columns:
| Column | Example value | Purpose |
|---|---|---|
| network | Impact | Name of the affiliate network or platform |
| payout_date | 2024-01-15 | Date the payout was issued |
| amount | 150.00 | Payout amount, positive for earnings, negative for deductions |
| currency | USD | Currency of the amount |
| status | paid | Current state of the payout |
| affiliate_id | aff_12345 | Your internal identifier for the affiliate |
| click_id | clk_abc123 | Click ID from your tracking script, if available |
Here are two example rows:
network,payout_date,amount,currency,status,affiliate_id,click_id Impact,2024-01-15,150.00,USD,paid,aff_12345,clk_abc123 CJ,2024-01-20,-20.00,USD,refunded,aff_67890,
Note that the refunded row has a negative amount and no click_id. That is fine; BotRefund will still carry the status and amount.
Step 4: Upload the CSV in BotRefund
In your BotRefund dashboard, find the section for payout reconciliation or CSV upload. Select your file. The system will parse it and display a summary of what it found.
Before you upload, double-check that your CSV uses UTF-8 encoding and does not contain extra blank rows. Also make sure the first row is the header. If you have a large file (more than 10,000 rows), you might want to split it into chunks, but BotRefund can handle most files without trouble.
Step 5: Let BotRefund validate and map the data
BotRefund will attempt to match each payout row to a tracked conversion using the UTM and click ID data it has stored. Rows that cannot be matched will be flagged. You can review these and make manual adjustments if needed.
The matching logic works like this: BotRefund looks for a conversion event that has a matching click ID or UTM combination and a timestamp that aligns with the payout date. If a match is found, the payout row is linked to that conversion and receives the audit score that the conversion already has. If no match is found, the row stays unmatched.
Step 6: Review the unified report
Once the mapping is complete, you get a report that combines your historical payouts with the audit scores for each conversion. Each row is tagged as Approve, Review, Hold, or Reject, so you can see which payouts are safe to release.
For historical rows that were matched, the tag comes from the conversion's audit score. For unmatched rows, you will see them in a separate section without a tag. You can still see the total amounts and the network breakdown.
Step 7: Set up ongoing reconciliation
After the initial migration, you can upload a new CSV each payout cycle or connect your affiliate platform directly. This keeps the unified report current without extra manual work.
Most users start with CSV uploads for the first few cycles, then move to a direct integration if they want real-time data. Check with BotRefund support to see which integrations are available for your networks.
Understanding the reconciliation process in detail
Reconciliation is more than just summing numbers. BotRefund compares each payout row against the conversion data it has collected from your tracking script. The goal is to answer two questions: Did this payout actually correspond to a valid conversion? And was that conversion flagged as suspicious?
To make a match, BotRefund looks for a conversion that happened on or around the payout date and that shares the same affiliate identifier or click ID. If your tracking script captured a click ID, that is the strongest signal. If you only have a UTM parameter, BotRefund can use the combination of affiliate ID and timestamp to narrow down the match.
When a match is found, BotRefund pulls the audit score for that conversion. If the score is Approve, you know the payout is clean. If it is Review or Hold, you should investigate before paying. If it is Reject, you can decline the commission with confidence.
If you do not have tracking data for a historical period, the row will remain unmatched. You still see the payout amount, but you lose the per-conversion fraud analysis. That is why it is better to import only data that has corresponding tracking, or to accept that older rows will not have tags.
How BotRefund's scoring tags apply to historical data
BotRefund rates every conversion it tracks with one of four tags: Approve, Review, Hold, or Reject. These tags come from behavioral signals, attribution path analysis, and click-to-conversion timing. When you import historical payouts, the tags are applied to the conversion match.
For example, a payout row that matches a conversion with a clean attribution path and normal behavior gets an Approve tag. A payout that matches a conversion where the attribution path was hijacked in the final seconds gets a Reject tag. If the system is unsure, it flags the row as Review or Hold.
This means you do not have to re-audit each historical payout manually. The tags give you a fast way to prioritize which payouts to release and which ones need a second look. If you have a large history, you can filter the report by tag and handle the Reject rows first.
Keep in mind that tags are only assigned to rows that match a tracked conversion. Unmatched rows have no tag and are listed separately. You can still see the totals, but you lose the audit layer.
Common mistakes to avoid
- Uploading without dates: BotRefund needs a date to match payouts to conversion times. Missing dates will cause rows to be dropped.
- Inconsistent status values: If you mix "paid", "approved", "rejected", "refunded" with different labels, the parser may not recognize them.
- Mixing currencies: If your payouts are in multiple currencies, include a currency column and be consistent per row.
- Uploading too little data: Excluding affiliate IDs or network names makes it nearly impossible to map payouts to the right conversions.
- Ignoring duplicates: Duplicate rows can inflate your totals and cause false matches. Clean them before uploading.
Troubleshooting unmatched rows
After you upload your CSV, some rows may not match any conversion. Here are common reasons and how to fix them.
Missing click ID or UTM data
If your tracking script was not active during the period of the payout, you will not have a click ID to match. The row will appear as unmatched. Solution: leave it as is, or manually assign it to a conversion if you know the affiliate.
Date mismatch
The payout date in your CSV may not match the conversion date. BotRefund looks for conversions around the payout date, but if the dates are far apart (for example, a payout for a conversion from three months ago), the match may fail. Solution: include a conversion date column if you have it, or widen the match window in the settings.
Affiliate ID format differences
If your CSV uses one format for affiliate IDs (e.g., "aff_12345") and your tracking uses another (e.g., "12345"), BotRefund may not recognize them as the same. Solution: standardize the ID format in your CSV before upload.
Currency or status parsing errors
If a row has an unrecognized status or a malformed currency, it will be skipped. Check the error report in the dashboard. Solution: correct the values and re-upload.
Rows that are not conversion-based
Some payouts may be bonus payments, sign-up incentives, or adjustments that have no corresponding conversion. These will never match. Solution: separate them into a different import or label them clearly so you can exclude them from the audit.
How to verify the migration worked
Start by comparing the total payout amount in BotRefund with your own accounting records. The totals should match. Next, spot-check three or four known payouts to confirm the date, amount, and affiliate name are correct. Finally, confirm that any refunds or rejections appear in the report with the right status.
If you notice a discrepancy, check the unmatched rows list and the error log. It is often easier to fix a few rows and re-import than to trace through the whole file.
Key facts about BotRefund's payout reporting
| Feature | Details |
|---|---|
| Conversion audit | BotRefund audits every affiliate conversion using behavioral signals, attribution path analysis, and click-to-conversion timing, then tells you which commissions to approve, hold, or reject before payout. |
| CSV upload | For exact payout reconciliation, upload your payout CSV or connect your affiliate platform later. |
| Scoring | Before each payout cycle, you get a report showing every affiliate conversion scored and tagged: Approve, Review, Hold, Reject. |
| Setup | Start without platform integrations. BotRefund reads UTM and click IDs from your traffic. |
Limitations and when this advice does not apply
BotRefund does not process payments. It only evaluates and recommends which commissions to pay. So the migration does not touch money movement; it just brings your data into a single reporting view.
If you had no tracking script installed during the period covered by your historical payout data, BotRefund will not have the underlying conversion data to match against. In that case, your imported rows will appear in the report as records without audit scores. You still get the consolidated totals, but you lose the per-conversion fraud analysis for older payouts.
This guide assumes you have access to export data from your networks. If your payout history is stored only in PDFs or printed reports, you will need to convert those to a digital format first.
FAQ
What columns must my CSV have?
At minimum, include a network or affiliate identifier, a payout date, an amount, and a status (approved, paid, rejected, refunded). Adding more fields like currency and click ID improves matching.
Can I connect my affiliate platform instead of uploading CSV?
Yes. BotRefund lets you connect your affiliate platform later for ongoing reconciliation, but CSV is the quickest way to load historical data in bulk.
How long does the migration take?
The upload itself is immediate. Validation and mapping may take longer, especially if you have many rows or need to resolve unmatched entries. BotRefund support can help you through the process.
What if my payout history has no UTMs or click IDs?
You can still import the payout records, but BotRefund will not be able to match them to specific conversions. The report will show the payout totals without the audit details.
Does BotRefund handle refunds during migration?
If your CSV includes a status like "refunded" or "rejected", BotRefund will carry that into the report and flag those commissions appropriately.
What happens to rows that don't match any conversion?
Unmatched rows are listed separately so you can review them. You can manually assign them to a conversion or leave them as unmatched if they are truly historical records with no tracking data.
Can I import data from multiple networks in one file?
Yes. Just include a network column so BotRefund can separate the rows. The unified report will show a breakdown by network.
What if I find an error after uploading?
You can re-upload a corrected version. BotRefund will replace the previous import or add to it, depending on your settings. Check with support for the exact behavior.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
Learn more
Visit the website for more information.