Get transfer limit
Changed onAnswers the per-transfer cap that applies to a transfer you are about to create, so you can size the amount (or ask the API to split it, see split on createBankTransaction) before you send anything.
The cap is not a property of a bank alone: it depends on the sending bank, the destination bank (same-bank transfers are never capped), whether the transfer belongs to an online or a deferred payroll, and the LBTR flag. Rather than reimplementing those four rules — and drifting from them — ask here.
The answer does not depend on the amount, so it is cacheable — but the caller is part of the key: (caller, sender_id, recipient_id, bank_payroll_id, lbtr). Both recipient_id and bank_payroll_id are resolved through the calling user's own visibility, so the same tuple is a 404 for a caller who cannot see them and a cap for one who can. Cache it private / per-session only — never in a shared or proxy cache, which would hand the second answer to the first.
It resolves a cap, it does not validate the transfer
This endpoint answers only "how large may one transfer be". It does not run the validations of createBankTransaction, so a 200 here is not a promise that the transfer is creatable — in particular for lbtr:
- lbtr: true between two accounts of the same bank answers max_amount: null (same-bank is uncapped), but creating it is a 422 "Lbtr cannot create lbtr transaction if the sender and recipient belong to the same bank".
- lbtr: true out of a bank other than Banco de Chile or Santander answers that bank's ordinary cap (LBTR does not lift it there), and creating it is a 422 "Lbtr is not yet implemented at bank {bank_id}".
The rest of the create-time rules (recipient approved, description format, budget, payroll state) are likewise out of scope here; they are listed on the 422 of createBankTransaction.
Request
- Base URLhttps://api.cardda.com
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Query parameters
The account the transfer would leave from. Must be an account you are a user of — that is the guard, not bank-key reachability: unlike createBankTransaction, this endpoint resolves no bank key. An account you are not a user of is 401; an id that matches no account at all is 404.
The recipient the transfer would go to, enrolled in sender_id (GET /v1/banking/bank_recipients?owner_id={sender_id}). A recipient of another account answers 404.
The payroll the transfer would join, if any. It matters: at Banco de Chile and BICE a deferred payroll (online: false) has no cap, while an online one keeps it. At Banco Security the cap is flat and the payroll changes nothing.
Must be a payroll of sender_id (payrolls belong to one sending account), otherwise 404 — including a payroll of another of your own accounts, which you can see but this transfer could not join. Omitting the parameter is a different question ("no payroll") and answers the no-payroll cap; it is never treated as a missing record.
Whether the transfer would be sent as LBTR (Chile's RTGS), which lifts the cap where supported (Banco de Chile and Santander). Anywhere else the cap comes back unchanged and the transfer itself would be rejected at creation — this endpoint does not check that.
Parameters
Response
The cap in force for that transfer
Example response
{
"max_amount": 7000000,
"max_transactions": 120
}Changes
- info
endpoint added
- info