One-time cards
A virtual card for one purchase, typed into a normal checkout form. Your saved card is never shared.
Shared Payment Tokens
For merchants on the Stripe network that accept machine payments: the agent pays over HTTP, without filling out a form.
You approve each one
Each purchase shows up in the Link app with merchant and amount. Approve it, or decline it and the agent stops.
How it works
- You connect your Link wallet to a project in the dashboard (once).
- You start a run with
stripeLinkConnectionId. Only runs that pass it can pay. - When the task needs a payment, the agent creates a spend request for the exact merchant and amount.
- Link asks you to approve it in the Link app. The run emits a
stripe_link.spend_requestevent with anapproval_url. - After you approve, the agent gets a one-time card (or a Shared Payment Token) and completes the purchase.
1. Connect your Link wallet
- Open Integrations in the dashboard and pick the project.
- Under Link, click Connect and sign in to Link.
- Approve the connection in Link. The card now shows your Link email.
Connecting only works in the dashboard; there is no API for it. Link agent
wallets are currently available for US Link accounts. If Link says the
service is not available in your region, your Link account (or network)
is outside the supported region.
2. Get the connection id
connectionIdis what you pass to runs. Reconnecting usually keeps the same id, but don’t cache it forever: readGET /api/v4/stripe-linkbefore a run and use theconnectionIdandisConnectedit returns.modeisliveonapi.browser-use.com: approved purchases are real charges.- If
isConnectedisfalse, connect (or reconnect) the wallet in the dashboard first.
3. Start a run that can pay
- Follow-up runs. A follow-up
POST /runsin the same session must sendstripeLinkConnectionIdagain. Messages queued withPOST /sessions/{session_id}/queuekeep the previous run’s connection. - Dashboard runs. In the dashboard, Pay with Link in the composer is on by default once the project is connected; switch it off for runs that should not pay.
4. Approve the purchase
When the agent is ready to pay, it creates a spend request and waits for you:- Link app. You get an approval request in the Link app showing the merchant and the amount. Approve or decline it there.
- Dashboard. The run’s chat shows a payment card with an approve button that opens Link.
- API. The run emits
stripe_link.spend_requestevents. Read them withGET /api/v4/runs/{run_id}/eventsand sendapproval_urlto whoever has to approve:
status moves through pending_approval → approved → succeeded for a completed payment. You can also see denied (you declined), expired (nobody approved in time), canceled (the agent cancelled an unused request) and requires_action (for example a 3-D Secure check). If you decline, the agent stops instead of trying again. While the agent waits, it re-checks the request every few seconds. Unchanged polls are usually collapsed into one event, but the same status can still arrive more than once (we saw repeated pending_approval events in testing), so key on spend_request_id and status.
Cards vs Shared Payment Tokens
The agent picks the credential that fits the merchant:
Some Stripe checkouts offer a Link payment button for AI agents; the agent uses it when it is there. That is a way of paying with the card flow, not a third credential type.
Limits
- Approval every time. There are no standing or pre-approved budgets: the proxy refuses delegated (pre-approved) spend requests.
- One wallet per project, connected by a dashboard user. Wallets per end user of your product are not supported.
- Not available in the EU deployment, or for zero-data-retention projects.
- Reconnect when asked. Link can revoke access (for example after a long time without use). Browser Use may not notice right away: until it marks the connection as needing reauthentication,
GET /api/v4/stripe-linkcan still reportisConnected: trueand runs still start, but the agent’s Link calls fail at payment time with alink_unauthorizederror. Once the connection is marked, the dashboard shows Reconnect, the status API returnsisConnected: false, and new runs that send the id get422 stripe link connection not found. Reconnect in the dashboard in either case. - Pricing. Browser Use charges nothing extra for Link. You pay the merchant through Link as usual.