Resources Pricing Docs FAQ Start Free
Resources / Payments
Payments

Routing SaaS Payments Between Stripe and Paddle by Tax Nexus

Route each sale to Stripe or a Merchant of Record based on real tax nexus thresholds instead of picking one processor for every buyer.

Direct gateways like Stripe charge lower fees (about 2.9% + $0.30) but make you the merchant of record, responsible for your own tax registration and filing. Merchants of Record like Paddle charge more (about 5% + $0.50) but handle tax compliance entirely.

Most companies pick one and stick with it. But tax obligations are regional, not global, so the better move is routing each transaction to whichever provider maximizes your take-home revenue for that specific buyer.

Why Nexus Thresholds Matter

Paddle processes enough volume globally that it's already registered for tax in nearly every jurisdiction, so it charges the applicable VAT or sales tax on every sale. If you process directly through Stripe, your own tax obligation depends on your sales volume in that specific region.

Thresholds vary by state and country, and they're not all the same number. Many US states still use the original Wayfair standard of $100,000 in annual sales or 200 transactions. California is not one of them: since April 2019 its threshold is a flat $500,000 in sales with no transaction count at all (TaxJar, CDTFA guidance via Mosey). If your SaaS hasn't crossed whatever threshold actually applies in a buyer's state, you have no legal obligation to collect tax there yet.

                     Incoming Checkout Session
                                |
                   GetVisitor.info Payload
                                |
             +------------------+------------------+
             |                                     |
  Below sales_tax.threshold              At/above sales_tax.threshold
             |                                     |
  Route to STRIPE (Direct)               Route to PADDLE (MoR)
  • Save ~2.1% in gateway fees          • MoR handles complex tax filing
  • Customer pays $0 in sales tax       • Zero legal/filing overhead
  • Maximum price competitiveness        • Compliant in high-volume states

Decision Matrix

ScenarioStatusRouteBenefit
Tax applies, threshold not yet reachedBelow nexusStripeLower fee, zero tax for buyer
Tax applies, threshold reachedAbove nexusPaddleOffloads filing and remittance
No sales tax or VAT in jurisdictionN/AStripeLowest processing fee
VPN or proxy detectedElevated riskStripe, standard fraud checksEnforce 3DS

The Payload

{
  "location": { "country": "United States", "country_code": "US", "state": "California" },
  "commerce": {
    "currency": { "code": "USD" },
    "sales_tax": {
      "label": "SUT",
      "rate": 7.25,
      "rate_with_local_addons": { "min": 7.25, "max": 10.75 },
      "threshold": 500000
    }
  }
}
function selectPaymentProcessor(gviData, yourAnnualSalesInRegion) {
  const { sales_tax } = gviData.commerce;

  const atOrAboveThreshold = sales_tax?.threshold != null && yourAnnualSalesInRegion >= sales_tax.threshold;
  if (sales_tax && atOrAboveThreshold) {
    return { processor: "PADDLE", collectTax: true };
  }

  return { processor: "STRIPE", collectTax: false };
}

app.post("/api/create-checkout", async (req, res) => {
  const gviData = req.gviPayload;
  const route = selectPaymentProcessor(gviData);

  if (route.processor === "PADDLE") {
    const session = await createPaddleCheckoutSession({ planId: req.body.planId });
    return res.json({ url: session.url, provider: "paddle" });
  }
  const session = await createStripeCheckoutSession({ planId: req.body.planId });
  return res.json({ url: session.url, provider: "stripe" });
});

The Numbers

Say you're selling a $100/month plan to a buyer in California and you're still below the $500,000 nexus threshold there.

MetricStatic Paddle (MoR)Router via GVI (Stripe)Difference
Base price$100.00$100.00—
Sales tax (8.85% CA avg)+$8.85$0.00, below thresholdBuyer saves $8.85
Total paid by buyer$108.85$100.008.1% lower
Processing fee-$5.50 (5% + $0.50)-$3.20 (2.9% + $0.30)+$2.30 saved
Net revenue$94.50$96.80+$2.30 more

Once you cross $500,000 in California sales, the router switches you to Paddle automatically and the tax filing burden moves off your plate.

Sign up at GetVisitor.info for location and tax-threshold intelligence.

Ready to try it in your own stack?
Start Free