Pay
Alternative Payments
Digital Wires

Digital Wire Payments

Accept digital wires with same-day settlement for high-value transactions


Digital wire payments enable you to accept large-value payments with accelerated settlement through intelligent posting windows and instant funding. Unlike standard bank transfer payments that settle in 1-3 business days, digital wires with clearing_timing: 'same_day' and funding_timing: 'rapid' provide same-day posting and instant settlement, making funds available within hours of initiation. This is ideal for high-value B2B transactions, real estate payments, and time-sensitive business operations.

Prerequisites

Before accepting digital wires, ensure your account is configured for rapid funding.


When to Use Digital Wires


Digital wires are ideal for high-value transactions requiring expedited settlement and enhanced security.

Benefits of Digital Wires

  • Irrevocability: If approved for Payload Protect, once sent, typically transfers cannot be reversed or cancelled, providing payment certainty
  • Time-Sensitive Transactions: Ideal for urgent payments requiring immediate processing and guaranteed completion
  • Improved Cash Flow: Access funds hours after transaction instead of days

Common use cases

  • Real Estate Transactions: Down payments, closing costs, and property purchases
  • Large B2B Payments: Supplier payments, equipment purchases, bulk orders
  • Professional Services: Legal settlements, consulting engagements, retainers
  • Investment Transactions: Securities purchases, fund transfers
  • Construction Projects: Project deposits, milestone payments, contractor fees

How Digital Wires Work


Digital wire processing combines traditional wire reliability with modern API convenience and intelligent posting windows and automated funding.

Key Transaction Fields

Two fields control digital wire timing and settlement:

  • clearing_timing: Controls when the transaction clears with the bank (same_day or next_day)
  • funding_timing: Controls settlement speed to your merchant account (rapid for instant funding, standard for 1-3 days)

For same-day digital wires with instant funding, use:

{
  "clearing_timing": "same_day",
  "funding_timing": "rapid"
}

Intelligent Posting Windows

Payload automatically schedules transactions to posting windows throughout the day. When you create a transaction with clearing_timing: "same_day", we determine the next available posting window based on the current time (Eastern Time):

Transaction CreatedPosts to Bank
12:00 AM - 7:00 AM8:00 AM
7:00 AM - 9:00 AM10:00 AM
9:00 AM - 12:00 PM1:00 PM
12:00 PM - 1:00 PM3:00 PM
1:00 PM - 2:00 PM5:00 PM
2:00 PM - 12:00 AMNext business day 8:00 AM (automatically switches to next_day)

Automated Instant Funding

When you set funding_timing: "rapid", Payload automatically triggers instant funding one minute after each posting window closes. This means funds are available in your account within minutes of the transaction posting to the bank.

Digital Wire Implementation


Accept digital wire payments using Payment Form with Plaid or direct API integration.

Digital Wires with Payment Form

Use Plaid with the Payment Form SDK to enable instant bank verification and digital wire payments. Plaid allows customers to securely connect their bank account and initiate digital wire transfers with same-day posting and instant funding.

import payload
pl = payload.Session('secret_key_3bW9...', api_version='v2')
 
# Create payment form intent for digital wire with Plaid
intent = pl.Intent.create(
    type='payment_form',
    payment_form={
        'payment_template': {
            'amount': 50000.00,
            'clearing_timing': 'same_day',
            'funding_timing': 'rapid',
            'description': 'Real estate closing - 123 Main Street',
            'order_number': 'WIRE-2024-001',
            'receiver': {
                'account_id': 'acct_merchant123'
            }
        }
    }
)
 
# Send the token to your frontend
token = intent.token
<!DOCTYPE html>
<html>
<head>
  <script src="https://payload.com/Payload.js"></script>
</head>
<body>
  <form id="payment-form" pl-form="payment">
    <h2>Digital Wire Payment via Plaid</h2>
 
    <input type="hidden" pl-input="amount" value="50000" />
    <p><strong>Amount:</strong> $50,000.00</p>
    <p><strong>Settlement:</strong> Same-day posting with instant funding</p>
 
    <label>Account Holder Name</label>
    <input type="text" pl-input="account_holder" required />
 
    <button type="button" id="plaid-button">
      Pay with Bank Account via Plaid
    </button>
  </form>
 
  <script src="plaid.js"></script>
</body>
</html>
// Fetch client token from your server
fetch('/payment-form-intent', { method: 'POST' })
  .then(res => res.json())
  .then(data => {
    // Initialize Payload with the client token
    Payload(data.token)
 
    // Initialize the payment form
    const form = new Payload.Form(document.getElementById('payment-form'))
 
    // Get the Plaid button element
    const plaidButton = document.getElementById('plaid-button')
 
    // Activate Plaid on the button
    form.plaid(plaidButton)
 
    // Handle successful payment authorization
    form.on('authorized', (evt) => {
      console.log('Digital wire authorized:', evt.transaction_id)
    })
 
    // Handle instant funding completion
    form.on('processed', (evt) => {
      console.log('Digital wire processed with instant funding:', evt.transaction_id)
      window.location.href = `/payment/success?txn=${evt.transaction_id}`
    })
 
    // Handle declined payment
    form.on('declined', (evt) => {
      console.error('Payment declined:', evt.message)
      alert('Digital wire declined. Please try a different bank account.')
    })
 
    // Handle errors
    form.on('error', (evt) => {
      console.error('Error:', evt.message)
      alert('Digital wire failed: ' + evt.message)
    })
  })

Backend (Step 1): Create a payment form intent with digital wire settings:

  • payment_template.clearing_timing: 'same_day' for same-day bank posting
  • payment_template.funding_timing: 'rapid' for instant funding after posting
  • Amount, description, and receiver configuration
  • Returns a token for frontend initialization

Frontend (Step 2): Initialize Plaid payment form:

  • Load the Payload.js SDK
  • Fetch the client token from your backend
  • Initialize the payment form and activate Plaid on a button
  • Handle payment authorization and instant funding events
  • The .plaid() method opens Plaid's Link interface for secure bank login

Digital Wires with API

Process digital wire payments directly via API with same-day posting and instant funding.

import payload
pl = payload.Session('secret_key_3bW9...', api_version='v2')
 
# Process wire transfer payment via API
transaction = pl.Transaction.create(
    type='payment',
    amount=50000.00,
    clearing_timing='same_day',  # Posts to bank at next posting window
    funding_timing='rapid',      # Instant funding after posting
    description='Real estate closing - 123 Main Street',
    order_number='WIRE-2024-001',
    sender={
        'method_id': 'pm_bank_account_456'
    },
    receiver={
        'account_id': 'acct_merchant123'
    }
)
 
print(f"Transaction ID: {transaction.id}")
print(f"Status: {transaction.status}")
print(f"Amount: ${transaction.amount}")
print("Settlement: Same business day if submitted before 3:00 PM ET")

This example shows API-based wire processing:

  1. Transaction Type: Set type: 'payment' for immediate payment
  2. Clearing Timing: Set clearing_timing: 'same_day' to post at next available window
  3. Funding Timing: Set funding_timing: 'rapid' for instant funding after posting
  4. Amount: Specify digital wire amount
  5. Payment Method: Reference customer's bank account payment method
  6. Description: Provide payment purpose for records

Key configuration:

{
  "clearing_timing": "same_day",
  "funding_timing": "rapid"
}

Without these settings, the payment follows standard settlement (1-3 days).

Best Practices


Follow these best practices for reliable digital wire processing.

Operational Excellence

  • Cutoff Awareness: Know daily cutoff times for same-day settlement
  • Batch Planning: Process morning batches to ensure same-day settlement
  • Reconciliation: Match received payments with authorized transactions

Risk Management

  • Amount Limits: Set maximum payment amounts based on risk tolerance
  • Enhanced Due Diligence: Additional verification for large payments
  • Real-Time Monitoring: Watch for incoming payments throughout the day

Troubleshooting


Common issues and solutions when processing digital wires.

Instant Funding Not Applied

Symptoms: Settlement slower than expected despite rapid settings.

Solutions:

  • Verify both clearing_timing: 'same_day' and funding_timing: 'rapid' were set
  • Check if transaction was created after 2:00 PM ET (automatically switches to next_day)
  • Review the assigned posting window time
  • Confirm account has instant funding enabled
  • Review transaction status for any holds
  • Verify posting window has passed
  • Contact Payload support if instant funding should have applied

Bank Not Supported by Plaid

Symptoms: Customer's bank doesn't appear in Plaid or connection fails.

Solutions:

  • Inform customer that digital wire payments require Plaid and their bank is not supported
  • Direct customers to use a different bank account that is supported by Plaid
  • Offer alternative payment methods such as standard bank transfers, check payments, or card payments
  • Check Plaid's bank coverage list to confirm if the bank should be supported
  • Inform customers that Plaid supports most major US banks but not all financial institutions
  • If customer needs same-day settlement, they may need to open an account at a Plaid-supported bank

Schema Reference


The following fields are available when creating digital wire transactions. For complete API reference, see Transactions API Reference.

Digital Wire Configuration

type
enum[string]Immutable
The type of transaction being processed. This determines the direction and nature of funds movement, such as payment collection, refund issuance, credit disbursement, or account funding operations.
Values: payment, deposit, withdraw, refund, payout
clearing_timing
enum[string]Immutable
The clearing speed for this transaction, determining how quickly funds are made available to the recipient. Instant clearing makes funds available immediately, same_day within the same business day, and next_day by the following business day. Defaults to next_day if not specified. Same-day and instant are only available in certain circumstances.
Values: instant, same_day, next_day
funding_timing
enum[string]Immutable
The funding speed for this transaction, determining how quickly the merchant or processing account receives settlement of funds. Standard timing follows normal settlement schedules, while rapid timing accelerates the funding process for faster access to funds. Defaults to standard if not specified. Rapid and instant funding only available in certain circumstances.
Values: standard, instant, rapid
amount
number (double)
The monetary amount for this transaction in the currency of the processing account. This value is always positive and represents the total value being transferred, collected, or refunded. The amount is rounded to two decimal places for display.
description
string
A human-readable description of what this transaction is for. This text provides context about the purchase, service, or payment purpose and may be displayed to customers on receipts and in transaction histories.
Max length: 128
receiver
object
Information about the receiver party in this transaction, including the account and payment method to which funds are being sent or credited. For payment transactions, this is the processing account receiving funds. For payout transactions, this is the account receiving funds.
accountAccount
object
The expanded account object for the receiver. When included, this provides the full details of the account receiving funds in this transaction.
Visibility: explicit
account_id ID of Account
stringImmutable
The unique identifier of the account receiving funds for this transaction. This is an optional field that references the account object that owns the receiver payment method. (ID prefix: acct)
Pattern: ^acct_[A-Za-z0-9]+$
object
The expanded payment method object used by the receiver. When included, this provides the full details of the payment method to which funds are being credited.
method_id ID of PaymentMethod
stringImmutable
The unique identifier of the payment method used by the receiver. This references the payment method object to which funds are being sent or credited for this transaction. If not provided the account default will be used. (ID prefix: pm)
Pattern: ^pm_[A-Za-z0-9]+$
notes
string
Internal notes or comments about this transaction. This field is for record-keeping purposes and can contain any additional information that may be useful for reference, customer service, or accounting purposes.
Max length: 2048
order_number
string
Custom order or transaction number for this payment. Use this to link the payment to an order in your system or to provide a customer-facing transaction reference. Providing this value ensures duplicate protection is applied per order; .otherwise, duplicate protection applies across payments without an order reference. For check transactions this field contains the check number.
Max length: 64

Next Steps

Enhance your digital wire payment implementation


Monitor Posting Windows

Track transaction status to monitor posting window assignments and instant funding timing for accurate cash flow planning.

Automate with Webhooks

Subscribe to webhook notifications to receive real-time updates for posting window events, instant funding completion, and settlement confirmations.

Configure Funding Settings

Review funding timing options to optimize settlement speed and choose between rapid instant funding and standard settlement schedules.


Related articles