Pay via International WIRE

Send USD and non-USD payouts to international bank accounts using the wire network.

Pay via International Wire lets you send funds from the system Account to a bank account in another country using the International Wire network.

This payout method supports both USD and non-USD international wires. International Wire payouts are commonly used for cross-border vendor payments, global supplier disbursements, and international account transfers.

Common Use Cases:

  • Transfer funds to your own international bank account
  • Pay international vendors, suppliers, or service providers
  • Send cross-border business disbursements
  • Pay saved Contacts with international account details
  • Send USD or non-USD payouts based on the destination account currency

Prepare payout recipients

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

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

For non-USD destinations, make sure you understand the country- and currency-specific requirements before creating the payout. Some destinations require additional routing information or dynamic fields.


Choose the currency path

Before creating the transaction, decide whether you are sending a USD International Wire or a non-USD International Wire. The currency path determines whether amountOriginType and an FX Quote are required.

Currency PathUse WhenRequired FieldsFX Quote Behavior
USD International WireThe destination account receives funds in USDcurrency = USDNot required
Non-USD International WireThe destination account receives funds in a supported non-USD currencycurrency, amountOriginTypeOptional if fetched manually; otherwise the system automatically fetches the applicable FX Quote

USD International Wires

Use this path when the destination international external account receives funds in USD.

For USD International Wires:

  • Set currency to USD
  • Do not provide amountOriginType

Non-USD International Wires

Use this path when the destination international external account receives funds in a supported non-USD currency. For non-USD International Wires:

  • Set currency to the supported destination currency
  • Provide amountOriginType
    • Use SOURCE when the amount represents the amount to be debited from the Passport Account
    • Use DESTINATION when the amount represents the amount to be credited to the destination international external account
  • Optionally provide processingDetail.fxQuote.id if you manually fetched an FX Quote before creating the transaction

For non-USD payouts, review Fetch FX Quote for non-USD International Wires before creating the transaction. FX Quotes are valid for 30 seconds. If you do not provide an FX Quote manually, the system automatically fetches the applicable FX Quote and returns the FX Quote ID in the retrieve transaction response.


Create an International Wire payout

Processing an International Wire payout involves providing source account details, destination international bank account details, currency information, and any required processing instructions.

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

    Parameter

    Required

    Description

    method

    Set to INTERNATIONAL_WIRE

    externalId

    Optional

    Your own reference ID for the transaction. Maximum 45 characters.

    type

    Optional

    Type of send. Possible values:

    • REGULAR

    source.account.id

    The system Account to be debited.

    destination

    Defines the international bank account to be credited. Refer to the Destination Types accordion below for supported options.

    amount

    Amount to send. Must be greater than zero.

    currency

    Currency supported for the transaction. Provide USD or a supported non-USD currency.

    The retrieve response shows the currency in which the system Account is debited; currently, this is USD.

    amountOriginType

    Conditional

    Required for non-USD International Wire transactions. Possible values:

    • SOURCE — amount to be debited from the system Account;
    • DESTINATION — amount to be credited to the destination international external account.

    purpose

    Purpose of the transaction. Maximum 128 characters.

    linkedDocument

    Optional

    Authorization or supporting documents linked to the transaction.


Destination Types

Send to a pre-linked International External Account

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

Pre-linked International External Accounts are best for transfers to customer-owned bank accounts that are already saved in Passport. If you have not added the destination bank account yet, first create it in International External Accounts.

ParameterRequiredDescription
destination.internationalExternalAccount.idUnique identifier of the International External Account assigned by Passport

Best for:

  • Transferring funds to your own international bank account
  • Reusing a previously saved international destination
  • Sending repeat USD or non-USD international payouts

Send to a one-time international destination

Use this option when sending money to an international bank account without saving it in advance.

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

ParameterRequiredDescription
destination.internationalExternalAccount.holderNameName of the bank account holder as it appears on bank records. Maximum 60 characters.
destination.internationalExternalAccount.holderAddressAddress details of the account holder. PO Box addresses are not allowed.
destination.internationalExternalAccount.holderAddress.addressLine1Address line 1. Range: 4 to 40 characters.
destination.internationalExternalAccount.holderAddress.addressLine2OptionalAddress line 2. Maximum 30 characters.
destination.internationalExternalAccount.holderAddress.cityCity. Maximum 45 characters.
destination.internationalExternalAccount.holderAddress.stateTwo-character state or region code.
destination.internationalExternalAccount.holderAddress.countryTwo-character country code, for example US.
destination.internationalExternalAccount.accountNumberBank account number.
destination.internationalExternalAccount.swiftCodeConditionalSWIFT code for the destination bank. Use the POST /v1/customer/id/{id}/internationalExternalAccount/validateRoutingCode (or externalId) API to validate the SWIFT code before submitting the account details.
destination.internationalExternalAccount.internationalRoutingCodeConditionalInternational routing code required for certain countries. Use the POST /v1/customer/id/{id}/internationalExternalAccount/validateRoutingCode (or externalId) API to validate the Routing code before submitting the account details.
destination.internationalExternalAccount.typeOptionalType of account.
destination.internationalExternalAccount.holderTypeOptionalHolder type. Possible values: CONSUMER, CORPORATE.

For non-USD destinations, also review the Additional Details for Non-USD Accounts section to understand metadata-driven country and currency requirements.

Best for:

  • One-off international payouts
  • Paying an international destination without saving it for future use
  • Sending to a recipient where all destination details are collected at transaction time

Send to a Contact

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

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

ParameterRequiredDescription
destination.contact.idUnique identifier of the Contact assigned by Passport
destination.contact.internationalExternalAccount.idUnique identifier of the International External Account linked to the Contact

Best for:

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

    ParameterRequiredDescription
    processingDetail.fxQuote.idOptionalSystem generated unique identifier of the FX Quote, this is used for non-USD International Wire transactions.
    processingDetail.originatorOptionalOriginator of the transaction.
    processingDetail.memoOptionalAdditional details to be passed with the International Wire transaction. Maximum 40 characters.
    processingDetail.payorConditionalPayor details. Supported when Payor detail validation is configured for the Program Manager.
    processingDetail.wireReferenceSystem-generatedReference assigned by the underlying financial institution. Returned in retrieve responses when available.
    processingDetail.networkReferenceSystem-generatedUnique identifier used to capture the network reference number. Returned in retrieve responses when available.
  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. Source account status and available funds
    4. Destination International External Account status
    5. OFAC and CIP verification requirements for involved entities
    6. SWIFT code validity for one-time international destinations
    7. FX Quote validity for non-USD transactions

    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
    3. processingDetail.fxQuote.id – FX Quote identifier for non-USD transactions, if returned

    These are required for tracking, reconciliation, and follow-up actions.


Fetch FX Quote for non-USD International Wires

For non-USD International Wire payouts, you can fetch a Foreign Exchange (FX) Quote to determine the exchange rate, converted amount, and applicable fee before creating the transaction.

The FX rate is fetched from a third-party provider and may vary based on the destination currency, amount, and the time at which the quote is generated.

FX Quotes are valid for 30 seconds. If the quote expires before the International Wire transaction is created, the system returns an error and you must generate a new quote.

When to Use an FX Quote

Use an FX Quote when you want to:

  • Confirm the exchange rate before creating a non-USD International Wire
  • Calculate how much will be credited to the destination international external account
  • Calculate how much will be debited from the source Passport Account
  • Store the FX Quote ID for reconciliation and transaction tracking

If you do not provide an FX Quote manually, the system automatically fetches the applicable FX Quote and returns the FX Quote ID in the retrieve transaction response.

Create an FX Quote

Use the POST /v1/transaction/fxQuote API to create an FX Quote.

You can create an FX Quote in either of the following ways:

Quote TypeUse WhenRequired Details
Destination amount and currencyYou know how much the recipient should receivedestination.amount, destination.currency
Source amount and destination currencyYou know how much should be debited from the source accountsource.amount, destination.currency

The FX Quote response includes the calculated source and destination amounts, rate, fee, expiry, and status:

FieldDescription
urlSystem-generated endpoint that can be used to fetch the FX Quote.
idUnique FX Quote identifier assigned by Passport.
destination.amountAmount to be credited to the destination international external account.
destination.currencyDestination currency for which the FX rate is fetched.
source.amountAmount to be debited from the source Passport Account.
source.currencyCurrency in which the source amount is debited. Currently, this is always USD.
fxRateExchange rate fetched by the system.
feeFee charged by the system.
fxQuoteExpiryDate and time when the FX Quote expires. FX Quotes are valid for 30 seconds.

FX Quote Statuses

StatusDescription
GENERATEDDefault status when the FX Quote is created.
ACCEPTEDAssigned after a transaction is created using the FX Quote.

Use an FX Quote in an International Wire

To use a manually generated FX Quote, pass the FX Quote ID in the transaction request:

ParameterRequiredDescription
processingDetail.fxQuote.idOptionalPassport-generated FX Quote identifier used for the non-USD International Wire transaction.

Retrieve an FX Quote

Use the GET /v1/transaction/fxQuote/id/{id} API to retrieve an FX Quote by its identifier.

You can use the retrieve response to confirm:

  • source amount and currency
  • destination amount and currency
  • exchange rate
  • fee
  • quote expiry
  • quote status

Store processingDetail.fxQuote.id when it is returned on the transaction. It helps support reconciliation, troubleshooting, and transaction audits for non-USD International Wire payouts.


Transaction Statuses

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

StatusDescriptionReason
SCHEDULEDDefault status on creation.ON_USER_REQUEST
PENDINGTransaction is on hold because one or more processing conditions have not been met. Source account must be ACTIVE and have sufficient funds, destination must be ACTIVE, and all required entities must be OFAC and CIP verified.ACCOUNT_INACTIVE, ACCOUNT_BLOCKED, ACCOUNT_CLOSURE_INITIATED, ACCOUNT_CLOSED, CUSTOMER_SUSPENDED, OFAC_STATUS_NOT_VERIFIED
PROCESSINGTransaction has been picked up for processing.PROCESSING_IN_TRANSIT
COMPLETEDTransaction completed successfully after processing.PROCESSED_BY_SYSTEM
FAILEDTransaction could not be completed due to processing failure, compliance issue, account issue, return, or other processing error.INSUFFICIENT_FUNDS, OFAC_VERIFICATION_FAILED, <return-description> (<return-code>)
CANCELLEDTransaction was cancelled upon user request.ON_USER_REQUEST, INCORRECTLY_CREATED, OTHERS

Best Practices

PracticeDescription
Use the right destination typeUse International External Accounts for your own international bank accounts, Contacts for third-party recipients, and one-time destinations for unsaved recipients.
Validate SWIFT details earlyA valid SWIFT code is required. Validate it before creating one-time destinations or International External Accounts.
Use metadata for non-USD destinationsNon-USD destinations may require country- and currency-specific fields. Retrieve metadata before creating the destination.
Handle FX Quote timing carefullyFX Quotes are valid for 30 seconds. Regenerate the quote if it expires before transaction creation.
Provide clear purpose and memo valuesPurpose and memo details support compliance, processing, and reconciliation.
Monitor transaction statusesTrack International Wire payouts using the retrieve transaction API or transaction webhooks.
Store transaction and FX identifiersStore the transaction id, your externalId, and FX Quote ID for reconciliation and follow-up operations.
Test USD and non-USD flows separatelyValidate both currency paths in sandbox before going live.

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