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

# Fund Customer Card

> Push funds from your master wallet to a customer's card wallet. Only available for `master_wallet` programs.

<ParamField header="Authorization" type="string" required>
  Bearer token: `Bearer YOUR_ACCESS_TOKEN`
</ParamField>

<Note>
  Supply exactly one customer identifier. The customer must have completed onboarding
  (KYC approved, wallet ready) before funding.
</Note>

<ParamField body="customer_id" type="string">
  The `customer_id` from the [List Customers](/api-reference/issuer/customers) or [Look Up Customer](/api-reference/issuer/lookup-customer) response. You may supply any one identifier: `customer_id`, `card_id`, `external_id`, or `email`.
</ParamField>

<ParamField body="card_id" type="string">
  Card ID from card creation.
</ParamField>

<ParamField body="external_id" type="string">
  Your own reference (`external_customer_id`) set at onboarding.
</ParamField>

<ParamField body="email" type="string">
  Customer email address.
</ParamField>

<ParamField body="amount" type="number" required>
  Amount in USD. How this is interpreted depends on `pricing_mode` — see below. Minimum `5`.
</ParamField>

<ParamField body="source_chain" type="string" required>
  Your master wallet chain to use as the funding source. `SOL` or `XDC`.
</ParamField>

<ParamField body="pricing_mode" type="string">
  Controls whether `amount` is what you **send** or what the customer **receives**.

  * **`send_x`** (default) — Your master wallet is debited exactly `amount`. Any applicable fees are deducted before the customer's card is credited.
  * **`receive_x`** — The customer's card is credited exactly `amount`. The system works backwards through the fee schedule to calculate how much your master wallet must supply. Use this when the customer is owed an exact payout.

  **Example — funding \$200:**

  | `pricing_mode` | You send             | Customer receives    |
  | -------------- | -------------------- | -------------------- |
  | `send_x`       | \$200                | \~\$198 (after fees) |
  | `receive_x`    | \~\$202 (fees added) | \$200 exactly        |
</ParamField>

<ParamField body="destination_token" type="string">
  Optional target currency (`USD`, `EUR`, `GBP`). Defaults to the customer's card
  currency. Must match — mismatches return an error with the correct required currency.
</ParamField>

<RequestExample>
  ```bash cURL — receive_x (customer gets exactly $10) theme={null}
  curl -X POST 'https://crypto-api.yativo.com/api/v1/card-issuer/fund-customer' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    -d '{
      "email": "fernando@truther.io",
      "amount": 10,
      "source_chain": "SOL",
      "pricing_mode": "receive_x"
    }'
  ```

  ```bash cURL — send_x (debit exactly $200 from your wallet) theme={null}
  curl -X POST 'https://crypto-api.yativo.com/api/v1/card-issuer/fund-customer' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    -d '{
      "email": "fernando@truther.io",
      "amount": 200,
      "source_chain": "SOL",
      "pricing_mode": "send_x"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Completed theme={null}
  {
    "success": true,
    "message": "Customer funded successfully",
    "data": {
      "transfer_id": "bridge_1778501099297_2ea87af00de1",
      "status": "completed",
      "source": {
        "chain": "SOL",
        "amount": 10
      },
      "destination": {
        "token": "USD"
      },
      "pricing_mode": "receive_x",
      "estimated_amount": "10.000000",
      "estimated_time": "immediate"
    }
  }
  ```

  ```json 200 Pending (top-up in progress) theme={null}
  {
    "success": true,
    "message": "Funding initiated for customer",
    "data": {
      "transfer_id": "bridge_1778501099297_2ea87af00de1",
      "status": "pending",
      "source": {
        "chain": "SOL",
        "amount": 10.00105711
      },
      "destination": {
        "token": "USD"
      },
      "pricing_mode": "receive_x",
      "estimated_amount": "9.998943",
      "estimated_time": "2–5 minutes"
    }
  }
  ```

  ```json 400 Token mismatch theme={null}
  {
    "success": false,
    "error": "TOKEN_MISMATCH",
    "message": "This customer's card requires EUR. You requested USD. Please swap to EUR first.",
    "required_token": "EUR",
    "requested_token": "USD"
  }
  ```

  ```json 400 Daily limit exceeded theme={null}
  {
    "success": false,
    "error": "DAILY_LIMIT_EXCEEDED",
    "message": "Daily funding limit exceeded. Used: $48200.00, limit: $50000"
  }
  ```
</ResponseExample>

<Note>
  When `estimated_time` is `"immediate"` the transfer is already settled — no polling needed.
  When `estimated_time` is `"2–5 minutes"`, save the `transfer_id` and poll
  [Get Transfer Status](/api-reference/issuer/transfer-status) until `status` is `completed`.
</Note>
