Account Limits
Read the per-transaction and monthly limits that apply to your account.
GET /api/account/limits
Returns the limits that apply to the API key user's account.
Virtual accounts must be enabled on your account. Without it the endpoint responds 403. Ask support to enable it.
All amounts are integer cents of BRL.
400000is R$ 4.000,00.
Request
curl --request GET \
--url https://api.hodle.com.br/api/account/limits \
--header "Authorization: Bearer $API_KEY"const res = await fetch('https://api.hodle.com.br/api/account/limits', {
headers: { Authorization: `Bearer ${process.env.HODLE_API_KEY}` },
})
const data = await res.json()import os, requests
res = requests.get(
"https://api.hodle.com.br/api/account/limits",
headers={"Authorization": f"Bearer {os.environ['HODLE_API_KEY']}"},
)
data = res.json()Response
{
"success": true,
"data": {
"limits": {
"pixDayLimit": 4000000,
"pixNightLimit": 100000,
"pixInSameHolderDayLimit": 300000,
"pixInDifferentHolderDayLimit": 300000,
"pixInSameHolderNightLimit": 300000,
"pixInDifferentHolderNightLimit": 300000,
"dayStartAt": "06:00",
"nightStartAt": "20:00",
"monthly": {
"limit": 12000000,
"used": 450000,
"remaining": 11550000
}
}
}
}Two ceilings, both enforced
An inbound Pix has to clear both limits. Passing one is not enough.
| Ceiling | Scope | Field |
|---|---|---|
| Per transaction | A single deposit | pixIn* |
| Monthly | The calendar month | monthly |
Per transaction — pixIn*
Caps one deposit. It does not vary by holder or by time of day, which is why all four variants carry the same value.
| Field | Description |
|---|---|
pixInSameHolderDayLimit | Per-transaction inbound limit |
pixInDifferentHolderDayLimit | Per-transaction inbound limit |
pixInSameHolderNightLimit | Per-transaction inbound limit |
pixInDifferentHolderNightLimit | Per-transaction inbound limit |
A deposit above this value is refused whatever the monthly headroom.
Monthly — monthly
Caps the calendar month. It resets at the start of each month.
| Field | Description |
|---|---|
limit | The monthly allowance |
used | Volume that settled so far this month |
remaining | limit - used, floored at 0 |
Only settled deposits count. A Pix QR code that was generated and never paid is not volume and does not consume the allowance.
remaining is never negative: once the month is overspent it reports 0.
Account ceilings
pixDayLimit, pixNightLimit, dayStartAt and nightStartAt are registered for the account itself and are reported as-is. Each can be null when the account has none configured, so read them defensively.
dayStartAt and nightStartAt are HH:mm strings bounding the window each ceiling applies to — with the example values above, the day window runs 06:00–20:00 and the night window covers the rest.
const { monthly, pixInSameHolderDayLimit } = data.data.limits
const canDeposit = (amountInCents) =>
amountInCents <= pixInSameHolderDayLimit &&
amountInCents <= monthly.remaininglimits = data["data"]["limits"]
def can_deposit(amount_in_cents: int) -> bool:
return (
amount_in_cents <= limits["pixInSameHolderDayLimit"]
and amount_in_cents <= limits["monthly"]["remaining"]
)Not included
Pix-out and boleto limits are not part of this response.
Errors
| Status | Meaning |
|---|---|
401 | Missing or invalid API key |
403 | Virtual accounts are not enabled for this account — ask support to enable them |
404 | No limits are available for this account |
502 | The limits could not be read at this time — retry shortly |
{
"success": false,
"error": "<feature> is not enabled for this user"
}