Skip to main content

🇺🇸 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 a New York, Pennsylvania, 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"
}

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 Details

  • 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 (coming soon )

We will add more details here as we get closer to launching FedNow onramps!
  • Maximum $500,000 per transaction (FedNow limit)
  • 1st and 3rd party payins and payouts supported
  • FedNow operates 24/7/365 and settles in seconds
  • To distinguish whether a deposit arrived on FedNow, the source.payment_rail in the API will be fednow.