Skip to main content

Documentation Index

Fetch the complete documentation index at: https://apidocs.bridge.xyz/llms.txt

Use this file to discover all available pages before exploring further.

🇺🇸 What we support

  • Virtual Accounts - Deposit USD via ACH or Wire and receive payments from 3rd party businesses.
  • Transfers - Onramp USD via Wire, ACH, or Same Day ACH as a 1st party or from 3rd party businesses, offramp to any recipient.
  • Liquidation Addresses - Offramp from stablecoin or crypto to USD via Wire or ACH.
  • Supported Countries - We support USD on/offramps for customers in +100 countries.

Logistics

  • Virtual accounts are fully permitted to receive the following transactions for non-US residents.
    1. First-party payments where you are sending USD from your bank, fintech app, or brokerage account
    2. Third-party payment where a registered business sends USD from its bank account
    3. Third-party payment from a family member’s bank account, where you share a surname
    4. Third-party Person-to-Person payment for an amount less than $4,000
  • The following types of transactions are fully permitted to be received by virtual accounts for US residents.
    1. First-party payments where you are sending USD from your bank, fintech app, or brokerage account
    2. Payroll payments from businesses
    3. Third party payments in most states except for New York and Texas
  • Refer here for cutoffs and processing times.
  • Refer here for payment tracking identifiers.

Request / Response Examples

Request
curl --request POST \
  --url https://api.bridge.xyz/v0/customers/#{request.customer_id}/external_accounts \
  --header 'Api-Key: #{api_key}' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: #{request.idempotency_key}' \
  --data '
{
  "currency": "usd",
  "account_type": "us",
  "bank_name": "Lead Bank",
  "account_name": "Ada Checking Account",
  "first_name": "Ada",
  "last_name": "Lovelace",
  "account_owner_type": "individual", // specifies an individual account
  "account_owner_name": "Ada Lovelace",
  "account": {
    "routing_number": "101019644",
    "account_number": "215268129123",
    "checking_or_savings": "checking"
  },
  "address": {
    "street_line_1": "923 Folsom Street",
    "country": "USA",
    "state": "CA",
    "city": "San Francisco",
    "postal_code": "941070000"
  }
}'
Response
{
    "id": "039c270f-a038-40be-be7b-43f550ce0678", // external account id
    "customer_id": "23c2d462-4c69-4c5a-b31a-88d035d7e8ae",
    "created_at": "2025-07-05T19:03:50.819Z",
    "updated_at": "2025-07-05T19:03:51.251Z",
    "bank_name": "Lead Bank",
    "account_name": "Ada Checking Account",
    "account_owner_name": "Ada Lovelace",
    "active": true,
    "currency": "usd",
    "account_owner_type": "individual",
    "account_type": "us",
    "first_name": "Ada",
    "last_name": "Lovelace",
    "business_name": null,
    "account": {
        "last_4": "9123",
        "routing_number": "101019644",
        "checking_or_savings": "checking"
    },
    "beneficiary_address_valid": true,
    "last_4": "9123"
}

To identify which rail a payment was actually received on, use the payment_received_rail field on the Transfer source, or the payment_rail field on the Virtual Account source.Note that for Transfers, the payment_rail you specify at creation reflects your intent — not a guarantee. The sending institution determines the actual rail used. For example, a Transfer created with payment_rail: wire may ultimately arrive via ACH, in which case payment_received_rail will reflect ach.

ACH

  • payment_rail: Use ach for outbound (offramp) transfers. Inbound (onramp) ACH pushed by the customer’s bank uses the ach_push rail, which is also what appears in Virtual Account deposit instructions.
  • ach_reference: Optional reference included with an ACH offramp. Maximum 10 characters; allowed characters are A–Z, a–z, 0–9, and spaces. Set this on the destination object.
  • trace_number: A unique 15-digit number assigned to each ACH transaction. Use this to uniquely identify ACH payments.
  • description: The ACH description set by the sender, configurable via API for offramps. For onramps, this is a read only field returned when available.
  • sender_name / sender_bank_routing_number: Sender identity fields returned read-only in onramp responses when available.

Same Day ACH

  • payment_rail: ach_same_day
  • Same response fields as standard ACH (trace_number, description, sender_name, ach_reference).

Wire

  • payment_rail: wire
  • wire_message: Optional memo included with the transfer. Up to 140 characters, validated as 4 lines of 35 characters each per the Fedwire standard. Set this on the destination object of an offramp transfer.
  • imad: The Input Message Accountability Data — a unique identifier assigned to each incoming Fedwire transaction. Returned read-only in onramp transfer responses and useful for reconciliation and tracing with your bank.
  • originator_name / originator_address: Name and address of the sender, returned read-only in onramp responses when available.
  • bank_beneficiary_name / bank_beneficiary_address: Beneficiary details returned read-only in onramp responses when available.

FedNow ⚡️

  • Maximum $10,000,000 per onramp (this is the FedNow network limit)
  • 1st and 3rd party payins and payouts supported
  • FedNow operates 24/7/365 and settles in seconds
  • Payment tracking identifiers: FedNow onramps will include the following identifiers:
    • end_to_end_id: The end-to-end identifier assigned by the originator that travels with the payment across the FedNow network. Available across both the Transfers and Virtual Accounts APIs.
    • transaction_id: The unique transaction identifier assigned to the FedNow payment. Available across both the Transfers and Virtual Accounts APIs.
    • We may add more identifiers where helpful, as we roll out the program.
  • Originator details: FedNow onramps will include, if supplied:
    • sender_name: The name of the business or individual who initiated the transaction
    • sender_bank_routing_number: The routing number of the entity that initiated this transaction
  • How to identify whether a deposit arrived via FedNow? To identify which rail a payment was actually received on, use the payment_received_rail field on the Transfer source, or the payment_rail field on the Virtual Account source. For FedNow onramps, the payment_received_rail will be fednow.
Please note you must clearly disclose fee details applicable to FedNow transfers (e.g., FedNow send/receive fees) in a way that is clear, concise, and accessible to your end users.