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:

ColumnExample valuePurpose
networkImpactName of the affiliate network or platform
payout_date2024-01-15Date the payout was issued
amount150.00Payout amount, positive for earnings, negative for deductions
currencyUSDCurrency of the amount
statuspaidCurrent state of the payout
affiliate_idaff_12345Your internal identifier for the affiliate
click_idclk_abc123Click 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

FeatureDetails
Conversion auditBotRefund 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 uploadFor exact payout reconciliation, upload your payout CSV or connect your affiliate platform later.
ScoringBefore each payout cycle, you get a report showing every affiliate conversion scored and tagged: Approve, Review, Hold, Reject.
SetupStart 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.

Learn more