Pay via International WIRE

Pay external bank accounts using the Wire network

Pay via WIRE lets you send funds from a Passport Account to a bank account outside the Passport system through the WIRE network.

This payout method supports multiple destination types, depending on who you are paying. Use a pre-linked External Account when sending money to your own bank account outside the system, use a Contact when sending money to another person or business outside the system, or use a one-time destination when you do not want to save the recipient in advance.

Use Pay via WIRE when you need to send funds to a bank account in a cost-effective manner.

Common Use Cases:

  • Transfer funds from a Passport Account to your own external bank account
  • Pay vendors, suppliers, or service providers
  • Disburse payroll to employees
  • Pay saved Contacts

Prepare payout recipients

Before initiating an WIRE payout, decide how you want to provide the destination bank account.

  • Use External Accounts when sending funds to your own bank account outside the system and you want to save it for reuse.
  • Use Add Payees as Contacts when sending funds to another person’s or business’s bank account outside the system and you want to reuse their saved payee details later.
  • Use a one-time destination when you need to send funds to a bank account outside the system without saving it in advance.

This helps you choose the right destination type based on whether you are paying your own external account, a third-party recipient, or a one-time bank destination.


Create an WIRE payout

Processing an WIRE payout involves sending bank account details to the API and tracking the transaction lifecycle.

  1. Make a POST request to /v1/customer/id/{id}/transaction (or externalId) API endpoint with the required parameters:

    ParameterRequiredDescription
    methodSet to WIRE
    externalIdOptionalYour own reference ID for the transaction. Maximum 45 characters.
    typeOptionalType of transaction. Possible values: REGULAR.
    source.account.id (or externalId)The Passport Account to be debited
    destinationDefines the bank account to be credited. Refer to the Destination Types accordion below for supported options.
    amountAmount to send (in USD)
    purposePurpose of the transaction. Maximum 128 characters.
Destination Types

Pre-linked External Account

Use this option when you want to send money from a Passport Account to your own bank account outside the Passport system.

Pre-linked External Accounts are best for transfers to bank accounts that belong to you and are already saved within the system. If you have not added the destination bank account yet, first create it in External Accounts.

ParameterRequiredDescription
destination.externalAccount.id or externalIdIdentifier of the linked external account

Best for:

  • Transferring funds to your own external bank account
  • Reusing your previously linked bank account for repeat payouts

One-time destination

Use this option when sending money to a bank account outside the Passport system without saving it in advance.

This is useful when you need to make a one-off payout and do not want to first add the bank account as an External Account, or save the recipient as a Contact.

ParameterRequiredDescription
destination.externalAccount.holderNameName of the bank account holder as it appears on bank records
destination.externalAccount.accountNumberThe bank account number to be credited
destination.externalAccount.routingNumber9-digit routing number of the account
destination.externalAccount.typeType of bank account. Possible values: SAVING, CHECKING
destination.externalAccount.holderTypeType of account holder. Possible values: CONSUMER, CORPORATE

Best for:

  • One-off payments to new or unregistered recipients
  • Situations where you do not want to save the destination for future use

Payee added as Contact

Use this option when you want to send money from a Passport Account to another person’s or business’s bank account outside the Passport system.

Contacts are best for third-party recipients that you pay repeatedly, such as vendors, contractors, employees, or other external payees. If you have not created the recipient yet, first add them in Add Payees as Contacts.

ParameterRequiredDescription
destination.contact.id or externalIdUnique identifier of the Contact assigned by Passport
destination.contact.externalAccount.id or externalIdUnique identifier of the External Account linked to the Contact

Best for:

  • Paying another person or business outside the system
  • Reusing saved third-party payee details for repeat ACH payouts
  1. You can also pass the processingDetail object, which carries additional processing instructions for your transaction. While optional as a whole, certain fields within it may be required depending on your Program Manager configuration.

    ParameterRequiredDescription
    processingDetail.processingModeRecommendedProcessing mode for the transaction. Possible values: FORWARD (default) – Settles next business day (end-of-day batch); SAME_DAY – Settles same day if submitted before cutoff, else next business day.
    processingDetail.companyNameRecommendedThe payee name populated in the NACHA file. Defaults to Program Manager configuration if not provided. Maximum 16 characters.
    processingDetail.companyDescriptionRecommendedShort description shown on the recipient's bank statement. Common examples: PAYROLL, PURCHASE. Defaults to Program Manager configuration if not provided. Maximum 10 characters. Per NACHA rules (effective March 20, 2026), set to PAYROLL for PPD credit transactions for wages or salaries, and PURCHASE for WEB debit transactions authorized for online consumer purchases.
    processingDetail.authTypeConditionalAuthorization type for the transaction. Possible values: WRITTEN – Signed authorization; PHONE – Recorded call authorization; ONLINE – Digital or web authorization. Mandatory if no default is configured at the Program Manager level.
    processingDetail.addendaRecommendedAdditional reference data for reconciliation. Examples: Invoice number, customer reference ID, order ID. Maximum 80 characters.
    processingDetail.location.idUnique identifier of a location to be linked to the transaction, assigned by Passport.
  2. Once the request is submitted, our system performs a series of system-level validations before sending the transaction for processing. These validations check for:

    1. Missing or invalid required fields
    2. Incorrect parameter formats or values
    3. Program Manager configuration or permission issues

    If any validation fails, the request is rejected immediately and an error response is returned. You must correct the issue and resubmit the request. For a complete list of validation errors and how to resolve them, refer to the Error Codes & Messages section.

  3. If all validations pass, the transaction is submitted for processing. You can track the outcome by:

    1. Retrieving the transaction via GET /v1/customer/id/{id}/transaction/id/{id} (or externalId) API endpoint
    2. Subscribing to Transaction webhooks

    Check the status field to understand the current state of the transaction.

  4. For every successfully created transaction, store:

    1. id – Unique transaction identifier assigned by Passport
    2. externalId – Your reference identifier (if provided)

    These are required for tracking, reconciliation, and any follow-up actions such as cancellations.


Transaction Statuses

The table below describes the possible statuses of an WIRE Send transaction and the reasons associated with each.

StatusDescriptionReason
SCHEDULEDDefault status upon transaction creation.ON_USER_REQUEST
PENDINGTransaction is on hold as one or more processing conditions are not met. This may include inactive accounts, insufficient funds, or pending compliance checks.EXTERNAL_ACCOUNT_BLOCKED
EXTERNAL_ACCOUNT_INACTIVE
ACCOUNT_INACTIVE
ACCOUNT_BLOCKED
ACCOUNT_CLOSURE_INITIATED
ACCOUNT_CLOSED
CUSTOMER_SUSPENDED
OFAC_STATUS_NOT_VERIFIED
PROCESSINGTransaction has been picked up for processing and is in transit.PROCESSING_IN_TRANSIT
COMPLETEDFunds have been successfully credited to the destination account after settlement.PROCESSED_BY_SYSTEM
FAILEDTransaction could not be completed due to processing failure or bank return.EXTERNAL_ACCOUNT_BLOCKED
EXTERNAL_ACCOUNT_INACTIVE
INSUFFICIENT_FUNDS
OFAC_VERIFICATION_FAILED
<return-description> (<return-code>)
CANCELLEDTransaction was cancelled before processing was completed.ON_USER_REQUEST
INCORRECTLY_CREATED
OTHERS

Best Practices

PracticeDescription
Verify destination detailsFor one-time payments, ensure the account and routing numbers are accurate to avoid failures or misrouted funds.
Set meaningful NACHA descriptorsPopulate processingDetail.companyName and processingDetail.companyDescription for clear identification on the recipient’s bank statement.
Use webhooks for trackingSubscribe to transaction webhooks to receive real-time status updates without polling.
Test thoroughly in sandboxValidate all scenarios, including failures and returns, before going live.


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