Overview
Laso Finance prepaid cards go through a simple lifecycle: order, wait for details, spend, and deplete. Cards are non-reloadable — once the balance is used up, the card is done. But you can make multiple purchases until the balance hits zero.Lifecycle stages
1. Order
CallGET /get-card?amount=50 with an x402 payment. The amount you pay in USDC is the amount loaded onto the card (between $5 and $1,000).
The response returns immediately with:
card.card_id— Unique identifier for this cardcard.status— Always"pending"at this pointauth.id_token— Bearer token for polling
2. Pending
The card has been ordered but the details aren’t ready yet. This stage lasts ~7-10 seconds while the card is being issued by the card network. During this time, pollGET /get-card-data?card_id=X with your Bearer token every 2-3 seconds (the examples write it as $LASO_ID_TOKEN, exported from your saved credentials).
3. Ready
Oncestatus changes to "ready", the response includes full card details:
4. Spending
Use the card number, expiry, and CVV to make purchases. The card works at any US-based merchant — online, in-store, or via mobile wallets. When a merchant asks for a billing address or ZIP code, use thebilling_address from card_details. The billing name is always Laso Finance. For USA cards no specific address is enforced, so any valid U.S. billing address works and the returned address is a known-good default (ZIP 91723). International non-reloadable cards are different: their billing_address has required: true and the merchant AVS check is validated against exactly that address, so use it as-is.
You can make multiple purchases until the balance is depleted. Each purchase reduces the available_balance.
5. Depleted
When the balance reaches zero, the card can no longer be used. Order a new card with another/get-card call.
6. Expired
Cards expire 6 months after issuance. After the expiration date the card stops working even if it still has a balance, and any remaining funds are forfeited. Forfeited funds are retained by the card issuer and cannot be recovered or returned by Laso Finance. Spend the full balance before the expiration date.Key details
What ordering a card checks
A card order clears three checks and no others. Each is a distinct response you can handle:
Neither
/get-card nor /order-intl-card reads an identity-verification status, so there is no verification step to complete before ordering and no kyc_required field on either response. Verification is required per feature rather than per account: GET /get-kyc-status reports a wallet’s current state and GET /get-kyc-link starts verification, and both exist for the endpoints that do gate on it. Calling either one changes nothing about a card order.
This describes what the Laso API enforces at order time. Use of an issued card is separately governed by the card issuer’s terms, and a frozen account blocks new orders regardless of verification state.
Restrictions
Polling best practices
- Poll every 2-3 seconds — don’t hammer the endpoint
- The card is typically ready within 7-10 seconds
- If still pending after 30 seconds, something may be wrong — log the
card_idand contact support - Always check the
statusfield before readingcard_details
International non-reloadable cards
International cards (/order-intl-card) follow a similar lifecycle but with different timing and an admin-fulfillment step:
- Amount: $100 minimum, $1,000 maximum on-card (U.S. cards go as low as $5)
- Fee: 3.8% on top of the on-card amount
- Fulfillment: Queued until an admin manually orders the card (typically within 24 hours). During this window the card is in
state: "queued"/status: "queued". - Cancellation: While queued, you can cancel via
POST /cancel-intl-order. The charged amount is credited back to the account balance. Once fulfilled (state moves out ofqueued), cancellation is no longer possible. - Balance refresh: International card balances aren’t re-scraped automatically. Call
POST /refresh-card-datawithcard_type: "Non-Reloadable International"to request an admin balance update (returns 409 if a balance update is already pending for that card). card_idafter fulfillment: When an admin fulfills the order, the card is reissued and thecard_idchanges to the issuer’s transaction id. The original queue id is preserved on the card asqueued_order_card_id, and/get-card-data?card_id=<original-queue-id>keeps resolving to the fulfilled card, so you can keep polling with the same id.- Status values:
queued(waiting for admin fulfillment),ready(card details available),complete(card fully spent),refund-requested/refunded/archived(refund flow states). - Expiration: Like U.S. cards, international cards expire 6 months after issuance. Any balance remaining on an expired card is forfeited to issuer (not Laso Finance) and cannot be recovered. Spend the full balance before the expiration date.
Reloadable cards
Reloadable cards are a different product from the two above, and they have no order step in this API. The account holder sets one up in the Laso dashboard, links their card issuer account, and funds it. An agent’s job is to find the card and spend it.multi_use card (reusable: true) stays open across charges until its spend limit is consumed, and the holder can top it up rather than issuing a new card each time. If a holder has a reloadable card, prefer it over ordering a fresh single-load card per checkout.
Listing them
card_id, last4, expiry, balance, spend_limit, reusable, and status (open, paused, or closed). Spend against a card whose status is open and whose balance covers the purchase.
If the wallet has no card issuer account linked, the list comes back empty with a note. That is not an error — it means the account holder has not set up a reloadable card. Hand them the dashboard link rather than retrying.
Getting the card number requires the holder’s approval
This is the one place a reloadable card differs sharply from the non-reloadable flow. Card numbers are not returned on demand:details_approval with status: "pending", the card issuer has emailed the account holder an approve/deny link. There is no way to bypass this, and retrying without an approval only mints another request. Tell your human that an approval is waiting in their email, then retry with the approval_id once they have approved:
card_details (card number, CVV, expiry) is populated in that second response.
Spending it
Pay the merchant exactly as you would with any card: enter the number, expiry, and CVV at checkout, and enter the returnedbilling_address exactly as given. That address comes from the account holder’s identity verification and is AVS-checked at checkout — a mismatch as small as St versus Street is the most common decline on a card that has enough money on it.
A reloadable card with reusable: true stays open after an approved charge, so the same card can be spent again up to its remaining balance. Re-read balance before each purchase instead of assuming it still covers the total: there are no partial approvals, so a charge larger than the balance is declined in full rather than partly filled.
If a charge is declined, check in order: status is still open; balance covers the full amount including tax and shipping; and the billing address was entered exactly as returned. If all three hold, the decline is merchant-side — some merchants reject prepaid or debit cards, some non-U.S. merchants decline U.S.-issued cards, and these cards cannot be loaded into Apple Pay or Google Pay wallets.