Deposit Asset
Create a deposit via Lightning, USDT, USDC, USDCE, BRLA, BRS, DEPIX, or LBTC.
POST /api/deposit/asset
Create a deposit that converts BRL to the specified crypto asset. For BRS, the asset is minted to the user's own Hodle Solana wallet; the other assets are sent to the provided address.
Request
curl --request POST \
--url https://api.hodle.com.br/api/deposit/asset \
--header "Authorization: Bearer $API_KEY" \
--header "Content-Type: application/json" \
--data '{
"value": 5000,
"address": "lnbc500u1pj...",
"asset": "LIGHTNING",
"externalId": "my-order-123"
}'const res = await fetch('https://api.hodle.com.br/api/deposit/asset', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.HODLE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
value: 5000,
address: 'lnbc500u1pj...',
asset: 'LIGHTNING',
externalId: 'my-order-123',
}),
})
const data = await res.json()import os, requests
res = requests.post(
"https://api.hodle.com.br/api/deposit/asset",
headers={
"Authorization": f"Bearer {os.environ['HODLE_API_KEY']}",
"Content-Type": "application/json",
},
json={
"value": 5000,
"address": "lnbc500u1pj...",
"asset": "LIGHTNING",
"externalId": "my-order-123",
},
)
data = res.json()Body example
{
"value": 5000,
"address": "lnbc500u1pj...",
"asset": "LIGHTNING",
"externalId": "my-order-123"
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
value | integer | Yes | Amount in BRL cents. Must be a positive integer. |
address | string | Cond. | Destination address. Required for LIGHTNING, USDT, USDC, USDCE, BRLA, DEPIX, and LBTC; omit for BRS, which is minted to the account's own Hodle Solana wallet. |
asset | string | Yes | Asset type: LIGHTNING, USDT, USDC, USDCE, BRLA, BRS, DEPIX, or LBTC. |
network | string | Cond. | On-chain network for the asset. Required for USDT, USDC, USDCE, and BRLA; BRS only supports solana and defaults to it when omitted. Not needed for LIGHTNING, DEPIX, or LBTC. See Assets & Networks. |
externalId | string | No | Your own ID for reconciliation. Must be unique per deposit (idempotency key). A UUID is generated if not provided. |
subAccountId | string | No | Create the deposit on behalf of this subaccount (scoped to your API key). Defaults to the main account. |
taxId | string | No | CPF/CNPJ of the payer, when the payer is not the account holder. Digits only or masked. Rejected with 403 when third-party operations are not enabled for the account. On its own it does not let a third party pay the charge — see Who can pay the PIX. |
Who can pay the PIX
The PIX charge returned by this endpoint can only be paid by the CPF/CNPJ that owns the
account the deposit belongs to (the subaccount holder when subAccountId is used). A PIX
sent by anyone else is refused by the bank at payment time and no crypto is delivered.
To accept a PIX paid by a third party — for example when you charge your own end customer
on your account — ask support to enable DEPOSIT_THIRD_PARTY on the account.
Assets & Networks
| Asset | Networks | Address format |
|---|---|---|
LIGHTNING | lightning | Lightning invoice or LNURL email |
USDT | polygon, arbitrum | EVM address (0x...) |
USDC | polygon, base, gnosis | EVM address (0x...) |
USDCE | gnosis | EVM address (0x...) |
BRLA | polygon, base | EVM address (0x...) |
DEPIX | liquid | Liquid address |
LBTC | liquid | Liquid address |
BRS | solana | Own Hodle Solana wallet |
Available networks per asset can depend on your account configuration and KYC level. For the full matrix across every endpoint see Assets & Networks.
BRS requires the NORA_RAIL flag and is always minted to the user's own Hodle Solana
wallet. It does not accept a third-party destination. See BRS.
Address Formats
For LIGHTNING assets, the address can be:
- A Lightning invoice starting with
lnbc,lntb, orlnbcrt - An LNURL email in the format
[email protected]
For USDT, USDC, USDCE, and BRLA assets, the address is an EVM address (0x...) on the selected network.
For DEPIX and LBTC assets, the address is a Liquid address.
For BRS, omit address; the asset is minted to the account's own Hodle Solana wallet.
Response
{
"success": true,
"externalId": "my-order-123",
"qrCode": "lnbc500u1pj...",
"fee": 100,
"fxRateAtTx": 408000.50,
"walletCharge": "charge_abc123"
}Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the deposit was created. |
externalId | string | The external ID for reconciliation (your value or auto-generated UUID). |
qrCode | string | null | QR code for the deposit. |
fee | number | Fee charged for the deposit. |
fxRateAtTx | number | BTC/BRL exchange rate at the time of transaction. |
walletCharge | string | null | Wallet charge identifier. |
Errors
{
"success": false,
"error": "Validation failed",
"details": [
{ "field": "value", "message": "Expected number, received string" }
]
}{
"success": false,
"error": "A deposit with this externalId already exists"
}