Contact Us
Webflow Premium Partner Ehab Fayez
Back to Agent Skills
Data & Analytics

Paddle Payment Platform

Use Paddle as a merchant of record for global SaaS payments with built-in tax compliance and billing.

Claude Code Cursor Copilot Windsurf

Overview

Paddle is a payment platform that acts as a Merchant of Record (MoR), meaning Paddle handles all sales tax, VAT, and GST compliance on behalf of your business. This eliminates the need to register for tax collection in multiple countries, making it ideal for SaaS companies selling globally. Paddle handles tax calculation, collection, filing, and remittance in every country it supports.

Paddle provides a complete billing infrastructure including one-time payments, subscriptions, upgrades/downgrades, prorations, dunning (failed payment recovery), and invoicing. The checkout experience is a customizable overlay that handles payment method selection, tax display, and localization. Paddle supports credit cards, PayPal, Apple Pay, Google Pay, and wire transfers for enterprise customers.

The Paddle Billing API (v2) provides webhooks for all billing events, a customer portal for self-service management, and pricing APIs that support per-seat, usage-based, and flat-rate pricing models. Paddle Retain (formerly ProfitWell) provides analytics for MRR, churn, LTV, and revenue recovery. The platform takes a percentage of revenue rather than per-transaction fees, which simplifies cost forecasting.

Who Is This For?

  • Sell SaaS subscriptions globally without tax registration
  • Implement usage-based pricing with metered billing
  • Handle subscription upgrades and downgrades with proration
  • Recover failed payments with automated dunning

Installation

Setup for Claude Code
npm install @paddle/paddle-node-sdk

Configuration

import { Paddle } from "@paddle/paddle-node-sdk"

const paddle = new Paddle(process.env.PADDLE_API_KEY!)

// Create a transaction
const transaction = await paddle.transactions.create({
  items: [{
    priceId: "pri_xxxxx",
    quantity: 1,
  }],
  customerId: "ctm_xxxxx",
})

// List subscriptions
const subscriptions = await paddle.subscriptions.list({
  customerId: ["ctm_xxxxx"],
  status: ["active"],
})