REST API · OpenAPI 3.1 · MCP server
Every tool, for your code and your agents.
The checks behind each PayOps Kit page are a keyless REST API and a remote MCP server: the same code, the same answers. Nothing to sign up for and nothing stored.
- No key, no account
- About 120 requests a minute
- Inputs never stored or logged
REST in one linehttps://payopskit.com/api/v1
GET checks one value; POST {"values": [...]} checks up to 500. JSON in, JSON out.
curl -s 'https://payopskit.com/api/v1/iban/DE89370400440532013000'curl -s 'https://payopskit.com/api/v1/business-days?calendar=us-fed&op=add&date=2026-07-02&n=1'Connect an agent over MCPhttps://payopskit.com/mcp
Streamable HTTP, stateless, no authentication. Add it to your client, then ask in plain words: “which bank is routing number 021000021?”
claude mcp add --transport http payops-kit https://payopskit.com/mcpClaude Desktop and claude.ai: Settings → Connectors → Add custom connector, and paste the URL.
Machine-readable:OpenAPI 3.1 (/openapi.json)llms.txtAPI index (/api/v1)
MCP
12 tools, all read-only
Each tool returns its result as JSON text and as structuredContent. A parameter the tool can’t use comes back as a result with isError: true and a message saying what to change; arguments that don’t fit the input schema are a JSON-RPC -32602 error.
validate_routing_numberRead-onlyValidate a US routing number
Validate a US ABA routing transit number (9 digits) with the 3-7-1 check-digit algorithm, or compute the check digit when given only the first 8 digits. Also decodes the Federal Reserve routing symbol (first two digits): 00 U.S. Government; 01–12 a Federal Reserve district (Reserve Bank and city); 21–32 thrift institutions; 61–72 electronic transactions; 80 traveler's checks; any other prefix is unassigned (invalid). For a valid number it also returns the bank (name, city/state, active or closed; a merged bank's number under the successor that holds it, the closed bank as formerly; source and as-of date) when the public data has it, else bank: null and bankLookup.reason: see lookup_bank_by_routing_number. A correct check digit does not prove the number is in use. Spaces and hyphens are ignored. The input is never stored or logged.
routing_numberrequired- 8 digits (compute the check digit) or 9 digits (validate), e.g. "021000021".
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"validate_routing_number","arguments":{"routing_number":"021000021"}}}'REST twin: /api/v1/routing-number/{value}
lookup_bank_by_routing_numberRead-onlyLook up the bank for a US routing number
Which bank a US ABA routing number belongs to: legal name, headquarters city and state, active or closed (with the closing date); a merged bank's number is named for the active successor that holds it now, with the closed bank as formerly. Also the brand and uses (wire, ACH, checks; states) the bank lists it for, and the source with its as-of date. The number is checked first (3-7-1 checksum; 8 digits complete it); an invalid one is not looked up. Data: primary routing numbers from FFIEC Call Reports joined to FDIC BankFind, plus the routing numbers banks publish on their own websites; NOT the Federal Reserve's E-Payments Routing Directory, so many valid numbers (a bank's other ACH or state numbers, acquired banks' numbers, credit unions) are missing: then bank is null and bankLookup says why (not_listed) and links the Fed directory. Confirm with the receiving bank or the Fed directory before sending funds. The input is never stored or logged.
routing_numberrequired- 9 digits, e.g. "021000021" (8 digits: the check digit is computed first).
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"lookup_bank_by_routing_number","arguments":{"routing_number":"021000021"}}}'REST twin: /api/v1/routing-number/{value}
validate_ibanRead-onlyValidate an IBAN
Validate an IBAN (electronic or print format; spaces allowed) against the SWIFT IBAN Registry: country code, length, BBAN structure and the ISO 7064 mod-97 check digits. Returns the electronic and print formats, the expected check digits, the country and its SEPA membership, the bank and branch codes where the registry positions are known, and every problem found. Valid means well formed — not that the account exists or can receive payments; national check digits inside the BBAN are not verified. The input is never stored or logged.
ibanrequired- The IBAN, e.g. "DE89 3704 0044 0532 0130 00".
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"validate_iban","arguments":{"iban":"DE89370400440532013000"}}}'REST twin: /api/v1/iban/{value}
compute_iban_check_digitsRead-onlyCompute IBAN check digits
Compute the two IBAN check digits (ISO 7064 mod 97-10) for a country code and a BBAN — the domestic account identifier that follows the check digits — and return the complete IBAN in electronic and print formats. Reports an error when the country has no IBAN or the BBAN doesn't match the country's registry structure.
countryrequired- ISO 3166 country code of the IBAN, e.g. "DE".
bbanrequired- The BBAN, e.g. "370400440532013000" (spaces allowed).
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"compute_iban_check_digits","arguments":{"country":"DE","bban":"370400440532013000"}}}'REST twin: /api/v1/iban/check-digits
parse_bicRead-onlyParse a BIC / SWIFT code
Parse and format-check a BIC / SWIFT code (ISO 9362; 8 or 11 characters): institution code, ISO 3166 country, location code and branch code. Flags test & training BICs (location ends in 0), passive participants (ends in 1, not connected to the SWIFT network) and reverse billing (ends in 2); branch XXX or a BIC8 is the head office; returns both the BIC8 and BIC11 forms. Format check only: it cannot tell whether a BIC is registered (SWIFT's BIC directory is not used).
bicrequired- The BIC, e.g. "DEUTDEFF" or "DEUTDEFF500".
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"parse_bic","arguments":{"bic":"DEUTDEFF500"}}}'REST twin: /api/v1/bic/{value}
business_day_mathRead-onlyBusiness-day arithmetic
Banking-day arithmetic on a bank holiday calendar. Calendars: us-fed (Federal Reserve Banks — FedACH and Fedwire; a Sunday holiday is observed Monday, a Saturday holiday is NOT observed), target2 (ECB TARGET closing days for EUR: Jan 1, Good Friday, Easter Monday, May 1, Dec 25, Dec 26), uk-ew (England & Wales bank holidays with substitute days). Operations: is-business-day; next / previous = the first business day strictly after / before date; add / subtract = move n business days (n 0–2000; add from Friday by 1 gives Monday); count = business days in (date, end_date], negative when end_date is earlier. Returns the answer, a one-line explanation and the holidays in range (the first 100; holidaysInRangeTotal counts them all). Unscheduled closures and future one-off proclamations are not known.
calendarrequired- Banking calendar: us-fed = Federal Reserve Banks (FedACH, Fedwire); target2 = ECB TARGET closing days (EUR); uk-ew = England & Wales bank holidays. One of: us-fed, target2, uk-ew.
operationrequired- What to compute. One of: is-business-day, next, previous, add, subtract, count.
daterequired- Start date, YYYY-MM-DD.
noptional- Business days to move (add, subtract).
end_dateoptional- The other end for count, YYYY-MM-DD.
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"business_day_math","arguments":{"calendar":"us-fed","operation":"add","date":"2026-07-02","n":1}}}'REST twin: /api/v1/business-days
list_bank_holidaysRead-onlyList bank holidays
List the holidays (weekdays the calendar is closed) of a banking calendar for one year, with observed and substitute days, the holidays that close no weekday (for example a Fed holiday on a Saturday: the Federal Reserve Banks are open the Friday before) and the calendar caveats. Calendars: us-fed (years 1990–2099), target2 (2002–2099), uk-ew (1995–2099, with the known one-off proclamations).
calendarrequired- Banking calendar: us-fed = Federal Reserve Banks (FedACH, Fedwire); target2 = ECB TARGET closing days (EUR); uk-ew = England & Wales bank holidays. One of: us-fed, target2, uk-ew.
yearrequired- Calendar year, e.g. 2026.
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_bank_holidays","arguments":{"calendar":"us-fed","year":2026}}}'REST twin: /api/v1/holidays
ach_settlement_dateRead-onlyACH settlement date
When a US ACH entry settles on FedACH, from its submission time (Eastern Time wall clock; omitted = the current time in New York) and Effective Entry Date (default: the submission date). Applies the Same Day ACH windows (deposit deadlines 10:30 a.m., 2:45 p.m. and 4:45 p.m. ET; settlement 1:00, 5:00 and 6:00 p.m. ET), IAT ineligibility (sec_code) and the per-payment limit (amount): $1,000,000 per payment (rising to $10,000,000 for entries submitted on or after September 17, 2027). Earlier submission dates get the rules then in force: no Same Day ACH before September 23, 2016, two windows before March 19, 2021, a $25,000 limit before March 20, 2020 and $100,000 before March 18, 2022. Otherwise next-day or future-dated settlement at 8:30 a.m. ET, on the Federal Reserve banking calendar. Returns the settlement date and time, the window used, the state of each window, the limit applied and an explanation. Informational: ODFIs set earlier cutoffs; not a substitute for the Nacha Operating Rules, your ACH Operator schedule or your ODFI agreement.
submitted_atoptional- File submission time as Eastern Time wall clock, YYYY-MM-DDTHH:MM (no offset). Omitted = now.
effective_dateoptional- Effective Entry Date, YYYY-MM-DD. Default: the submission date.
amountoptional- Payment amount in USD (Same Day ACH limit check). Omitted = assumed within the limit.
sec_codeoptional- SEC code, e.g. "PPD"; IAT is not Same Day eligible.
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ach_settlement_date","arguments":{"submitted_at":"2026-10-29T10:15","effective_date":"2026-10-29","amount":"2500.00","sec_code":"PPD"}}}'REST twin: /api/v1/ach/settlement
ach_return_deadlineRead-onlyACH return, NOC and reversal deadlines
ACH deadlines counted from a settlement date on the Federal Reserve banking calendar. With a return reason code (R01–R85): its return deadline — generally 2 banking days; 60 calendar days for extended returns (unauthorized consumer debits R05, R07, R10, R11, R37, R51, R53, and R33, R38, R52). With a NOC code (C01–C14, refused C61–C69): the NOC timing. Always also returns the standard return, extended return, NOC and reversal (5 banking days after settlement, Nacha Rules §2.8/§2.9) windows. For dishonored (R61, R62, R67–R70) and contested (R71–R77) codes pass the return's or dishonored return's settlement date: the four windows count from an original entry's, so windowsApply is then false. Informational, not a substitute for the Nacha Operating Rules or your ODFI agreement.
settlement_daterequired- Settlement date of the original entry; for dishonored codes (R61, R62, R67–R70) the return entry's; for contested codes (R71–R77) the dishonored return's. YYYY-MM-DD.
codeoptional- Return reason code (e.g. "R10") or NOC code (e.g. "C01").
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ach_return_deadline","arguments":{"settlement_date":"2026-10-29","code":"R10"}}}'REST twin: /api/v1/ach/return-deadline
lookup_payment_codeRead-onlyLook up a payment code
Look up or search payment codes: ACH return reason codes (R01–R85, with return timeframe and consumer/corporate notes), ACH NOC codes (C01–C14 and refused C61–C69), ACH SEC codes, ISO 20022 ExternalStatusReason1Code (a common set, e.g. AC01, AC04, AM04, MS03, RR04) and ISO 4217 currencies with minor units (alphabetic or numeric code). Pass code for an exact lookup, or query for a ranked text search ("insufficient funds"); set narrows either, and set alone lists the whole set (or its first limit rows when limit is given). limit caps search results (1–100, default 20).
codeoptional- Exact code, e.g. "R01", "C02", "PPD", "AM04", "USD" or "840".
queryoptional- Words to search for in codes, names and descriptions.
setoptional- Code set to search or list. One of: ach-return, ach-noc, ach-sec, iso20022-status, iso4217.
limitoptional- Most search results to return (default 20).
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"lookup_payment_code","arguments":{"code":"R10"}}}'REST twin: /api/v1/codes
validate_identifierRead-onlyValidate a finance identifier
Check the structure and check digit of a finance identifier: LEI (ISO 17442, mod 97-10), ISIN (ISO 6166, including the embedded CUSIP or SEDOL of US, CA, GB and IE ISINs), CUSIP, SEDOL, or a Luhn number such as a payment card number. type defaults to auto-detection by shape. Card numbers are masked in the result (first 6 and last 4 digits) and never stored or logged — still, use test numbers, not live cards. Check digits only: it does not confirm that an identifier has been allocated.
valuerequired- The identifier, e.g. "US0378331005" or "529900T8BM49AURSDO55".
typeoptional- Identifier type; default auto. One of: auto, lei, isin, cusip, sedol, luhn.
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"validate_identifier","arguments":{"value":"US0378331005"}}}'REST twin: /api/v1/identifier/{value}
amount_to_wordsRead-onlyCheck amount in words
Write a US dollar amount in words for the legal line of a check — 1234.56 gives "One thousand two hundred thirty-four and 56/100 dollars" — and optionally cross-check words someone wrote against the figure (valid is false when they differ). Amounts from 0 to 999,999,999,999,999.99 with at most 2 decimals; never rounds. Send 10,000,000,000,000 or more as a string: a JSON number that large cannot carry its cents exactly.
amountrequired- The figure, e.g. "1234.56" or "$1,234.56". Send 10,000,000,000,000 or more as a string, not a number.
wordsoptional- Words to cross-check against the figure.
curl -s -X POST 'https://payopskit.com/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"amount_to_words","arguments":{"amount":"1234.56"}}}'REST twin: /api/v1/check-amount
REST
Endpoints
Base URL https://payopskit.com/api/v1. Path segments are URL-encoded (a space is %20); query parameters use snake_case like the MCP arguments.
Meta
/api/v1API index
Name, version, the docs, OpenAPI and MCP URLs, and every endpoint.
curl -s 'https://payopskit.com/api/v1'Routing numbers
/api/v1/routing-number/{value}Validate a routing number
ABA 3-7-1 check digit (8 digits compute it), Federal Reserve routing symbol and district, and the bank (bank, bankLookup) from public FFIEC/FDIC data and banks' own published lists, not the Fed E-Payments Routing Directory: confirm with the receiving bank before sending funds.
valuepath · required- 8 or 9 digits; spaces and hyphens are ignored.
curl -s 'https://payopskit.com/api/v1/routing-number/021000021'Same answer over MCP: validate_routing_number
/api/v1/routing-numberValidate routing numbers (batch)
Up to 500 values per request; results in input order, each with its bank. Banks are looked up for at most 40 different routing symbols (first four digits) per request; numbers past that get bank: null with bankLookup.reason "limit_reached".
valuesbody · required- JSON body: an array of 1–500 strings.
curl -s -X POST 'https://payopskit.com/api/v1/routing-number' \
-H 'Content-Type: application/json' \
-d '{
"values": [
"021000021",
"011000015",
"02100002"
]
}'Same answer over MCP: validate_routing_number
IBAN
/api/v1/iban/check-digitsCompute IBAN check digits
The two check digits for a country and BBAN, and the complete IBAN.
countryquery · required- ISO 3166 country code, e.g. DE.
bbanquery · required- The BBAN (domestic account identifier).
curl -s 'https://payopskit.com/api/v1/iban/check-digits?country=DE&bban=370400440532013000'Same answer over MCP: compute_iban_check_digits
/api/v1/iban/countriesIBAN country table
The SWIFT IBAN Registry countries: length, BBAN structure, SEPA membership, bank/branch positions, example.
curl -s 'https://payopskit.com/api/v1/iban/countries'/api/v1/iban/{value}Validate an IBAN
Country, length, BBAN structure and mod-97 check digits; electronic and print formats; bank and branch codes.
valuepath · required- The IBAN; URL-encode spaces (%20) or leave them out.
curl -s 'https://payopskit.com/api/v1/iban/DE89370400440532013000'Same answer over MCP: validate_iban
/api/v1/ibanValidate IBANs (batch)
Up to 500 values per request; results in input order.
valuesbody · required- JSON body: an array of 1–500 strings.
curl -s -X POST 'https://payopskit.com/api/v1/iban' \
-H 'Content-Type: application/json' \
-d '{
"values": [
"DE89370400440532013000",
"GB29 NWBK 6016 1331 9268 19"
]
}'Same answer over MCP: validate_iban
BIC
/api/v1/bic/{value}Parse a BIC
Institution, country, location and branch codes; test, passive and head-office flags; BIC8 and BIC11.
valuepath · required- BIC8 or BIC11.
curl -s 'https://payopskit.com/api/v1/bic/DEUTDEFF500'Same answer over MCP: parse_bic
/api/v1/bicParse BICs (batch)
Up to 500 values per request; results in input order.
valuesbody · required- JSON body: an array of 1–500 strings.
curl -s -X POST 'https://payopskit.com/api/v1/bic' \
-H 'Content-Type: application/json' \
-d '{
"values": [
"DEUTDEFF",
"NWBKGB2L",
"CHASUS33XXX"
]
}'Same answer over MCP: parse_bic
Business days
/api/v1/business-daysBusiness-day arithmetic
is-business-day, next, previous, add, subtract or count on the us-fed, target2 or uk-ew calendar. count = business days in (date, end_date].
calendarquery · required- us-fed, target2 or uk-ew.
opquery · required- Operation (operation is accepted too).
datequery · required- YYYY-MM-DD.
nquery · optional- Business days to move (add, subtract): 0–2000.
end_datequery · optional- Other end for count, YYYY-MM-DD.
curl -s 'https://payopskit.com/api/v1/business-days?calendar=us-fed&op=add&date=2026-07-02&n=1'Same answer over MCP: business_day_math
/api/v1/holidaysBank holidays for a year
Closing weekdays with observed and substitute days; format=ics answers an iCalendar file instead of JSON.
calendarquery · required- us-fed, target2 or uk-ew.
yearquery · required- Four-digit year.
formatquery · optional- json (default) or ics.
curl -s 'https://payopskit.com/api/v1/holidays?calendar=us-fed&year=2026'Same answer over MCP: list_bank_holidays
/api/v1/calendarsSupported calendars
Each calendar with its rules, caveats and year range.
curl -s 'https://payopskit.com/api/v1/calendars'ACH
/api/v1/ach/settlementACH settlement date
Same Day ACH window or next-day settlement on FedACH for a submission time (Eastern Time) and effective date, under the Same Day ACH rules in force on the submission date. Informational only.
submitted_atquery · optional- YYYY-MM-DDTHH:MM Eastern Time wall clock; omitted = now.
effective_datequery · optional- YYYY-MM-DD; default the submission date.
amountquery · optional- USD amount for the Same Day limit: $1,000,000 per payment ($10,000,000 for entries submitted on or after September 17, 2027).
sec_codequery · optional- SEC code; IAT is not Same Day eligible.
curl -s 'https://payopskit.com/api/v1/ach/settlement?submitted_at=2026-10-29T10%3A15&effective_date=2026-10-29&amount=2500.00&sec_code=PPD'Same answer over MCP: ach_settlement_date
/api/v1/ach/return-deadlineACH return, NOC and reversal deadlines
The deadline for a return or NOC code, plus the standard, extended, NOC and reversal windows. For dishonored (R61, R62, R67–R70) and contested (R71–R77) codes pass the return's or dishonored return's settlement date; the four windows count from an original entry's, so windowsApply is then false. Informational only.
settlement_datequery · required- Settlement date of the original entry; for dishonored codes (R61, R62, R67–R70) the return entry's; for contested codes (R71–R77) the dishonored return's. YYYY-MM-DD.
codequery · optional- Return reason code (R01–R85) or NOC code (C01–C14, C61–C69).
curl -s 'https://payopskit.com/api/v1/ach/return-deadline?settlement_date=2026-10-29&code=R10'Same answer over MCP: ach_return_deadline
Codes
/api/v1/codesSearch payment codes
Ranked search over ACH return, NOC and SEC codes, ISO 20022 status reasons and ISO 4217 currencies.
qquery · optional- Search words (at most 200 characters); omit to list the set.
setquery · optional- Code set to search.
limitquery · optional- 1–100, default 20; without q, the whole set is listed unless limit is given.
curl -s 'https://payopskit.com/api/v1/codes?q=insufficient'Same answer over MCP: lookup_payment_code
/api/v1/codes/{code}Look up a payment code
Exact, case-insensitive match in every set (or one); 404 when no set has the code.
codepath · required- R01, C02, PPD, AM04, USD, 840, …
setquery · optional- Restrict to one code set.
curl -s 'https://payopskit.com/api/v1/codes/R01'Same answer over MCP: lookup_payment_code
Identifiers
/api/v1/identifier/{value}Validate a finance identifier
LEI, ISIN, CUSIP, SEDOL or Luhn check digit, auto-detected by shape unless type is given. Card numbers are masked.
valuepath · required- The identifier.
typequery · optional- auto (default), lei, isin, cusip, sedol or luhn.
curl -s 'https://payopskit.com/api/v1/identifier/US0378331005'Same answer over MCP: validate_identifier
/api/v1/identifierValidate identifiers (batch)
Up to 500 values per request; an optional type applies to all of them.
valuesbody · required- JSON body: an array of 1–500 strings.
typebody · optional- JSON body: auto (default), lei, isin, cusip, sedol or luhn, for every value.
curl -s -X POST 'https://payopskit.com/api/v1/identifier' \
-H 'Content-Type: application/json' \
-d '{
"values": [
"529900T8BM49AURSDO55",
"US0378331005",
"037833100",
"0263494"
]
}'Same answer over MCP: validate_identifier
Check amount
/api/v1/check-amountAmount in words
The legal line of a check for a USD amount; with words, a cross-check against the figure.
amountquery · required- USD amount, up to 2 decimals.
wordsquery · optional- Words to cross-check.
curl -s 'https://payopskit.com/api/v1/check-amount?amount=1234.56'Same answer over MCP: amount_to_words
Errors
One error shape
Every 4xx and 5xx under /api/v1 has the same body.
{
"error": {
"code": "invalid_date",
"message": "date must be a real date in YYYY-MM-DD form, like 2026-07-03.",
"param": "date"
}
}- 200
- The check ran. An invalid value is still a 200 with "valid": false and the problems in "errors".
- 400
- The request has to change: a missing or unusable parameter (missing_parameter, invalid_date, unknown_calendar, …), a body that isn’t JSON, or too many values.
- 404
- No such endpoint, or no such payment code (GET /api/v1/codes/{code}).
- 405
- Wrong method; the Allow header names the right one.
- 413
- Request body over 64 KB.
- 429
- Over about 120 requests a minute from one visitor; wait the Retry-After seconds.
Fair use
Limits and privacy
Rate limit
About 120 requests a minute per visitor (an IPv4 address or an IPv6 /64), REST and MCP together; each tools/call in an MCP batch counts as one. Beyond that: 429 with Retry-After.
Request size
Bodies up to 64 KB and 500 values per batch; MCP batch arrays up to 10 messages (none under protocol 2025-06-18). Banks are looked up for up to 40 routing symbols per request. OpenAPI and llms.txt are not rate-limited.
Nothing kept
Inputs are processed in memory for one response, then discarded: never stored, never logged. Only anonymous per-tool call counters exist.
Open CORS, no keys
Browsers may call the API, MCP, OpenAPI and llms.txt from any origin. The site’s pages keep their strict same-origin policy.
Informational answers
bank: null, bankLookup.reason: "not_listed"), and a number should be confirmed with the receiving bank before funds are sent. See the privacy page and the terms.