Skip to main content
Payment integrations let you charge for bookings by processing payments when appointments are scheduled. Payment is collected before the booking is confirmed, ensuring you get paid for your time.

Available payment integrations

Stripe

Most popular - accept credit cards, digital wallets, and more

PayPal

Process payments through PayPal accounts

Alby

Accept Bitcoin via Lightning Network

HitPay

APAC payment methods and e-wallets

Other payment options

  • BTCPay Server - Self-hosted Bitcoin payment processor
  • Razorpay - India-focused payment gateway (via Stripe integration)
  • PayPal Business - Advanced PayPal features for businesses

How payment integrations work

When a payment app is enabled for an event type:
1

User initiates booking

Someone schedules time on your paid event type and enters their details.
2

Payment prompt

Before confirming, they’re redirected to the payment processor to enter payment information.
3

Payment processed

The payment processor charges the amount you specified and returns success or failure.
4

Booking confirmed

On successful payment, the booking is created and both parties receive confirmations.
If payment fails, the booking is not created. Users can retry payment or exit without booking.

Stripe

Stripe is the most popular payment processor for Cal.com, supporting credit cards, debit cards, Apple Pay, Google Pay, and many regional payment methods.

Setup instructions

1

Create a Stripe account

Sign up at stripe.com if you don’t have an account. Complete identity verification to accept live payments.
2

Install Stripe integration

Go to Settings > Apps in Cal.com, search for “Stripe”, and click Install.
3

Connect your Stripe account

Click “Connect with Stripe” and authorize Cal.com to create payment intents and charges.
4

Grant permissions

Approve access to read customer data, create charges, and manage payments.
5

Enable in event types

Edit a paid event type, scroll to Payment, and select Stripe. Enter your price and currency.

Features

  • Multiple payment methods - Credit cards, debit cards, Apple Pay, Google Pay, ACH, SEPA, and 40+ others
  • Global currency support - 135+ currencies
  • Automatic tax - Calculate and collect tax with Stripe Tax
  • Subscriptions - Charge recurring fees (requires custom setup)
  • Refunds - Process refunds from Stripe dashboard
  • Security - PCI compliant, 3D Secure support
  • Detailed reporting - Revenue analytics and financial reports

Configuration

When enabling Stripe for an event type:
{
  price: 5000,              // Amount in cents (e.g., $50.00)
  currency: "usd",          // ISO currency code
  paymentOption: "ON",      // Always require payment
}
Stripe charges fees per transaction: 2.9% + $0.30 for US cards. International and currency conversion fees may apply. See stripe.com/pricing for details.

Testing Stripe integration

Stripe provides test mode for development:
  • Success: 4242 4242 4242 4242
  • Decline: 4000 0000 0000 0002
  • 3D Secure: 4000 0027 6000 3184
Use any future expiry date, any 3-digit CVC, and any postal code.

Troubleshooting

  • Verify Stripe integration is connected in Settings > Apps
  • Check that event type has a price configured
  • Ensure Stripe account is activated (not in restricted mode)
  • Re-authenticate by disconnecting and reconnecting Stripe
  • Check Stripe dashboard for error messages
  • Verify you’re not in test mode when accepting real payments
  • Confirm your Stripe account can accept the payment method being used
  • Check for sufficient funds or card limits on the customer’s end
Process refunds in the Stripe dashboard:
  1. Go to Payments > All payments
  2. Find the charge
  3. Click Refund
  4. Cal.com booking remains unless manually cancelled

PayPal

PayPal integration lets customers pay with their PayPal balance, linked bank accounts, or credit cards via PayPal checkout.

Setup instructions

1

Create PayPal Business account

Sign up for a PayPal Business account at paypal.com/business. Personal accounts cannot accept Cal.com payments.
2

Install PayPal integration

Find “PayPal” in Settings > Apps and click Install.
3

Connect with PayPal

Authorize Cal.com to create payment requests on your behalf.
4

Configure event types

Add PayPal as the payment method in your event type settings.

Features

  • PayPal balance payments - Customers can pay from PayPal accounts
  • Credit card processing - Accept cards without Stripe
  • Buyer protection - PayPal’s purchase protection for customers
  • International support - Available in 200+ countries
  • Multi-currency - Accept payments in 25+ currencies
PayPal fees vary by country and transaction type. Typical US rate: 2.9% + $0.30 per transaction. Check paypal.com/fees for your region.

Alby (Bitcoin Lightning)

Alby lets you accept Bitcoin payments via the Lightning Network - instant, low-fee Bitcoin transactions.

Setup instructions

1

Create Alby account

Sign up at getalby.com and set up your Lightning wallet.
2

Install Alby integration

Go to Settings > Apps, find “Alby”, and click Install.
3

Connect wallet

Enter your Alby API credentials or connect via OAuth.
4

Set Bitcoin pricing

Configure event types with prices in satoshis (1 BTC = 100,000,000 sats).

Features

  • Lightning Network - Instant settlement, minimal fees
  • No chargeback risk - Bitcoin transactions are final
  • Global payments - No geographic restrictions
  • Privacy-focused - Pseudonymous transactions
  • Low fees - Typically < 1% compared to 3% for credit cards
Alby charges a small service fee. Lightning Network transaction fees are typically less than 1 cent.

HitPay

HitPay specializes in APAC payment methods, including popular e-wallets and banking apps in Asia.

Setup instructions

1

Create HitPay account

Sign up at hitpayapp.com for your country (Singapore, Hong Kong, Malaysia supported).
2

Complete verification

Submit business documents for account verification.
3

Install HitPay integration

Find “HitPay” in Cal.com Settings > Apps and install.
4

Connect account

Authorize Cal.com to create payment requests.

Supported payment methods

  • E-wallets - GrabPay, PayNow, AliPay, WeChat Pay
  • Bank transfers - FPX (Malaysia), PayNow (Singapore)
  • Credit cards - Visa, Mastercard, Amex
  • Buy Now Pay Later - Atome, Grab PayLater

BTCPay Server

BTCPay Server is a self-hosted, open-source Bitcoin payment processor - no third-party accounts required.

Setup instructions

1

Deploy BTCPay Server

Self-host BTCPay Server following btcpayserver.org documentation. Requires a server and Bitcoin node.
2

Create a store

Set up a store in BTCPay Server and configure wallet settings.
3

Generate API key

Create an API key in BTCPay Server with invoice creation permissions.
4

Install integration

In Cal.com, install “BTCPay Server” and enter your server URL and API key.

Features

  • Self-hosted - Complete control over your payment processing
  • No KYC - No account registration with third parties
  • No fees - Only Bitcoin network transaction fees
  • Privacy - Your server, your data
  • Lightning support - Accept Lightning Network payments
  • Altcoins - Optional support for other cryptocurrencies
BTCPay Server is ideal for privacy-conscious users and Bitcoin maximalists who want complete payment sovereignty.

Configuring paid event types

Setting up pricing

To make an event type paid:
1

Edit event type

Go to Event Types and select the event type to make paid.
2

Add payment

Scroll to the Payment section and enable “Require payment”.
3

Select processor

Choose your payment integration (Stripe, PayPal, etc.).
4

Enter price

Set the amount and currency. Prices are per booking, not per attendee.
5

Save changes

Save the event type. Future bookings will require payment.

Pricing options

// Fixed pricing
price: 10000  // $100.00 (always in cents)

// Optional payment (donations)
paymentOption: "OPTIONAL"

// Multiple price tiers (not natively supported)
// Workaround: Create multiple event types with different prices

Payment on booking page

When users book a paid event:
  1. They fill out booking form (name, email, etc.)
  2. Click “Continue” or “Book”
  3. Redirected to payment processor
  4. Enter payment information
  5. Submit payment
  6. Redirected back to Cal.com with confirmation
If users close the payment window without completing payment, the booking is not created. They must restart the booking process.

Refunds and cancellations

Refund policy

Cal.com does not automatically process refunds. You must handle refunds manually:
  1. User cancels booking (optional)
  2. You decide whether to issue refund based on your policy
  3. Process refund in payment processor dashboard (Stripe, PayPal, etc.)
  4. Cal.com booking can be cancelled separately
Clearly state your refund policy in event type descriptions so customers know what to expect.

Processing refunds

  1. Go to Stripe Dashboard > Payments
  2. Find the charge for the booking
  3. Click “Refund” button
  4. Choose full or partial refund
  5. Confirm refund - customer receives funds in 5-10 business days

Payment security

PCI Compliance - Cal.com never stores payment card data. All card processing happens on payment processor servers.
SSL/TLS - All payment flows use HTTPS encryption.
SCA support - Stripe integration supports Strong Customer Authentication (3D Secure) for EU compliance.
Fraud detection - Payment processors have built-in fraud detection and prevention.

Best practices

Clear pricing - Display price prominently in event type title or description
Refund policy - State your cancellation and refund policy upfront
Test payments - Use test mode to verify payment flow before going live
Tax compliance - Configure Stripe Tax or calculate tax in your pricing
Multiple currencies - Create separate event types for different currencies if needed
Backup payment method - Have a secondary processor in case of outages

Environment variables (self-hosted)

Self-hosted Cal.com requires API credentials for payment integrations:
# Stripe
STRIPE_CLIENT_ID=your_stripe_client_id
NEXT_PUBLIC_STRIPE_PUBLIC_KEY=your_stripe_public_key
STRIPE_PRIVATE_KEY=your_stripe_private_key

# PayPal
PAYPAL_CLIENT_ID=your_paypal_client_id
PAYPAL_SECRET_KEY=your_paypal_secret_key

# Alby
ALBY_CLIENT_ID=your_alby_client_id
ALBY_CLIENT_SECRET=your_alby_client_secret
Cal.com Cloud users don’t need to configure environment variables - all payment processors work out of the box.

Troubleshooting

Payment integration won’t connect

  1. Verify you’re using a Business account (for PayPal)
  2. Check that API credentials are correct (for self-hosted)
  3. Ensure your payment processor account is activated
  4. Try disconnecting and reconnecting
  5. Check browser console for error messages

Bookings created without payment

  1. Verify “Require payment” is enabled in event type settings
  2. Check that a payment processor is selected
  3. Ensure price is set to a value > 0
  4. Test the booking flow end-to-end

Webhooks not working (self-hosted)

For Stripe webhooks:
  1. Configure webhook endpoint: https://yourdomain.com/api/integrations/stripepayment/webhook
  2. Select events: checkout.session.completed, payment_intent.succeeded
  3. Copy webhook secret to environment variable: STRIPE_WEBHOOK_SECRET

Comparing payment processors

FeatureStripePayPalAlby (Bitcoin)HitPay
Setup difficultyEasyEasyMediumMedium
Transaction fee2.9% + $0.302.9% + $0.30< 1%2.5% - 3.5%
Payment methods40+PayPal + CardsBitcoin onlyE-wallets + Cards
Global support46 countries200+ countriesWorldwideAPAC only
Settlement time2-7 daysInstant (PayPal)Instant1-3 days
Chargeback riskYesYesNoYes
Self-hostableNoNoYes (BTCPay)No

Next steps

Event types

Configure pricing for event types

App Store

Explore other integrations

Build docs developers (and LLMs) love