Skip to main content

Overview

A Stripe payment resolves in stages that are hours or days apart. The PaymentIntent succeeds in seconds, the resulting charge produces a balance transaction that becomes available later, and the payout that moves the money to a bank account arrives later still. Instrumenting only the API call that creates the intent captures the first moment and none of the rest. Mirador’s Stripe hint ties a PaymentIntent to a trace by its ID. The backend stripehint processor polls Stripe and emits the settlement lifecycle onto that same trace:
  • StripeHintAddedStripeTrackingStarted
  • StripePaymentSucceeded (charge and balance transaction resolved)
  • StripeFundsAvailable (gross, fee, and net, with the availability date)
  • StripePayoutPaid (the payout that settled the funds)
  • StripeTrackingFinished (terminal)
You record the hint once. The lifecycle is filled in for you.
Stripe hints are emitted over OpenTelemetry only. Unlike the Web3 hints, there is no Web SDK method — no Web3Plugin, no trace.payment.* namespace. Emit the reserved span event described below.

Recording a Payment Hint

Add the mirador.payment.stripe.intenthint event to the active span once Stripe has returned a PaymentIntent ID.
The PaymentIntent ID is the only attribute Mirador needs. Amounts, currency, charge IDs, fees, and payout details are resolved server-side from Stripe’s API.

Attributes

No chain attribute applies. Stripe is not a blockchain hint, so chain.id and chain.name do not affect tracking — like any extra attribute, they are preserved on the event as context.

Connected Accounts

On a Stripe Connect platform, pass the connected account that owns the payment so Mirador queries the right account.
Omit stripe.account_id when observing payments on your own account.

Lifecycle Events

The hint opens a synthetic stripehint span on the trace, and the lifecycle nests inside it.
Monetary values use Stripe’s native representation: an integer in the currency’s minor unit (cents for USD) plus a lowercase ISO currency code. This mirrors Stripe’s own amount/currency pair exactly, so no precision is lost.

Terminal Statuses

StripeTrackingFinished closes the lifecycle with one of: A payment that settles normally but has not yet paid out is still in flight, not failed. TIMEOUT means Mirador stopped watching, not that Stripe failed.

End-to-End Example

Combining With Other Hints

Stripe hints compose freely with the Web3 hints. A flow that charges a card and then settles onchain can carry both, and each resolves independently onto the same trace.

Next Steps

Enrichment Hints

The full reserved-event catalog and attribute contract

Market Rates

Resolve asset spot rates and USD notionals

Traces over OTLP

Exporter configuration and span mapping

Automation Rules

Alert on payment failures and disputes