The complete customer journey
A typical journey appears in this order:- Link clicked — the visitor opens a conversion-enabled Biqli link.
- Signed up — your application records a signup lead with a stable customer identity. This step is optional but recommended.
- Stripe Free Trial — an attributed subscription enters Stripe’s
trialingstate. - Purchase or Purchased … — a one-time payment or the first paid subscription invoice succeeds.
- Renewed … — a later paid invoice has Stripe billing reason
subscription_cycle. - Partial refund or Refund completed — Stripe reports a successful refund against an attributed sale.
Leads
Biqli can show two legitimate lead types for one customer:- the signup lead your application records through a Biqli SDK or tracking API;
- the Stripe Free Trial lead recorded when an attributed Stripe subscription is trialing.
One-time sales
A paid one-time Checkout Session creates one sale using Stripe’s integeramount_total and currency. For example, 1200 in usd appears as $12.00.
Biqli does not record a sale when:
- Checkout is still unpaid;
- the customer abandons or cancels Checkout;
- an asynchronous payment fails;
- the registered attribution expired before payment;
- the Stripe account, environment, or click belongs to a different workspace;
- no safe attribution mapping exists.
Subscription sales and renewals
Subscription revenue is based oninvoice.paid, not the browser return from Checkout.
- The first non-zero paid invoice creates a Stripe Subscription Payment sale.
- A later invoice with billing reason
subscription_cycleappears as Renewed … when product details are available. - Each Stripe invoice ID can create only one Biqli sale, even if Stripe retries the event.
- A zero-value trial invoice does not create a sale.
- The subscription mapping remains available for future recurring invoices after the short-lived Checkout mapping expires.
Refunds and net revenue
Successful Stripe refunds reduce attributed revenue for the original sale:- a refund smaller than the remaining sale value appears as Partial refund;
- when successful refunds reach the full original value, activity shows Refund completed;
- failed or canceled refunds do not reduce revenue;
- retrying the same Stripe refund does not subtract it again;
- net attributed revenue never falls below zero for that sale.
Customer identity
When Stripe supplies a customer ID, Biqli uses an environment- and account-scoped external identity. Checkout customer name and email can enrich that customer record. Your signup implementation should use the same Stripe customer identity when it creates the application lead so both activities resolve to one customer. The country, browser, operating system, referrer, and location shown in First-touch details describe the attributed Biqli click. They are not the Stripe card country or billing address. A customer table should use the same attributed-click country as the customer detail page. If Stripe creates a trial event before its Checkout completion event, the customer may appear without name or email for a short period. After Checkout is processed, Biqli enriches the same customer. Stripe retries a temporarily pending trial event after the Checkout mapping becomes available.Gross sales, net revenue, and currency
Biqli stores the original sale amount and the successful refund adjustments separately. Reports can therefore retain the purchase and show its net contribution. Each event keeps its Stripe currency and a normalized USD value used by cross-currency reporting. The activity feed formats the original event amount. Refund currency must match the original sale currency or Biqli rejects the refund as inconsistent.What Biqli does not do
The managed Stripe App does not:- import payments or subscriptions that occurred before attribution was established;
- assign direct Stripe Dashboard sales to the latest website visitor;
- treat a success-page visit as a conversion;
- create a sale for an unpaid, failed, or zero-value invoice;
- mutate a Stripe customer, payment, subscription, invoice, or refund;
- silently merge Stripe environments.

