Transfer funds

Move money between a Passport Account and an external bank account you own — fund it from your own bank, or sweep funds out to it.

This is a transfer of your own money, not a payment to or collection from someone else. If you're paying a third party, see Pay via ACH; if you're collecting from a customer, see Collect via ACH. For the ACH field reference, both directions use the transaction API on those pages.

Common use cases

  • Fund a Passport Account from your own external bank account
  • Sweep balances from a Passport Account to your operating account
  • Move balances to an account you hold at another bank
  • Fund or withdraw on a schedule

Choose how to move the money

You can move your own funds over different rails. Pick based on how fast you need it and how much it costs.

RailBest forSpeedNotes
ACHRoutine, cost-effective transfersNext business day, or same day before cutoffLowest cost. Most funding and sweeps use this.
Domestic wireTime-sensitive or higher-value transfersSame dayHigher cost; settles faster and is final.
International wireMoving funds to or from your account abroadVaries by destinationUse when the other account is outside the US.
BOOKBetween two of your own Passport AccountsInstantInternal; no external rail. See below.

How a transfer works

Both directions follow the transaction lifecycle — submit, validate, process, settle. The only difference is which side is your Passport Account and which is your external bank.

Before you begin

  • The external bank account is linked and saved — see External Accounts.
  • For a sweep out, the Passport Account has enough balance to cover the amount.
📘

Use externalId for safe retries

For Treasury, PCE treats the externalId in the request body as the idempotency key — there's no separate header. Send a unique externalId per transfer; retrying with the same value creates it only once.


Fund from your own bank (ACH)

Pull money from your own external bank account into your Passport Account. The source is your linked External Account; the destination is the Passport Account.

POST /v1/customer/id/{id}/transaction

{
  "externalId": "transfer-fund-ach-8a12",
  "method": "ACH",
  "amount": "2500.00",
  "source": { "externalAccount": { "externalId": "own-bank-001" } },
  "destination": { "account": { "externalId": "passport-account-001" } },
  "processingDetail": { "processingMode": "SAME_DAY" }
}

Funds credit to your Passport Account after the good-funds period (see transaction lifecycle). This uses the same debit mechanics as Collect via ACH — see its Request reference for all fields.


Sweep to your own bank (ACH)

Send money from your Passport Account out to your own external bank account. The source is the Passport Account; the destination is your linked External Account.

POST /v1/customer/id/{id}/transaction

{
  "externalId": "transfer-sweep-ach-7f3a",
  "method": "ACH",
  "amount": "2500.00",
  "source": { "account": { "externalId": "passport-account-001" } },
  "destination": { "externalAccount": { "externalId": "own-bank-001" } },
  "processingDetail": { "processingMode": "SAME_DAY" }
}

This uses the same payout mechanics as Pay via ACH — see its Request reference for all fields. For statuses and tracking, see transaction lifecycle.

📘

Settlement timing

processingMode: FORWARD settles the next business day. SAME_DAY settles the same day if submitted before cutoff, otherwise the next business day.


Move by wire

When you need funds to move the same day, use a wire. The request shape and full field reference live on the wire pages:

The account you own is the same linked External Account; only the method and rail-specific fields change.


Move between your own Passport Accounts (BOOK)

To move funds between two of your own Passport Accounts, use a BOOK transfer — it's internal to the system, instant, and uses no external rail. Both source and destination are Passport Accounts.

POST /v1/customer/id/{id}/transaction

{
  "externalId": "transfer-book-3c90",
  "method": "BOOK",
  "type": "REGULAR",
  "amount": "500.00",
  "purpose": "Internal Transfer",
  "source": { "account": { "id": "source-account-001" } },
  "destination": { "account": { "id": "destination-account-001" } }
}

A BOOK transfer completes instantly — SCHEDULED straight to COMPLETED, with no good-funds hold. For the full BOOK field list, see Pay via BOOK.

📘

Paying someone else who has a Passport Account?

That's a payment to a third party, not a transfer of your own money — see Pay via BOOK.


Best practices

PracticeDescription
Set a unique externalIdFor Treasury, PCE uses the request-body externalId as the idempotency key, so retrying with the same value never creates a duplicate transfer.
Pick the rail by needUse ACH for routine funding and sweeps; reach for a wire only when same-day or finality justifies the cost.
Confirm the linked account onceVerify the external account is correct when you link it, so every transfer afterward is safe to automate.
Use webhooks for trackingSubscribe to transaction webhooks for real-time status updates instead of polling.
Test in sandboxValidate both directions, including failures and returns, before going live.

Next steps

See also

.readme-logo { display: none !important; }