Stripe Integration
Stripe powers card payments in FlexotiumPOS. Setup requires a Stripe account, a Stripe Terminal reader, and configuration of an API key and webhook.
Prerequisites
- A Stripe account (stripe.com)
- A Stripe Terminal reader (e.g. BBPOS WisePOS E or Stripe Reader S700)
- The FlexotiumPOS server must be accessible via HTTPS for webhook delivery
Step 1 — Add your Stripe API keys
- Log in to your Stripe dashboard and go to Developers → API keys
- Copy your Publishable key and Secret key
- In FlexotiumPOS, go to Settings → Integrations → Stripe
- Paste both keys and click Save
Step 2 — Configure the webhook
- In Stripe, go to Developers → Webhooks → Add endpoint
- Enter your webhook URL:
https://your-domain.com/api/webhooks/stripe - Select the following events:
payment_intent.succeededpayment_intent.payment_failedterminal.reader.action_succeededterminal.reader.action_failed
- Copy the Signing Secret and paste it into FlexotiumPOS under the Stripe integration settings
Test mode vs. live mode
Stripe provides test API keys (prefixed sk_test_) and live API keys (prefixed sk_live_). Always use test mode first to validate the integration before switching to live.
In test mode, use Stripe's test card numbers:
4242 4242 4242 4242— successful payment4000 0000 0000 9995— declined payment
Supported payment types
- Contactless (tap) — Visa, Mastercard, Amex, Apple Pay, Google Pay
- Chip and PIN
- Magnetic stripe (fallback)
Reconciliation
Stripe payments are automatically reconciled in FlexotiumPOS. Each card transaction has a stripe_payment_intent_id visible on the transaction detail page, allowing you to cross-reference with Stripe's dashboard.
Troubleshooting
| Error | Likely cause | Fix |
|-------|-------------|-----|
| Reader not found | Reader not registered to your Stripe account | Register via Stripe dashboard |
| Webhook signature invalid | Wrong signing secret | Re-copy from Stripe Webhooks page |
| Payment captured but not recorded | Webhook delivery failed | Check webhook logs in Stripe; retry delivery |
| Card declined | Customer card issue | Ask customer to try another card |