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
- In Basis, go to Settings → Integrations → Stripe → Connect.
- Enter your Stripe Publishable Key and Secret Key for the selected environment.
- Click Save. Status shows “Connected.”
Usage
Collect payment at booking (optional)
- In Settings → Services → select a service → Pricing.
- Enable “Require payment at booking” and set price.
- Clients will be prompted to add a card; charges are created via Stripe Payment Intents.
Save a payment method
- Client adds a card during checkout or in Account → Payment Methods.
- A Stripe Customer is created and the payment method is attached for future use.
Refunds and adjustments
- From the appointment or Payments tab, select a charge and issue a partial or full refund.
- Refunds are processed via Stripe and reflected in reports.
Webhooks (recommended)
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.