---
title: "Order an international prepaid card"
method: GET
path: "/order-intl-card"
---

# Order an international prepaid card

`GET /order-intl-card`

## Request

- Base URL: `https://laso.finance`
- URL: `https://laso.finance/order-intl-card`
- Auth: none declared

Order an international non-reloadable prepaid card (USD). The order is queued and fulfilled by an admin — after fulfillment, card details become available via `GET /get-card-data` with `card_type=Non-Reloadable International`.

The x402 payment covers the on-card amount plus a 3.8% fee, or a lower rate while a limited-time fee promotion is running (it can be 0%). The 402 challenge always carries the exact total. Minimum \$100, maximum \$1,000 on-card amount. The \$1,000 maximum is the amount loaded on the card and does not change with the fee rate. Submit a whole dollar amount.

Placing the order accepts the card issuer's terms on behalf of the account holder: the [Cardholder Agreement](https://laso.finance/intl-card-cardholder-agreement.pdf), the [E-Communications Disclosure](https://laso.finance/intl-card-e-communications-disclosure.pdf), and the [Privacy Notice](https://laso.finance/intl-card-privacy-notice.pdf). 

If you need to cancel a queued order before it is fulfilled, use `POST /cancel-intl-order`.

## Query parameters

- `amount` number, required

## Response `200`

International card order queued

- object
  - `auth` AuthCredentials
    - `id_token` string: ID token — use as Bearer token for Laso Finance APIs
    - `refresh_token` string: Use with POST /auth (grant_type=refresh_token) to get a new id_token when it expires
    - `expires_in` string: Token lifetime in seconds
  - `callable_base_url` string
  - `user_id` string
  - `intl_card_order` object
    - `card_id` string: Id of the queued order. Pass it as `card_id` to `GET /get-card-data` to poll for the card details, or to `POST /cancel-intl-order` while the order is still queued.
    - `on_card_usd_amount` number
    - `charged_usd_amount` number
    - `status` string
    - `timestamp` number
  - `message` string

## Other responses

- `400`: Invalid amount
- `402`: Payment required. No valid x402 payment header was included. The payment details (price, recipient address, network) are base64-encoded in the `PAYMENT-REQUIRED` response header and echoed as JSON in the response body. x402 client libraries handle this automatically. A **second** 402 on the paid retry means something different: the payment was refused, either at verification (most often an underfunded wallet) or at on-chain settlement. That response body is not empty and carries no `accepts` — it is the x402 settlement-failure shape `{"success": false, "errorReason": "...", "errorMessage": "..."}`, plus `x_laso_guidance` when a concrete next step applies. Distinguish the two by body: a challenge carries `accepts`, a failure carries `success: false`. The usual cause is an underfunded wallet, and the usual cause of that is the fee being charged **on top of** `amount` on routes that add one (a wallet holding exactly \$2,000 cannot send a \$2,000 bank payment; `/get-card` adds no fee, so it costs exactly `amount`). Nothing is charged for a failed settlement, so retrying with a smaller amount is safe.
- `403`: Account is frozen. The response includes a `frozen_message` field explaining why.
- `500`: Order failed

---

[API](https://skmtc.dev/laso/apis/laso-finance-x402-api.md) · [All operations](https://skmtc.dev/laso/apis/laso-finance-x402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/laso/apis/laso-finance-x402-api/revisions/ff8ce20b49ba?raw)
