Pull Funds via Wire
Pull funds from bank accounts directly into your account using the Wire network
A Wire pull transaction allows you to debit funds from an external bank account and credit them into your account within the system using the Wire network. Unlike ACH, Wire transfers offer faster settlement and are best suited for high-value, time-sensitive transactions between business accounts.
PCE supports multiple source types, allowing you to pull funds from pre-linked accounts or one-time bank accounts.
Wire pull transactions are processed as Wire Drawdowns—a reverse wire initiated by the recipient (you) to pull funds from the payer’s account with their authorization. This feature is available for Business Customers only.
Use Wire pull when you need to collect high-value or time-sensitive funds.
- High-Value Transfers: Move large amounts quickly between business accounts
- Time-Sensitive Payments: Urgent fund collection where faster settlement is required
- Account Funding: Add funds to your account from external bank accounts
- Business Collections: Pull payments from corporate customers
How it works
Processing a Wire pull transaction involves sending bank account details to the API and tracking the transaction lifecycle.
-
Make a POST request to
/v1/customer/id/{id}/transaction(orexternalId) API endpoint with required parameters:Parameter Required Description method✓ Set to WIREsource✓ Defines the bank account to be debited. Refer to the Source Types section below for supported options destination.account.id(orexternalId)✓ The account within the system to be credited amount✓ Amount to debit (in USD). Must be greater than zero purpose✓ Purpose of the transaction. Maximum 128 characters Source Types
Pull from a Linked External AccountUse when the bank account is already linked to Priority.
Parameter Required Description source.externalAccount.idorexternalId✓ Identifier of the linked external account Best for:
- Recurring collections
- Funding your own accounts
Pull from a One-Time Bank AccountUse when debiting a bank account that is not pre-linked.
Only available for Business Customers
Parameter Required Description accountNumber✓ Bank account number routingNumber✓ 9-digit routing number wireRoutingNumber✓ Wire-specific routing number holderName✓ Name of account holder type✓ SAVINGorCHECKINGholderType✓ CONSUMERorCORPORATE -
You can also pass, the
processingDetailobject 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.Parameter Required Description processingDetail.memoOptional Short descriptor for the transaction (max 40 characters) processingDetail.originatorSystem Generated Originating financial institution (auto-populated) processingDetail.payor.nameOptional Name of the payor (max 23 characters) processingDetail.payor.emailOptional Payor email address (max 80 characters) processingDetail.payor.phoneOptional Payor phone number (format: XXX-XXX-XXXX) processingDetail.payor.address.addressLine1Optional Address line 1 (max 35 characters) processingDetail.payor.address.addressLine2Optional Address line 2 (max 35 characters) processingDetail.payor.address.cityOptional City (max 25 characters) processingDetail.payor.address.stateOptional State (2–3 characters, e.g., TX, CAL) processingDetail.payor.address.zipOptional ZIP code (max 9 characters) processingDetail.payor.address.countryOptional Country (2-character code, e.g., US) Payor details are required only if payor validation is enabled at the Program Manager level. When provided, these details help identify the originating party and improve reconciliation.
-
Once the payment request is submitted, our system performs a series of system-level validations before sending the transaction to the card network. These validations check for:
- Missing or invalid required fields
- Incorrect parameter formats or values 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.
-
If all validations pass, the transaction is submitted for processing. You can track the outcome by:
- Retrieving the transaction via GET
/v1/customer/id/{id}/transaction/id/{id}(orexternalId) API endpoint - Subscribing to Transaction webhooks
Check the
statusfield to understand the current state of the transaction.
- Retrieving the transaction via GET
-
For every successfully created transaction, store:
id– Unique transaction identifierexternalId– Your reference identifier (if provided) These are required for tracking, reconciliation, and support.
Transaction Statuses
The table below describes the possible statuses of a Transaction wherein funds are pulled via ACH, and the reasons associated with each.
| Status | Description | Reason |
|---|---|---|
SCHEDULED | Default status on creation | ON_USER_REQUEST |
PENDING | Transaction is on hold due to account issues | Account or external account restrictions |
PROCESSING | Transaction is in progress | PROCESSING_IN_TRANSIT |
COMPLETED | Funds successfully credited to destination account | PROCESSED_BY_SYSTEM, Wire direct collect processed |
FAILED | Transaction failed or was rejected by bank | Return codes or processing failure |
CANCELLED | Cancelled upon request | User/system-triggered |
Best Practices
| Practice | Description |
|---|---|
| Obtain authorization before initiating | Ensure proper authorization from the account holder before initiating a Wire pull |
| Verify account and routing details | Double-check routing and wire details, as wire transactions are difficult to reverse |
| Use a meaningful purpose | Clearly define the purpose field for better tracking and reconciliation |
| Use memo for tracking | Populate processingDetail.memo with recognizable identifiers |
| Use webhooks | Subscribe to webhooks for real-time transaction updates |
| Test your integration | Validate all scenarios in sandbox before going live |
Updated 3 days ago