Paddle Integration

Implement PPP Pricing in Paddle — Complete Guide

Stop leaving 40% of your global revenue on the table. This guide covers everything: setup, pricing rules, SDK configuration, testing, VPN fraud prevention, and monitoring — so you can launch regional pricing in an afternoon.

5-minute setupNo backend changesPaddle Billing + ClassicVPN fraud protection180+ countries
Quick start — paste before Paddle.jsStep 3 of 3
<script
  src="https://cdn.priceparity.net/sdk/v2/sdk.js"
  data-pp-key="pp_live_YOUR_API_KEY"
  data-pp-product="pri_YOUR_PADDLE_PRICE_ID"
></script>

<!-- Paddle.js comes after -->
<script src="https://cdn.paddle.com/paddle/v2/paddle.js"></script>
That's it. PriceParity detects country, matches your pricing rule, creates a Paddle coupon, and injects it before checkout opens — all in under 30ms. Steps 1 and 2 take about 4 minutes. ↓

What is Purchasing Power Parity Pricing?

Purchasing Power Parity (PPP) is an economic measure that compares the relative purchasing power of currencies across countries. The World Bank publishes PPP indices annually — they show what a given amount of currency can buy locally compared to the US dollar.

Applied to SaaS pricing, PPP means adjusting what you charge based on what people can afford in their local economy — not just currency conversion. A $49/month product in the US is $49 worth of value. But in India, where the median monthly salary is approximately $200, that same $49 represents nearly a quarter of monthly income — the equivalent of charging $2,000/month in the US.

PPP pricing doesn't mean giving discounts to everyone. It means charging a fair price in each market: a price that represents the same proportion of purchasing power regardless of where your customer lives. The key insight is that a customer who converts at $12 in India is incremental revenue — they would never have paid $49. You're not losing revenue; you're gaining customers.

🇺🇸

USA

$49

Full price — baseline

🇧🇷

Brazil

R$ 120

≈ $24 · 51% discount

🇮🇳

India

₹ 1,499

≈ $18 · 63% discount

Result: higher conversions in emerging markets, satisfied customers who feel fairly priced, and sustainable global unit economics. Most SaaS products see 15–40% more signups from price-sensitive markets within the first month.

Why doesn't one price fit a global market?

When you charge a flat $49/month globally, you're implicitly targeting only high-income markets. The numbers tell the story:

India

Median salary: ~$200/mo

Your price: $49 (24.5% of monthly income)

US equivalent: ~$1,960/mo

Brazil

Median salary: ~$400/mo

Your price: $49 (12.3% of monthly income)

US equivalent: ~$980/mo

Poland

Median salary: ~$800/mo

Your price: $49 (6.1% of monthly income)

US equivalent: ~$490/mo

USA

Median salary: ~$4,000/mo

Your price: $49 (1.2% of monthly income)

US equivalent: $49/mo

  • High traffic from India and Brazil but near-zero conversion rates
  • Local competitors with regional pricing outcompete you on price
  • You attribute it to "low-quality traffic" when the real cause is price mismatch
  • 40%+ of your global addressable market is effectively locked out

What do you need before you start?

Before you start, make sure you have:

  • A Paddle account — Billing (recommended) or Classic both work
  • Your Paddle Price ID (starts with pri_) — found in your Paddle dashboard under Catalog → Prices
  • A PriceParity account — sign up free, no credit card required
  • Access to your pricing page HTML or template (~5 min of dev time)

No backend changes, no database setup, no Paddle API credentials required on your end. PriceParity integrates entirely via client-side SDK.

How do you create a pricing rule in PriceParity?

A pricing rule defines which countries get a discount and how much. You link it to a specific Paddle product. Log in to your PriceParity dashboard, go to Pricing → New Rule, and configure:

1

Name your rule

Give it a descriptive name like "Global PPP — Main Product". You can have multiple rules for different products.

2

Enter your Paddle Price ID

Paste your pri_XXXXXXX price ID. PriceParity uses this to create coupons against the right product in your Paddle catalog.

3

Add pricing tiers

Define country groups and their discount percentages. A 3-tier model is the recommended starting point.

4

Enable VPN protection (recommended)

Prevents users in high-income countries from claiming discounts via VPN. Detects 95%+ of commercial VPN traffic.

5

Save and activate

Your rule goes live immediately. No deployment needed.

Recommended starting tiers for a $49/month SaaS product:

South Asia
India, Pakistan, Bangladesh, Nepal, Sri Lanka
60% off
~$19/mo
Latin America
Brazil, Argentina, Colombia, Mexico, Peru
45% off
~$27/mo
Eastern Europe
Poland, Romania, Czech Republic, Hungary, Bulgaria
35% off
~$32/mo
Southeast Asia
Vietnam, Philippines, Indonesia, Thailand, Malaysia
50% off
~$24/mo
Africa
Nigeria, Kenya, Ghana, South Africa, Egypt
55% off
~$22/mo

How do you get your API key?

Go to Dashboard → Settings → API Keys and copy your publishable API key. It starts with pp_live_ for production or pp_test_ for sandbox.

Security note: Your PriceParity API key is a publishable key — safe to include in client-side code. It can only evaluate pricing rules and read product config. It cannot modify rules, access billing data, or interact with your Paddle account directly.

How do you add the SDK to your pricing page?

Paste the following script tag into your pricing page HTML, before your Paddle.js initialization. The PriceParity SDK must run first so it can inject the coupon before Paddle's checkout initialises.

your-pricing-page.html

<!-- PriceParity SDK — add BEFORE your Paddle.js script -->
<script
  src="https://cdn.priceparity.net/sdk/v2/sdk.js"
  data-pp-key="pp_live_YOUR_API_KEY"
  data-pp-product="pri_YOUR_PADDLE_PRICE_ID"
></script>

<!-- Paddle.js comes after -->
<script src="https://cdn.paddle.com/paddle/v2/paddle.js"></script>

Replace pp_live_YOUR_API_KEY with your PriceParity key and pri_YOUR_PADDLE_PRICE_ID with your Paddle price ID.

That's all the code required. When a visitor lands on your page, PriceParity runs in <30ms — detects their country via edge geolocation, matches it against your pricing rule, creates a Paddle discount coupon, and passes it to the Paddle checkout initialisation. The visitor sees their localised price. No backend involvement, no manual coupon management.

What is the full SDK attribute reference?

All available data-pp-* attributes on the script tag:

AttributeRequiredDescription
data-pp-keyYesYour PriceParity publishable API key (pp_live_… or pp_test_…)
data-pp-productYesYour Paddle price ID (pri_…). Tells PriceParity which product to evaluate.
data-pp-debugNoSet to "true" to enable console logging. Shows country detection, rule match, and coupon result. Remove before production.
data-pp-coupon-targetNoCSS selector of the Paddle checkout button. Default: auto-detects Paddle checkout triggers.
data-pp-show-bannerNoSet to "true" to auto-render a localised price banner above the checkout button (e.g. "🇮🇳 Indian pricing: $19/mo").
data-pp-envNo"sandbox" to use Paddle sandbox for testing. Default: production.

How do you test your integration?

Before going live, verify that regional pricing fires correctly for each of your configured tiers. You don't need to travel — a VPN handles this.

Enable debug mode

Add data-pp-debug="true" to your script tag during testing:

<script
  src="https://cdn.priceparity.net/sdk/v2/sdk.js"
  data-pp-key="pp_live_YOUR_KEY"
  data-pp-product="pri_YOUR_PRICE_ID"
  data-pp-debug="true"
></script>

Open your browser DevTools console. PriceParity will log the detected country, which pricing rule matched, the discount percentage applied, and the Paddle coupon code that was injected.

VPN testing checklist

Connect VPN to India (one of your highest-discount tiers)

Expected: Console shows country: IN, discount: 60%

Open your pricing page with VPN active

Expected: Paddle checkout shows localised price

Disconnect VPN, reload page

Expected: Full price restores immediately

Connect VPN to US (should get no discount)

Expected: No coupon injected, full price shown

Test with Paddle sandbox mode to complete a test purchase

Expected: Coupon applies correctly in Paddle checkout flow

Tip: Use Paddle sandbox mode (data-pp-env="sandbox") alongside your Paddle test environment so you can complete full end-to-end purchase flows without real payments.

How do you monitor and analyze performance?

Once live, the PriceParity Analytics dashboard gives you real-time visibility into your regional pricing performance. Key metrics to watch in the first 30 days:

Evaluations by country

Which countries are triggering pricing rules most. High evaluation counts with low conversion signals a tier calibration issue.

Coupon injection rate

Percentage of evaluations that result in a discount being applied. Should match your tier coverage.

Conversion by tier

Compare pre/post PPP signup rates by region. India and Brazil typically show the largest lifts.

VPN detection rate

Percentage of requests flagged as VPN. Above 10% may indicate that legitimate users in a given country are using VPNs for privacy (common in Turkey, Russia).

Revenue by region

Monitor that blended global revenue trends upward. A surge in discounted conversions should outpace any theoretical revenue dilution.

Anomaly alerts

Configure alerts for unusual coupon volume spikes, which can indicate a coupon code being shared publicly.

How does VPN and fraud prevention work?

The most common concern with PPP pricing is arbitrage: customers in high-income countries using a VPN to claim a discount intended for India or Brazil. PriceParity's built-in detection handles this.

How detection works

IP reputation database

Cross-referenced against a continuously updated database of known datacenter IPs, commercial VPN providers (NordVPN, ExpressVPN, etc.), and Tor exit nodes.

Behavioral signals

Detects mismatches between browser timezone, system locale, and reported geolocation — a common signature of VPN use.

ASN classification

Autonomous System Number analysis distinguishes residential ISP traffic from datacenter/VPN ASNs.

Configuring VPN rules

In your pricing rule settings you have three options for VPN-flagged traffic:

Block discount (recommended)

VPN users see full price. Maximises revenue protection. Legitimate privacy-focused users in high-discount countries may be affected — acceptable trade-off for most products.

Allow but log

VPN users still get the discount, but the event is flagged in analytics. Useful during the first 2 weeks to understand VPN prevalence before committing to blocking.

Partial discount cap

VPN users get a smaller fixed discount (e.g., 20% instead of 60%). Balances accessibility for privacy-focused users with fraud prevention.

For deep detail on the fraud signals and configuration options, see the complete VPN fraud prevention guide.

How do you troubleshoot?

No discount applied even with VPN set to a covered country

  • SDK script loaded after Paddle.js — swap the order
  • Pricing rule is inactive — check the toggle in your dashboard
  • VPN detection flagging the request — try "Allow but log" mode temporarily
  • data-pp-product doesn't match the price ID in the checkout

Discount applied but wrong amount

  • Multiple pricing rules active for the same product — check for duplicates
  • Country assigned to wrong tier — verify tier country list in your rule
  • Cached response — force refresh or try incognito mode

Console error: "Invalid API key"

  • Using test key (pp_test_) on production — generate a live key
  • Trailing whitespace in the key — re-copy from dashboard
  • API key deleted or rotated — generate a new one in Settings

Paddle checkout ignores the coupon

  • Paddle.js initialised before PriceParity SDK — ensure SDK script comes first
  • Coupon is single-use and already consumed in test — delete test coupons in Paddle or use sandbox mode
  • Paddle product has coupon restrictions enabled — check your Paddle product settings

What advanced configuration options are available?

Multiple products on the same page

If your pricing page shows multiple plans (e.g., Starter and Pro), add one script tag per product:

<!-- Starter plan -->
<script src="https://cdn.priceparity.net/sdk/v2/sdk.js"
  data-pp-key="pp_live_YOUR_KEY"
  data-pp-product="pri_starter_price_id"
  data-pp-coupon-target="#starter-checkout-btn"
></script>

<!-- Pro plan -->
<script src="https://cdn.priceparity.net/sdk/v2/sdk.js"
  data-pp-key="pp_live_YOUR_KEY"
  data-pp-product="pri_pro_price_id"
  data-pp-coupon-target="#pro-checkout-btn"
></script>

Showing a localised price banner

Enable the auto-rendered banner with data-pp-show-banner="true". PriceParity renders a pill above your checkout button (e.g., "🇮🇳 Indian pricing: $19/month"). This transparency reduces checkout abandonment and builds trust.

JavaScript API (programmatic control)

For React, Vue, or SPA integrations where you need programmatic access:

// Listen for PriceParity evaluation result
window.addEventListener('pp:evaluated', (event) => {
  const { country, discount, couponCode, isVpn } = event.detail
  console.log(`Country: ${country}, Discount: ${discount}%, Coupon: ${couponCode}`)

  // Update your UI with localised price
  if (discount > 0) {
    updatePriceDisplay(discount)
  }
})

// Or manually trigger evaluation
window.PriceParity?.evaluate().then(result => {
  console.log(result)
})

Webhook events

PriceParity emits webhook events to your configured endpoint for each evaluation. Use these to build custom analytics, sync data to your CRM, or trigger Slack alerts. Events include pricing.evaluated, pricing.coupon_created, and pricing.vpn_blocked.

See the API Advanced Guide for full webhook payload schemas and authentication details.

Why does PPP pricing win?

Revenue growth

Unlock 30–50% more international conversions within 30 days of launch.

Global reach

180+ countries covered with edge-fast geolocation.

Smarter margins

Maintain healthy LTV in every market by pricing against local purchasing power.

Instant setup

No re-platforming, no backend changes, no Paddle API credentials required.

Fair to customers

Price aligns with local economy — ethical and good for brand reputation.

Developer-friendly

One script tag. Full JavaScript API for advanced integrations.

What questions are most common?

Does it work with my existing Paddle setup?

Yes. PriceParity is a native Paddle integration — no checkout rewrite needed. Works with Paddle Billing (v2) and Paddle Classic.

What if I already offer regional pricing manually?

PriceParity automates coupon injection and replaces manual coupon codes or landing pages. You retain full control over your pricing rules and can disable any tier instantly.

How fast is the SDK?

Under 30ms end-to-end. PriceParity uses edge geolocation (no round-trip to a central server) and caches evaluation results so repeat visits on the same session are instant.

Can I test before launching to all users?

Yes. Use a VPN to simulate different countries in dev/staging. Enable debug mode for console logs. Use Paddle sandbox for full purchase flow testing.

What about VPN fraud?

PriceParity detects 95%+ of commercial VPN traffic using IP reputation, ASN analysis, and browser signal fingerprinting. Enable "Block discount" mode in your rule settings.

How are Paddle coupons managed?

PriceParity creates single-use Paddle discount codes automatically for each eligible session and attaches them to the checkout. They expire if unused. You don't need to manage coupons in your Paddle dashboard.

Can I exclude specific countries from discounting?

Yes. You can mark any country as "full price" in your rule, overriding the regional tier. This is useful for markets with strong purchasing power that happen to be in a lower-tier region (e.g., Singapore is in South Asia geographically but has full pricing power).

Does this work with Paddle free trials?

Yes. The coupon is attached to the subscription, so when the trial converts to paid the regional price applies correctly.

What happens if my Paddle key or plan changes?

Update the price ID in your PriceParity rule. The script tag on your page stays the same. Changes take effect immediately — no re-deploy needed.

Is there an API for server-side integrations?

Yes. PriceParity exposes a REST API for server-side pricing evaluation — useful for headless storefronts or mobile apps. See the API Advanced Guide.

Which related guides should you read?

Ready to Unlock Global Revenue?

Start your 14-day free trial. No credit card required. Add PPP pricing to your Paddle checkout in under 5 minutes.

Start Free Trial