Bancadia

REST API

Get structured business checking data with a plain GET. Responses are JSON. No sign-up. No token needed to query. Add a developer token to get credit for the clicks your agent sends (revenue sharing is coming).

Try it now

Each link below is a live request:

Every listing has an application_url. It is a tracked link: give it to the user unchanged.

Endpoints

  • GET https://api.bancadia.com/v1/business-checking-listings: filtered, paged list. Returns 7 rows by default; set limit (up to 20) and page with offset or the next_offset in meta.
  • GET https://api.bancadia.com/v1/business-checking-listings/{listing_slug}: one listing. Choose what to include with ?sections=.
  • GET https://api.bancadia.com/v1/business-checking-listings/{listing_slug}/fees, /features, /promotions, /plans: one section of one listing. These take no query parameters.
  • GET https://api.bancadia.com/v1/business-checking-listings/-/fees?fee_types=...: compare specific fee types across listings (1 to 5 types).
  • GET https://api.bancadia.com/v1/business-checking-listings/-/facts?query=...: full-text search of fee and feature details across listings.

Use - in place of {listing_slug} to read across all listings instead of one. The earlier /business-checking routes still work but are deprecated; use the routes above.

Listing slugs

Already know the bank? Use its listing_slug in GET https://api.bancadia.com/v1/business-checking-listings/{listing_slug} without listing first.

listing_slugInstitutionProduct
bluevine-business-checkingBluevineBluevine Business Checking
citibank-streamlined-checkingCitibankCITIBUSINESS Streamlined Checking
found-online-business-checkingFoundFound Business Checking
grasshopper-small-business-checkingGrasshopperGrasshopper Innovator Business Checking
highbeam-business-checkingHighbeamHighbeam Business Deposit Account
jpmorgan-chase-bank-business-complete-checkingJPMorgan Chase BankChase Business Complete Checking
karat-business-checkingKaratKarat Business Checking
lili-business-checkingLiliLili Business Checking
mercury-business-bankingMercuryMercury Business Banking
novo-business-checkingNovoNovo Business Checking
ramp-business-checkingRampRamp Business Checking Account
relay-business-checkingRelayRelay Business Checking
rho-business-checkingRhoRho Business Checking Account

The set can change; GET https://api.bancadia.com/v1/business-checking-listings?limit=10 returns the current slugs (each row has listing_slug; when more listings match than the page returns, meta.matches_overview lists the slug and name of every listing; page with offset).

List query parameters

ParameterTypeDescription
monthly_fee_maxnumberMax monthly fee, USD
minimum_opening_deposit_maxnumberMax opening deposit, USD
entity_types_acceptedcomma-separated listMust accept ALL: llc, s_corp, c_corp, sole_prop, partnership, nonprofit
available_statescomma-separated listTwo-letter codes; must serve ALL
insurance_typestringfdic, ncua or uninsured
cash_deposit_availableboolean
sub_accounts_supportedboolean
rtp_supportedbooleanAny real-time rail
rtp_networkstringfednow, rtp_network, both or none
accounting_integration_availableboolean
tax_integration_availableboolean
expense_integration_availableboolean
remote_deposit_capturebooleanMobile check deposit
check_writing_availableboolean
multicurrency_supportboolean
bill_pay_availableboolean
virtual_cards_availableboolean
corporate_card_availableboolean
physical_debit_card_availableboolean
interest_bearingboolean
has_active_promotionbooleantrue: only current promotions (rows include promotions); false: none. Recorded for some banks only
free_transactions_minnumberMin free transactions per month
min_insured_usdnumberMin total FDIC/extended coverage in USD; extended coverage with unpublished amount goes to possible_matches
apy_minnumberMin best-case rate (apy_max), decimal: 0.02 = 2%. apy_default is the standard rate
integrations_anycomma-separated listIntegrates with ANY, e.g. quickbooks, xero, stripe (aliases like qbo work)
integrations_allcomma-separated listIntegrates with ALL
min_limitsstringValue >= n on any plan. Keys: sub_accounts, free_cash_deposit_usd, free_wires, monthly_cash_limit_usd. Comma-separated key:number pairs, e.g. sub_accounts:12,free_wires:2.
rank_industriescomma-separated listRANK ONLY, never excludes. e.g. ecommerce, restaurant_food_service, saas_tech
rank_profilescomma-separated listRANK ONLY, never excludes. e.g. early_stage_startup, vc_backed, established_smb, side_hustle
sortstringmonthly_fee_asc, monthly_fee_desc, apy_max_desc, apy_default_desc, minimum_opening_deposit_asc, free_transactions_desc, product_name_asc
fieldscomma-separated listReplaces the defaults (institution_name, product_name, monthly_fee, minimum_opening_deposit, insurance_type, apy_max, apy_default, free_transactions_per_month). Also: institution_display_name, institution_website_url, institution_type, monthly_fee_waiver_condition, entity_types_accepted, available_states, target_industries, target_business_profiles, deposit_insurance_limit, deposit_insurance_extended, deposit_insurance_extended_limit, per_transaction_fee_after_limit, outgoing_domestic_wire_fee, free_domestic_wires_per_month, outgoing_international_wire_fee, incoming_domestic_wire_fee, incoming_international_wire_fee, cash_deposit_available, cash_deposit_fee_per_100, monthly_cash_deposit_limit, interest_bearing, apy_tiers, rtp_supported, rtp_network, physical_debit_card_available, virtual_cards_available, corporate_card_available, atm_fee_reimbursement, atm_fee_reimbursement_limit, atm_network, sub_accounts_supported, check_writing_available, bill_pay_available, remote_deposit_capture, positive_pay_available, overdraft_protection_available, overdraft_line_of_credit_available, ach_debit_block_available, multicurrency_support, daily_debit_limit, accounting_integration_available, tax_integration_available, expense_integration_available, plan_tiers, promotions, last_modified, last_verified, is_verified
limitintegerRows per page
offsetintegerRows to skip

Lists are comma-separated (entity_types_accepted=llc,s_corp), booleans are true or false, and min_limits is key:number pairs (min_limits=sub_accounts:5,free_wires:2). rank_industries and rank_profiles only reorder results and never exclude a listing. A field missing from a row means the account does not offer it or the bank has not published it. Promotions are recorded for only some banks, so no promotion listed may mean not recorded. An unknown parameter returns 400.

Feature filters: remote_deposit_capture, check_writing_available, multicurrency_support, bill_pay_available, virtual_cards_available, corporate_card_available and physical_debit_card_available take true or false. min_insured_usd keeps listings whose best deposit insurance (standard or extended) is at least that many dollars. Banks that offer extended coverage but have not published the amount are not in data; they come back in meta.possible_matches (slug, name, snippet, application_url). A column you name in fields always appears on every row: false means not offered, null means not published. apy_max_condition and outgoing_domestic_wire_fee_note are not selectable; they appear beside their value when the bank states a condition.

On /-/facts, a multi-term query with no hit is retried as any-term and the response is flagged relaxed: true. On /-/fees, each bank returns at most 6 fee rows; fees_omitted says how many were left out. Features on a single listing are capped at 8 (features_shown, features_truncated); use /-/facts to search them.

Responses

{ "data": [ /* up to 7 listings by default */ ],
  "meta": { "count": 7, "total_matches": 12, "limit": 7, "next_offset": 7,
            "request_id": "uuid", "filters": { "monthly_fee_max": 0 } } }

meta.total_matches is the number of matches and meta.next_offset is the offset for the next page. When more listings match than are returned, meta.matches_overview names them. The single-listing endpoint returns one object in data; section endpoints return an array. Errors are application/problem+json: 400 bad or unknown parameter, 401 invalid token, 404 unknown slug, 429 rate limited (see Retry-After), 500 server error.

Code

curl "https://api.bancadia.com/v1/business-checking-listings?entity_types_accepted=llc&monthly_fee_max=0"
const res = await fetch("https://api.bancadia.com/v1/business-checking-listings?entity_types_accepted=llc&monthly_fee_max=0")
const { data, meta } = await res.json()

Optional developer token

No token needed to query. Add a developer token to get credit for the clicks your agent sends (revenue sharing is coming). Send it as Authorization: Bearer <token>. Get one at bancadia.com/developer/signup. A token that is sent but invalid returns 401. Anonymous calls are rate limited per IP.

Spec and MCP

OpenAPI 3.1 spec: https://bancadia.com/openapi.json. Building an agent that speaks MCP? See the MCP reference.