Recommended sandbox harness
Use a dedicated external consumer application that behaves like a real merchant integration:- public browser SDK with a sandbox workspace publishable key;
- allowed test hostname;
- private Biqli workspace API key on the server for signup leads;
- Stripe sandbox secret key on the server for customers, Checkout, refunds, and test clocks;
- the Biqli Stripe App installed and connected in the same Stripe sandbox account;
- a conversion-enabled short link targeting the harness.
Test matrix
Run each scenario with a fresh Checkout Session. Use a fresh click and customer when the scenario tests acquisition identity.Verify evidence at every layer
For each test, retain non-secret identifiers:- Biqli
bq_id; - Stripe Checkout Session ID;
- Stripe Customer ID;
- subscription, invoice, PaymentIntent, charge, and refund IDs when applicable;
- Stripe event ID and delivery status;
- Biqli request ID returned by browser or server tracking calls;
- final Biqli customer counts, activity, and net revenue.
Expected event-delivery statuses
The retry delay starts at 15 seconds and grows exponentially to a maximum of one hour. A processing claim becomes recoverable if it remains stale for the configured processing window.
Event-order recovery
Checkout, subscription, invoice, and refund events are independent deliveries. The app handles expected reordering without weakening attribution:- early trial or invoice events can wait for a pending Checkout mapping;
- an early successful refund waits for the original sale;
- completed object mappings are immutable for exact identities;
- duplicate terminal events return successfully without repeating effects;
- the same event ID with materially changed data is rejected.
Distinguish processed and a conversion
processed means the event handler completed successfully. It does not always mean a new lead or sale was created.
Examples that can process without increasing revenue include:
- an unpaid Checkout whose mapping was established;
- a zero-value invoice;
- a refund status transition that is not yet successful;
- an idempotent repeat represented by another supported event type.
Live rollout
After sandbox validation:- install the live version of the Biqli app in the intended live Stripe account;
- connect the live account to the production Biqli workspace;
- use the live Stripe account ID and
stripe_environment: 'live'in your browser registration; - use the production hostname and workspace publishable key;
- confirm the live event destination receives the selected 11 events;
- run a low-value live payment and refund;
- compare the Stripe object IDs, Biqli customer activity, and net revenue;
- monitor failed deliveries during the initial rollout.
Operational security
- Rotate a compromised Stripe or Biqli secret immediately.
- Revoke unused publishable keys and remove obsolete allowed hostnames.
- Disconnect workspace authorization when account ownership changes.
- Uninstall the app in Stripe when the integration is no longer used.
- Keep webhook and OAuth logs free of raw credentials.
- Grant Stripe permissions only through the official app installation screen.
- Never ask support to accept a secret key as diagnostic evidence.
Troubleshooting order
- Verify the Biqli click exists.
- Verify the hostname and publishable key belong to the connected workspace.
- Verify exact Checkout registration succeeded.
- Verify account and environment match.
- Verify Stripe payment or invoice status.
- Verify the selected event reached the correct destination.
- Interpret the Biqli response status and retry timing.
- Verify customer activity and net revenue.

