Collect via Wire

Collect high-value payments quickly and reliably via Wire Drawdown.

A Collect via Wire transaction allows you to pull funds from an external bank account into a Passport account using the Wire network. Unlike other payment methods, Wire transfers offer faster settlement and are best suited for high-value, time-sensitive transactions between business accounts.

Passport supports two source types for Wire Collect transactions:

  • External Account (Own Account): Pull funds from a pre-linked external bank account into a Passport account.
  • One-Time: Pull funds from a third-party bank account by providing the account details directly at the time of the transaction.

Wire Collect transactions are processed as Wire Drawdowns — a reverse wire initiated by the fund recipient rather than the sender. This means the recipient (you) pulls funds from the payer's account with their authorization, rather than the payer pushing funds to you. Wire Drawdowns are available to Business Customers only.


How it Works

Step 1: Initiate the Collect Transaction

To create a Collect via Wire, make a POST request to the /v1/customer/id/{id}/transaction endpoint with the required parameters. The source object in your request determines which Wire Collect type is being initiated.

ParameterRequiredDescription
methodSet to WIRE for Wire transactions.
sourceThe account to be debited. Structure varies based on collect type. See source types below.
destination.account.idThe Passport Account where funds will be credited.
amountAmount to collect, in USD. Must be greater than zero.
purposePurpose of the transaction. All characters are allowed. Maximum 128 characters.

Source Types

Passport supports the following source types for Wire Collect transactions. Select the one that matches where the funds are being pulled from.

  1. Collect from External Account (Own Account): Use this when pulling funds from a bank account that has already been linked to Passport as an External Account. Only Business Customers with a CORPORATE account holder type are supported for Wire Collect. Pass the pre-linked External Account identifier in the source object:

    ParameterRequiredDescription
    source.externalAccount.idUnique identifier of the External Account assigned by Passport.
    destination.externalAccount.idUnique identifier of your Passport account where funds will be credited.
  2. Collect from a One-Time Source: Use this when pulling funds from a third-party bank account that is not pre-linked to Passport. The account details are provided directly in the transaction request. Only Business Customers can initiate a One-Time Wire Collect. Pass the account details directly in the source object:

    ParameterRequiredDescription
    source.externalAccount.accountNumberThe bank account number to be debited.
    source.externalAccount.routingNumberThe 9-digit ABA routing number of the account.
    source.externalAccount.wireRoutingNumberThe wire-specific routing number of the account.
    source.externalAccount.holderNameName of the bank account holder as it appears on bank records.
    source.externalAccount.holderTypeType of account holder. Possible values: CONSUMER, CORPORATE.
    source.externalAccount.typeType of bank account. Possible values: SAVING, CHECKING.

Processing Details

The processingDetail object carries additional processing instructions for your Wire Collect transaction. While optional as a whole, certain fields within it may be required depending on your Program Manager configuration.

More reference for processingDetail
ParameterRequiredDescription
'processingDetail.memo'NoAdditional details to be passed with the Wire transaction. Appears in transaction records and aids in tracking and reconciliation. Maximum 40 characters.
processingDetail.originatorNoOriginator of the transaction.
underlying financial institution. This is a system-generated field and cannot be set by the user.
processingDetail.payor.nameNoName of the payor. Maximum 23 characters.
processingDetail.payor.emailNoPayor's email address. Format: [email protected]. Maximum 80 characters.
processingDetail.payor.phoneNoPayor's phone number. Supported format: XXX-XXX-XXXX.
processingDetail.payor.address.addressLine1NoPayor's address line 1. Maximum 35 characters.
processingDetail.payor.address.addressLine2NoPayor's address line 2. Maximum 35 characters.
processingDetail.payor.address.cityNoPayor's city. Maximum 25 characters.
processingDetail.payor.address.stateNoPayor's state. Supports 2 or 3 characters, for example TX or CAL.
processingDetail.payor.address.zipNoPayor's zip code. Maximum 9 characters.
processingDetail.payor.address.countryNoPayor's country. 2-character country code only, for example US.

Note on payor: Payor details are only required if your Program Manager configuration has payor validation enabled. When provided, these details are included in the Wire instruction and help identify the originating party in the transaction record.


Step 2: Check the Outcome

For every successfully created Collect transaction, store the id/ externalId - The unique Transaction ID assigned by Passport or your own reference ID, if provided at the time of creation. Once the transaction is submitted, our system performs a series of validations before processing the request. 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.

If all validations pass, the transaction is submitted for processing. You can determine the outcome by retrieving the transaction via GET /v1/customer/id/{id}/transaction/id/{id} or by subscribing to the Transaction webhook. Check the status field in the response to understand the current state of the transaction.


Transaction Statuses

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

StatusDescriptionReason
SCHEDULEDDefault status on creation.ON_USER_REQUEST
PENDINGTransaction is on hold due to an inactive or blocked source or destination account.EXTERNAL_ACCOUNT_BLOCKED, EXTERNAL_ACCOUNT_INACTIVE, ACCOUNT_INACTIVE, ACCOUNT_BLOCKED, ACCOUNT_CLOSURE_INITIATED, ACCOUNT_CLOSED, CUSTOMER_SUSPENDED
PROCESSINGTransaction has been picked up for processing.PROCESSING_IN_TRANSIT
COMPLETEDFunds have been successfully credited to the destination account.PROCESSED_BY_SYSTEM, Wire direct collect processed
FAILEDTransaction could not be processed, or was rejected by the receiving bank.Collect processing interval lapsed, <return-description> (<return-code>)
CANCELLEDTransaction was cancelled upon user request.ON_CUSTOMER_REQUEST, INCORRECTLY_CREATED, OTHERS

Best Practices

PracticeDescription
Obtain Authorization Before InitiatingWire Collect transactions are initiated on behalf of the payer. Ensure you have proper authorization from the account holder before pulling funds.
Verify Account DetailsFor One-Time Collects, verify the account and wire routing numbers carefully before submitting. Wire transactions are difficult to reverse once processed.
Use a Meaningful PurposeAlways populate the purpose field clearly. This helps with reconciliation and provides a clear record of why funds were collected.
Use the Memo FieldPopulate processingDetail.memo with a recognizable descriptor. This appears in transaction records and aids in tracking.
Use WebhooksSubscribe to transaction webhooks to stay informed about transaction outcomes asynchronously, without polling.
Test Your IntegrationUse Passport's sandbox environment to test all collect scenarios, including failures, before going live.

See Also


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