> ## Documentation Index
> Fetch the complete documentation index at: https://agents.laso.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Trigger a card data refresh

> Requests an updated balance for a card.

For U.S. non-reloadable cards (default), the card is re-scraped from the issuer via a retrieval queue and processed asynchronously. Rate limited per card to one request every 5 minutes, and to at most 24 refreshes in any rolling 24-hour period.

For international non-reloadable cards, a balance update request is recorded; an admin will manually update the balance within 24 hours. While a balance update is already pending for a card, additional requests for that card return 409.

Requires a Bearer token from `/auth` or `/get-card`.



## OpenAPI

````yaml /api-reference/openapi.json post /refresh-card-data
openapi: 3.1.0
info:
  title: Laso Finance x402 API
  version: 1.0.0
  description: >-
    Payment-gated API for Laso Finance. All paywalled routes use the x402
    protocol — the caller includes a USDC payment header on Base (eip155:8453)
    or Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp) and the server verifies
    payment before processing. Free routes require no payment header.


    ## Getting started


    To set up a wallet for making x402 payments, choose a provider:


    - **Locus** (default): https://paywithlocus.com/SKILL.md

    - **Sponge**: https://wallet.paysponge.com/skill.md — automatic x402 service
    discovery

    - **Ampersend**: https://www.ampersend.ai/getting-started.md — self-custody
    on Base with dual-approval spending limits. Laso Finance is a default skill,
    so no manual endpoint registration is needed.


    ## How x402 works


    1. Call a paywalled endpoint without a payment header → receive a `402
    Payment Required` response containing payment details (price, recipient
    address, network).

    2. Construct an x402 payment header using the details from the 402 response.

    3. Replay the request with the payment header → the server verifies payment
    and processes the request.


    ## Authentication flow


    `GET /auth` is free: callers prove wallet ownership by sending a
    `SIGN-IN-WITH-X` header (CAIP-122 wallet signature). Paywalled routes
    (`/get-card`, `/order-gift-card`, `/get-push-to-card`, `/order-intl-card`)
    also return fresh auth credentials in their responses, so a payment is never
    required just to obtain a token.


    Most routes return auth credentials (`id_token`, `refresh_token`,
    `expires_in`). Use the `id_token` as a Bearer token to call authenticated
    Laso Finance endpoints like `/get-card-data`. When the `id_token` expires,
    use `POST /auth` with `grant_type: refresh_token` to get a new one.


    ## Important notes


    The `/get-card` USA prepaid card endpoint is U.S. only — issued in USD,
    usable at U.S.-based merchants only, and physical goods must ship to a U.S.
    address. For non-U.S. merchants or non-USD currencies, use `GET
    /order-intl-card` instead (international prepaid card, admin-fulfilled
    within 24 hours). All cards are intended for the caller's own use.


    For step-by-step instructions, read https://laso.finance/SKILL.md
servers:
  - url: https://laso.finance
    description: Production
security: []
paths:
  /refresh-card-data:
    post:
      summary: Trigger a card data refresh
      description: >-
        Requests an updated balance for a card.


        For U.S. non-reloadable cards (default), the card is re-scraped from the
        issuer via a retrieval queue and processed asynchronously. Rate limited
        per card to one request every 5 minutes, and to at most 24 refreshes in
        any rolling 24-hour period.


        For international non-reloadable cards, a balance update request is
        recorded; an admin will manually update the balance within 24 hours.
        While a balance update is already pending for a card, additional
        requests for that card return 409.


        Requires a Bearer token from `/auth` or `/get-card`.
      operationId: refreshCardData
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - card_id
              properties:
                card_id:
                  type: string
                  description: The card ID to refresh data for
                card_type:
                  type: string
                  description: >-
                    The type of card. Defaults to `Non-Reloadable U.S.` if
                    omitted.
                  enum:
                    - Non-Reloadable U.S.
                    - Non-Reloadable International
      responses:
        '200':
          description: Card refresh requested successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  message:
                    type: string
                    example: Card refresh requested.
        '400':
          description: Missing card_id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: card_id is required in request body
        '401':
          description: Missing or invalid Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Missing or invalid Authorization header
        '403':
          description: >-
            Account is frozen. The response includes a `frozen_message` field
            explaining why.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FrozenError'
              example:
                error: Account is frozen
                frozen_message: >-
                  Your account is frozen pending a compliance review. Contact
                  support@laso.finance.
        '404':
          description: Card not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Card not found
        '409':
          description: Card already has a pending refresh/balance update request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: A balance update is already pending for this card.
        '429':
          description: >-
            Rate limited — either less than 5 minutes since the last refresh of
            this card, or this card has reached its 24-refresh daily limit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: >-
                  Daily card refresh limit reached. You can request at most 24
                  refreshes for a card in a 24-hour period. Please try again
                  later.
      security:
        - BearerAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
    FrozenError:
      type: object
      properties:
        error:
          type: string
          example: Account is frozen
        frozen_message:
          type: string
          description: Human-readable explanation of why the account is frozen
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: ID token from `/auth` or `/get-card`

````