What your users get
GET /get-pricing returns every product’s fee rate, minimum fee, and amount limits. It is free and needs no auth, so you can show prices in your UI before a user has an account. The USA prepaid card has no fee; most other routes add a fee on top of the requested amount. The 402 challenge on each paid request always carries the exact fee-inclusive total.
How identity works
There is nothing to register on our side, and your users never visit laso.finance.- The paying wallet is the account. Laso reads the payer from each x402 or MPP payment. The first paid request from a new wallet creates a Laso account for it, and the response includes that account’s credentials (
auth.id_token,auth.refresh_token). - Free sign-in without paying.
GET /authwith aSIGN-IN-WITH-Xheader proves ownership of the wallet and returns the same credentials. Use it for read-only calls before a first purchase. - Bearer tokens for everything else. Card details, balances, status checks, and webhooks use
Authorization: Bearer <id_token>. Tokens last about an hour;POST /authwith therefresh_tokenrenews them for free. See authentication.
Choose an integration path
- Catalog discovery
- Curated endpoint list
- Ship the agent skill
Best when your wallet already finds x402 services on its own, the way Sponge and Ampersend do.Index it alongside your other providers and new Laso routes appear in your catalog without a release on your side. Re-fetch at least daily; responses are cacheable for 60 seconds.
GET https://laso.finance/discovery/resources is a free, unauthenticated x402 resource catalog in the Bazaar list shape (x402Version, items, pagination). Each item carries the route URL, its description, and the same accepts payment options its 402 challenge quotes. Filter with the standard network, scheme, payTo, type, limit, and offset query parameters:Reference integration
The whole integration is three calls: sign in, pay, and poll. This TypeScript example uses the official x402 v2 client packages,@x402/fetch, @x402/evm, and @x402/extensions.
Laso accepts x402 v2 only. Older v1 clients (the unscoped
x402-fetch and
x402-axios packages, or an X-PAYMENT header) are rejected with
errorReason: "unsupported_x402_version" and nothing is charged.Behaviors your integration should handle
- Budget for the fee-inclusive total. The
amountyou pass is face value. Most routes charge face value plus a fee, so a request for the user’s entire balance as face value will fail. Read limits fromGET /get-pricingand the exact total from the 402 challenge. - Asynchronous fulfillment. USA cards need a short poll of
/get-card-data. International cards stay queued for up to about a day, so report the state instead of polling every few seconds. Register a webhook withPOST /register-webhookto get signed delivery events instead of polling. - Identity verification belongs to the human. Venmo and PayPal payouts and the bank account flow need the account owner to verify their identity first. Instead of failing, they return a verification link (
kyc_urlon/send-payment,kycUrlin the banking calls). Show the link to your user; never let the agent fill in the form for them.GET /get-kyc-statusreports when they are done. - Nothing is lost when fulfillment fails. A payment that settles but cannot be fulfilled (verification needed, a provider outage, a validation error) is credited to the user’s Laso account balance. The agent can retry, or return the funds to a Solana address with
POST /withdraw. - Retry a refused payment with a fresh challenge. A rejected signature or payment comes back as another
402with a new challenge. Sign the new one; never resend the same payload. See error handling.
Launch checklist
1
Price check
Call
GET /get-pricing and confirm your UI shows the fee-inclusive total
for each product you expose.2
Sign in a test user
Call
GET /auth from a fresh test wallet and confirm you receive
id_token, refresh_token, and user_id.3
Order a test USA card
Pay
GET /get-card?amount=5 from that wallet and poll /get-card-data
until status is "ready".4
Refresh a token
Call
POST /auth with the refresh_token and confirm the new id_token
works on /get-account-balance.5
Check isolation
Order from a second test wallet and confirm its token cannot read the first
wallet’s card.
Work with us
We help wallet teams that integrate Laso with launch support, co-marketing, and a listing in these docs next to Locus, Sponge, and Ampersend. Email support@laso.finance with your wallet’s name and the integration path you chose, and we will get back to you.How x402 works
The 402 challenge, signature, and settlement flow in detail.
API reference
Every route, parameter, and response shape.