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.

Requires the virtual-account feature flag. Without it the endpoint responds 403. Ask your account manager to enable it.

All amounts are integer cents of BRL. 400000 is 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.

CeilingScopeField
Per transactionA single depositpixIn*
MonthlyThe calendar monthmonthly

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.

FieldDescription
pixInSameHolderDayLimitPer-transaction inbound limit
pixInDifferentHolderDayLimitPer-transaction inbound limit
pixInSameHolderNightLimitPer-transaction inbound limit
pixInDifferentHolderNightLimitPer-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.

FieldDescription
limitThe monthly allowance
usedVolume that settled so far this month
remaininglimit - 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.remaining
limits = 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

StatusMeaning
401Missing or invalid API key
403The virtual-account feature flag is not enabled for this user — the error message names the flag your account manager enables
404No limits are available for this account
502The limits could not be read at this time — retry shortly
403 Forbidden
{
  "success": false,
  "error": "<feature flag> is not enabled for this user"
}