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

# Deposit callbacks

Deposit callbacks are sent whenever funds are received at an address created via the [/v2/addresses/take](/api-reference/endpoints/addresses-take) endpoint.

Use the `foreign_id` field to identify which customer made the deposit. This value is the same as the `foreign_id` you provided when calling `/v2/addresses/take`.

Amount fields included in the callback:

* `currency_sent.amount` — the amount sent by the customer in the deposit currency
* `currency_received.amount` — the amount received after processing or conversion
* `currency_received.amount_minus_fee` — the amount credited to your merchant balance after fees

<Tabs>
  <Tab title="Confirmed">
    Sent when a deposit has been successfully confirmed and can be treated as final on your side. At this stage, it is safe to perform business actions such as crediting the customer's balance. If the address is configured with automatic conversion, the deposited amount is received in the address currency and then converted into the `convert_to` currency before being credited to your balance.

    <CodeGroup>
      ```json title="Without conversion" highlight={7,10,16-20,43} theme={null}
      {
        "id": 1,
        "end_user_reference": "user_12345",
        "type": "deposit",
        "crypto_address": {
          "id": 1,
          "currency": "USDC",
          "address": "0x9F2E4b7A1C3D5F6E8B0A2C4D6E8F1A3B5C7D9E0F",
          "tag": null,
          "foreign_id": "12345"
        },
        "currency_sent": {
          "currency": "USDC",
          "amount": "1000.00000000"
        },
        "currency_received": {
          "currency": "USDC",
          "amount": "1000.00000000",
          "amount_minus_fee": "997.00000000"
        },
        "transactions": [
          {
            "id": 1,
            "currency": "USDC",
            "transaction_type": "blockchain",
            "type": "deposit",
            "address": "0x9F2E4b7A1C3D5F6E8B0A2C4D6E8F1A3B5C7D9E0F",
            "tag": null,
            "amount": "1000.00000000",
            "txid": "0x3c8f1a92e6d4b7c0a5f2e8d1b6c9a4f7e0d3b8c5a1f6e9d2b4c7a0f3e8d5b1c9",
            "riskscore": "0.5",
            "confirmations": 3
          }
        ],
        "fees": [
          {
            "type": "deposit",
            "currency": "USDC",
            "amount": "3.00000000"
          }
        ],
        "error": "",
        "status": "confirmed"
      }
      ```

      ```json title="With conversion" highlight={7-8,11,17-21,53} theme={null}
      {
        "id": 2686510,
        "end_user_reference": "user_12345",
        "type": "deposit_exchange",
        "crypto_address": {
          "id": 382270,
          "currency": "USDC",
          "convert_to": "EUR",
          "address": "0x1D3F5A7C9E0B2D4F6A8C0E2B4D6F8A1C3E5B7D90",
          "tag": null,
          "foreign_id": "12345"
        },
        "currency_sent": {
          "currency": "USDC",
          "amount": "1000.00000000"
        },
        "currency_received": {
          "currency": "EUR",
          "amount": "920.00000000",
          "amount_minus_fee": "874.00000000"
        },
        "transactions": [
          {
            "id": 714576,
            "currency": "USDC",
            "transaction_type": "blockchain",
            "type": "deposit",
            "address": "0x1D3F5A7C9E0B2D4F6A8C0E2B4D6F8A1C3E5B7D90",
            "tag": null,
            "amount": "1000.00000000",
            "txid": "0x6b9d2f4a8c1e3b5d7f9a2c4e6b8d0f3a5c7e9b1d4f6a8c0e2b4d6f8a1c3e5b7d",
            "riskscore": "0.42",
            "confirmations": "1"
          },
          {
            "id": 714577,
            "currency": "USDC",
            "currency_to": "EUR",
            "transaction_type": "exchange",
            "type": "exchange",
            "amount": "1000.00000000",
            "amount_to": "920.00000000"
          }
        ],
        "fees": [
          {
            "type": "exchange",
            "currency": "EUR",
            "amount": "46.00000000"
          }
        ],
        "error": "",
        "status": "confirmed"
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Cross-currency deposit">
    Sent when a user deposits a currency different from the one originally assigned to the address. In this case, the callback includes `expected_currency`, and `crypto_address.cross_currency` is set to `true`.

    This callback may be disabled, see [Configure deposit callbacks](/merchant-administration/configure-deposit-callbacks).

    ```json highlight={5,11,18-22} theme={null}
    {
      "id": 2686510,
      "end_user_reference": "user_12345",
      "type": "deposit",
      "expected_currency": "USDC",
      "crypto_address": {
        "id": 382270,
        "currency": "ETH",
        "address": "0xd61180ff0cf74dc3ee8e264751f18c47060729b9",
        "tag": null,
        "cross_currency": true,
        "foreign_id": "12345"
      },
      "currency_sent": {
        "currency": "ETH",
        "amount": "0.01000000"
      },
      "currency_received": {
        "currency": "ETH",
        "amount": "0.01000000",
        "amount_minus_fee": "0.00900000"
      },
      "transactions": [
        {
          "id": 714576,
          "currency": "ETH",
          "transaction_type": "blockchain",
          "type": "deposit",
          "address": "0xd61180ff0cf74dc3ee8e264751f18c47060729b9",
          "tag": null,
          "amount": "0.01000000",
          "txid": "3a491da90a1ce5a318d0aeff6867ab98a03219abae29ed68d702291703c3538b",
          "riskscore": "0.72",
          "confirmations": "9"
        }
      ],
      "fees": [
        {
          "type": "transfer",
          "currency": "ETH",
          "amount": "0.00037336"
        }
      ],
      "error": "",
      "status": "confirmed"
    }
    ```
  </Tab>

  <Tab title="Processing">
    Sent when the transaction has been detected but is still being processed. You can create the deposit on your side with a “Pending” or “Processing” status, but should wait for a [confirmed](#confirmed) callback before treating it as final. Note that currencies which support instant confirmations may skip this callback entirely and go straight to `confirmed`. See [How deposits are confirmed](/deposits/how-deposits-are-confirmed) for the full confirmation flow, and [Confirmations and limits](/confirmations-and-limits) for the number of confirmations required per currency.

    If the address is configured with automatic conversion, the conversion has not yet taken place, so `currency_received` and the exchange transaction's `amount_to` are returned as `0`.

    <CodeGroup>
      ```json title="Without conversion" highlight={7,10,16-20,36} theme={null}
      {
        "id": 132506113,
        "end_user_reference": "user_12345",
        "type": "deposit",
        "crypto_address": {
          "id": 3776973,
          "currency": "USDC",
          "address": "0x071B2E45e2CD08011555755b93d5C76D2E62C4Cd",
          "tag": null,
          "foreign_id": "11"
        },
        "currency_sent": {
          "currency": "USDC",
          "amount": "1000.00000000"
        },
        "currency_received": {
          "currency": "USDC",
          "amount": "1000.00000000",
          "amount_minus_fee": "1000.00000000"
        },
        "transactions": [
          {
            "id": 3745588,
            "currency": "USDC",
            "transaction_type": "blockchain",
            "type": "deposit",
            "address": "0x071B2E45e2CD08011555755b93d5C76D2E62C4Cd",
            "tag": null,
            "amount": "1000.00000000",
            "txid": "0x4c72ffcb2dfcd0b21c4f19c094558865af465abdfa04a2b8c33ee569afa4ef8d",
            "riskscore": null,
            "confirmations": "1"
          }
        ],
        "fees": [],
        "error": "",
        "status": "not_confirmed"
      }
      ```

      ```json title="With conversion" highlight={7-8,11,17-21,47} theme={null}
      {
        "id": 135225178,
        "end_user_reference": "user_12345",
        "type": "deposit_exchange",
        "crypto_address": {
          "id": 240717684,
          "currency": "USDC",
          "convert_to": "EUR",
          "address": "0x5c625bB47E51F128E100b00A33f560Cd88272868",
          "tag": null,
          "foreign_id": "user_12345"
        },
        "currency_sent": {
          "currency": "USDC",
          "amount": "1000.00000000"
        },
        "currency_received": {
          "currency": "EUR",
          "amount": "0.00000000",
          "amount_minus_fee": "0.00000000"
        },
        "transactions": [
          {
            "id": 10248977,
            "currency": "USDC",
            "transaction_type": "blockchain",
            "type": "deposit",
            "address": "0x5c625bB47E51F128E100b00A33f560Cd88272868",
            "tag": null,
            "amount": "1000.00000000",
            "txid": "0x20f22a1dbbe601d92d174724aed22cd5df88ee36e56e2488ff70fe13d3dbcd89",
            "riskscore": null,
            "confirmations": "1"
          },
          {
            "id": 10248978,
            "currency": "USDC",
            "currency_to": "EUR",
            "transaction_type": "exchange",
            "type": "exchange",
            "amount": "1000.00000000",
            "amount_to": "0.00000000"
          }
        ],
        "fees": [],
        "error": "",
        "status": "not_confirmed"
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Below minimum amount">
    Sent when the deposited amount is lower than the minimum allowed for that currency. Such deposits are not credited, and no fees are charged.

    This callback may be disabled, see [Configure deposit callbacks](/merchant-administration/configure-deposit-callbacks).

    ```json highlight={10,26-27} theme={null}
    {
      "id": 2686563,
      "end_user_reference": "user_12345",
      "type": "deposit",
      "crypto_address": {
        "id": 381738,
        "currency": "USDC",
        "address": "0xd61180ff0cf74dc3ee8e264751f18c47060729b9",
        "tag": null,
        "foreign_id": "12345"
      },
      "transactions": [
        {
          "id": 714657,
          "currency": "USDC",
          "transaction_type": "blockchain",
          "type": "deposit",
          "address": "0xd61180ff0cf74dc3ee8e264751f18c47060729b9",
          "tag": null,
          "amount": "3.00000000",
          "txid": "0x6b353da88a8ba2df4926c1ccc58991f484a683ba57ec3dde70e812b5c8c7fa1d",
          "confirmations": "9"
        }
      ],
      "fees": [],
      "error": "Transaction amount less than minimum deposit",
      "status": "cancelled"
    }
    ```
  </Tab>

  <Tab title="Cancelled (double spend)">
    Sent when a detected deposit is cancelled because of a double-spend event. The `"Double spend"` error means the transaction cannot be credited to your merchant account because the system detected duplicate spending of the same funds in the blockchain — as a result, the transaction also appears as unsuccessful in the blockchain itself. Since the transaction is not considered valid, you should not credit the customer's balance.

    ```json highlight={10,27-28} theme={null}
    {
      "id": 100,
      "end_user_reference": "user_12345",
      "type": "deposit",
      "crypto_address": {
        "id": 123,
        "currency": "USDC",
        "address": "0x4B6A2E8D1C3F5A7E9B0D2C4F6E8A1B3D5C7E9F02",
        "tag": null,
        "foreign_id": "12345"
      },
      "transactions": [
        {
          "id": 999,
          "currency": "USDC",
          "transaction_type": "blockchain",
          "type": "deposit",
          "address": "0x4B6A2E8D1C3F5A7E9B0D2C4F6E8A1B3D5C7E9F02",
          "tag": null,
          "amount": "1000.00000000",
          "txid": "0x7e1a4c9d2f6b8e0a3c5d7f9b1e4a6c8d0f2b4e6a8c1d3f5b7e9a0c2d4f6b8e1a",
          "riskscore": "0.01",
          "confirmations": "0"
        }
      ],
      "fees": [],
      "error": "Double spend",
      "status": "cancelled"
    }
    ```
  </Tab>
</Tabs>
