MARKETPLACE
PLUGINS
PADDLE PAYMENTS & SUBSCRIPTION
Paddle Payments & Subscription logo

Paddle Payments & Subscription

Published May 2026
   •    Updated today

Plugin details

Accept one-time payments and recurring subscriptions in your Bubble app using the Paddle Billing API — fully server-side, no UI elements required.
Paddle acts as Merchant of Record, meaning they automatically handle VAT, sales tax, and global compliance for you. No monthly platform fees. Sells to customers in 200+ countries.

✅ 14 ready-to-use Server-Side Actions
✅ One-time payments with Paddle hosted checkout
✅ Full subscription lifecycle management
✅ Pause, resume, upgrade, downgrade & cancel subscriptions
✅ Secure webhook verification (HMAC-SHA256) built in
✅ Invoice PDF retrieval for your customers
✅ Sandbox & live environments supported
✅ Detailed field documentation on every action

Perfect for: SaaS apps, digital products, membership sites, online courses, and any Bubble app that needs reliable recurring billing.

Powered by Paddle Billing API v1.

$150

One time  •  Or  $10/mo

stars   •   0 ratings
0 installs  
This plugin does not collect or track your personal data.

Platform

Web & Native mobile

Contributor details

EZ Plugins logo
EZ Plugins
Joined 2023   •   12 Plugins
View contributor profile

Instructions

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PADDLE SUBSCRIPTIONS & PAYMENTS PLUGIN
Getting Started Guide
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

BEFORE YOU START — GET YOUR PADDLE CREDENTIALS
───────────────────────────────────────────────
1. Create a free Paddle account at paddle.com
2. In the Paddle dashboard, go to:
  Developer Tools → Authentication
3. Switch to SANDBOX environment (top of page)
4. Click "Generate API Key" — name it "Bubble Plugin"
5. Copy the key (starts with sdbx_ for sandbox)
6. When ready to go live, repeat for LIVE environment
  (live keys start with live_)

IMPORTANT: Sandbox and live are completely separate.
Test everything in sandbox first before using live keys.

CREATE YOUR PRODUCTS & PRICES IN PADDLE
───────────────────────────────────────────────
Before creating any payment or subscription, you need
a Price ID from Paddle:

1. Paddle dashboard → Catalog → Products → New Product
2. Add a Price: set amount, currency, billing type
  - One-time: for regular payments (SSAs 01-04)
  - Monthly/Yearly: for subscriptions (SSAs 05-11)
3. Copy the Price ID (looks like: pri_01abc123...)

You'll use this Price ID in the items_json field.
Example: [{"price_id":"pri_01abc123","quantity":1}]

THE 14 SERVER-SIDE ACTIONS — QUICK REFERENCE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

── REGULAR PAYMENTS (One-Time) ──
01 — Create Transaction      Start a payment, get checkout_url
02 — Get Transaction         Check payment status & totals
03 — List Transactions       Get payment history for a customer
04 — Get Transaction Invoice Get PDF invoice URL

── SUBSCRIPTIONS ──
05 — Get Subscription        View subscription details & URLs
06 — List Subscriptions      Get all subs for a customer
07 — Cancel Subscription     End a subscription
08 — Pause Subscription      Temporarily stop billing
09 — Resume Subscription     Restart a paused subscription
10 — Create One-Time Charge  Bill extra amount to subscriber
11 — Update Subscription     Change plan (upgrade/downgrade)

── WEBHOOKS ──
12 — Verify Webhook Signature  Confirm request is from Paddle
13 — Parse Subscription Webhook  Extract subscription data
14 — Parse Transaction Webhook   Extract payment data

EVERY ACTION REQUIRES THESE TWO FIELDS:
• api_key     — Your Paddle API key (sdbx_ or live_)
• environment — Type "sandbox" or "live"

QUICK START: ONE-TIME PAYMENT FLOW
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 1: User clicks "Buy Now" button
Step 2: Workflow → Plugin Action → 01 — Create Transaction
       Set items_json: [{"price_id":"YOUR_PRICE_ID","quantity":1}]
       Set customer_email: Current User's email
       Set custom_data: {"bubble_user_id":"Current User's unique id"}
Step 3: Open external website → URL = Create Transaction's checkout_url
Step 4: User pays on Paddle's page
Step 5: Paddle fires transaction.completed webhook to your endpoint
Step 6: Webhook workflow → 12 — Verify Webhook Signature
Step 7: If is_valid = "true" → 14 — Parse Transaction Webhook
Step 8: Grant user access in your database

QUICK START: SUBSCRIPTION FLOW
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 1: Create a RECURRING price in Paddle (monthly/yearly)
Step 2: Same as one-time payment — use 01 — Create Transaction
       with the recurring Price ID
Step 3: User pays → Paddle creates subscription automatically
Step 4: Paddle fires subscription.created webhook
Step 5: Webhook workflow → 12 — Verify Webhook Signature
Step 6: If is_valid = "true" → 13 — Parse Subscription Webhook
Step 7: Save to your Bubble User database:
       - subscription_id (sub_xxx)
       - customer_id (ctm_xxx)
       - status ("active")
       - next_billed_at
       - cancel_url
       - update_payment_url

SETTING UP WEBHOOKS IN BUBBLE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Bubble → Settings → API → enable "Expose as API endpoint"
2. Backend Workflows → New API Workflow
  Name: paddle-webhook | Method: POST
3. Copy the endpoint URL Bubble gives you
4. Paddle Dashboard → Developer Tools → Notifications
  → New Notification → paste your Bubble URL
5. Select events: transaction.completed,
  subscription.created, subscription.updated,
  subscription.canceled, transaction.payment_failed
6. Copy the SECRET KEY shown (different from API key!)
7. Use this secret in 12 — Verify Webhook Signature

SANDBOX TEST CARD (no real money)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Card: 4242 4242 4242 4242
Expiry: Any future date  |  CVV: Any 3 digits

NEED HELP?
━━━━━━━━━━
• Paddle API docs: developer.paddle.com
• Paddle sandbox dashboard: sandbox-vendors.paddle.com
• Bubble plugin docs: manual.bubble.io/account-and-marketplace/building-plugins

Types

This plugin can be found under the following types:
Element   •   Action

Categories

This plugin can be found under the following categories:
Payment   •   Visual Elements   •   Analytics

Resources

Support contact
Documentation
Tutorial

Rating and reviews

No reviews yet

This plugin has not received any reviews.
Bubble