Affiliate spreadsheets don't drift by accident. They drift because commission logic lives in a silo—detached from your actual revenue data, disconnected from payment settlement, and invisible to your tax accountant until the audit begins. By the time you spot the gap, eight months of mismatched tiers, rounding errors, and missing reconciliation have already cost you 8–12% in untracked or duplicate payouts. The fix isn't a better spreadsheet. It's moving affiliate commission calculation, payout batching, and settlement reconciliation into the same platform where your invoices live. That way, every dollar of affiliate revenue flows through the same GL trail, every payout is locked to an invoice, and your tax ID, withholding, and cross-border settlement rules are enforced at source—not patched in afterward. The Math: Where Spreadsheet Affiliate Tracking Fails Most affiliate programs track commission in one of three broken ways: Manual tier routing. You paste affiliate IDs into a spreadsheet, assign tiers (5%, 10%, 15%), and calculate commission each month by hand. By month three, the spreadsheet has three versions floating around. By month six, someone's tier got updated but half the payouts didn't. Payment processor reports only. You pull a Stripe or Razorpay settlement report and trust it's accurate. But settlement reports don't show which revenue was affiliate-sourced versus direct, don't separate regional tax withholding, and don't link back to your GL. You end up with two versions of truth: your invoices say ₹100L, your payment report says ₹98L, and the ₹2L gap lives in a comment thread. Separate affiliate platform. You use a dedicated affiliate tool (Refersion, Impact, LeadDyno) that's decoupled from your invoicing and accounting stack. Every payout means a manual export, a reconciliation step you skip, and a withholding tax you calculate separately in spreadsheets anyway. You've added a tool without solving the fragmentation. All three approaches have the same root failure: commission is calculated outside your invoicing layer , so it never locks to a revenue event, never routes through your GL, and never ties to a tax ID or withholding rule. The Native Invoicing Approach: Affiliate Tiers as Revenue Templates The cleanest way to stop drift is to treat affiliate payouts the same way you treat customer invoices—as a line-item event in your invoicing platform, with commission logic baked into templates. Here's how it works in practice: Map affiliate tiers in your CRM contacts. Store each affiliate's name, Stripe/Razorpay payout account, tier assignment, tax ID, and any withholding rules in your CRM contact record . Tag them as "Affiliate" so they separate from customer contacts in queries and reports. Create commission invoice templates. In your invoicing platform, build separate invoice templates for each tier. A Tier 1 (5%) template auto-calculates 5% of attributed revenue. A Tier 2 (10%) template calculates 10%. The template references the affiliate's tax ID, applies regional withholding (GST in India, SST in Malaysia, PPh21 for Indonesian contractors), and locks the GL coding so every affiliate payout posts to the same account. Link invoices to revenue events, not guesswork. When a customer payment arrives via Stripe or Razorpay, tag which affiliate sourced it. Most payment processors embed a UTM or affiliate code in the transaction metadata. Import that into your invoicing platform so the system knows: "Customer paid ₹100K, affiliate tag = 'Alice', tier = 10%." Automatically generate a ₹10K affiliate invoice and mark it as "Pending Payout." Batch payouts by settlement date. Most affiliates expect monthly payouts, but settlement timing varies. Razorpay in India takes 2 days, Stripe in Malaysia takes 3–5. Create a payout schedule that batches all pending affiliate invoices, groups them by payout bank account and currency, and calculates the exact settlement date. Stripe's Payouts API or Razorpay's Payout API then handles the actual transfer. The invoice becomes a permanent record of what was owed and when it settled. Reconcile drift in real time. After payout, compare what you sent in your invoicing platform to what Stripe/Razorpay actually charged out. Interchange fees, failed bank accounts, currency conversion, and minimum payout thresholds all create drift. Log that drift as a debit or credit memo tied to the original affiliate invoice, not a loose spreadsheet entry. Tier Logic and Commission Paths The moment you embed affiliate tiers in your invoicing platform, you gain three immediate wins: Automatable routing. Instead of manually assigning each revenue event to a tier, the system reads the affiliate's tag from your CRM, pulls their tier tier, and routes commission to the right GL account. Tier 1 affiliates post to GL 7001 (Affiliate Expenses – 5%), Tier 2 to GL 7002 (10%). Your accountant sees a clean trail; your affiliate sees a predictable payout schedule. Promotion and demotion logic. Many affi