Skip to main content

Stripe

Overview

Connect Stripe to accept payments for services and memberships, manage saved payment methods, and reconcile payouts.

  • Supported environments: Development and Production (separate keys)
  • Data stored: Stripe customer ID per client, payment method references, charge/payment intent IDs

Prerequisites

  • You are a Clinic Admin in Basis.
  • A Stripe account with API keys for your environment.

Connect Stripe

  1. In Basis, go to Settings → Integrations → Stripe → Connect.
  2. Enter your Stripe Publishable Key and Secret Key for the selected environment.
  3. Click Save. Status shows “Connected.”

Usage

Collect payment at booking (optional)

  1. In Settings → Services → select a service → Pricing.
  2. Enable “Require payment at booking” and set price.
  3. Clients will be prompted to add a card; charges are created via Stripe Payment Intents.

Save a payment method

  1. Client adds a card during checkout or in Account → Payment Methods.
  2. A Stripe Customer is created and the payment method is attached for future use.

Refunds and adjustments

  1. From the appointment or Payments tab, select a charge and issue a partial or full refund.
  2. Refunds are processed via Stripe and reflected in reports.

Configure Stripe webhooks to keep Basis in sync:

  • payment_intent.succeeded — marks payments as completed
  • payment_intent.payment_failed — flags failed payments
  • charge.refunded — updates refund status

Webhook endpoint URLs (append your Clinic ID at the end):

  • Development (test mode): https://us-central1-basis-hybrid.cloudfunctions.net/stripe_webhook_test/<CLINIC_ID>
  • Production (live mode): https://us-central1-basis-hybrid.cloudfunctions.net/stripe_webhook/<CLINIC_ID>

Notes:

  • These Cloud Function endpoints require the clinic ID in the path.
  • If you use a custom domain/proxy later, ensure it preserves the trailing /<CLINIC_ID>.

Security

  • Stripe keys are stored securely; only the minimum necessary data is stored in Basis.
  • PCI: Card data is handled by Stripe Elements; Basis never stores raw card numbers.

Troubleshooting

  • Payment fails: verify card, enable test mode (Dev), check Stripe logs.
  • No charges appear: ensure service requires payment and Stripe is connected.
  • Webhooks not firing: verify endpoint and signing secret; check Stripe retries.