What is a virtual account event?
Whenever a deposit is received, Bridge generates aVirtualAccountEvent with a unique id. You can:
- Fetch historical events using the Virtual Account Activity API.
- Receive real-time webhook notifications when:
- A new deposit is received.
- The status of an event changes (e.g. funds delivered, refund issued).
VirtualAccountEvent includes detailed information about the deposit, source, status, and destination.
Event Types
Below are the different types of virtual account events you may receive. You can identify the type of each event by checking thetype field in the virtual account event object.
| Type | Description |
|---|---|
funds_received | Bridge received funds via ACH or wire. |
payment_submitted | Bridge submitted the crypto payment. |
payment_processed | Payment confirmed on-chain. Final state. |
funds_scheduled | (ACH only) Incoming funds are in transit with estimated arrival date. |
in_review | Transaction is under manual review. |
refunded | Funds could not be delivered and were refunded to the sender. |
account_update | Virtual Account was updated (e.g. new destination address). |
deactivation | Virtual Account was deactivated. |
reactivation | Virtual Account was reactivated. |
microdeposit | Microdeposit verification detected. Funds are never onramped. |
Event Breakdown
Funds received
Funds received
Information about a fiat deposit received. The Example: Faster Payments DepositExample: SEPA DepositExample: Wire Deposit
funds_received event amount always matches the full amount that the customer sent before any fees are deducted. We also provide any source information we have about the sender of a deposit.payment_rail- The payment rail on which the deposit was received:ach_push,wire,sepa,faster_payments,spei, orpix. Different information is available for each payment rail type.
ach_push) include these fields:description- Sender-related information set by the sending bank according to NACHA ACH file specificationssender_bank_routing_number- The routing number of the entity that initiated this ACH transactionsender_name- The name of the business or individual who initiated the ACHtrace_number- A unique 15-digit number for tracking and reconciling transactions
bank_routing_number- The routing number of the bank which sent this wirebank_name- The name of the bank which sent this wirebank_beneficiary_name- The beneficiary name of this wirebank_beneficiary_address- The beneficiary address of this wireoriginator_name- The originator name of this wireoriginator_address- The originator address of this wireimad- A unique FedWire payment identifier for investigation and trackingwire_message- The memo for this wire
reference- Payment reference message for reconciliationiban- The International Bank Account Number of the senderiban_last_4- Last 4 digits of the sender’s IBANbic- The Bank Identifier Code of the sender’s banksender_name- The name of the individual or business who initiated the paymentrecipient_name- The name of the payment recipientuetr- Unique End-to-End Transaction Reference for trackingpayment_scheme- The specific payment scheme used (e.g.,sepa_credit,sepa_instant)
reference- Payment reference message for reconciliationaccount_number- The UK bank account number of the sendersort_code- The six-digit sort code of the sender’s banklast_4- Last 4 digits of the sender’s account numbersender_name- The name of the individual or business who initiated the paymentrecipient_name- The name of the payment recipientuetr- Unique End-to-End Transaction Reference for tracking
description- Transaction description from the senderreference- Payment reference for reconciliationclabe- The sender’s CLABE (Mexican bank account identifier)tracking_number- Unique identifier for tracking the transaction (clave de rastreo)sender_name- The name of the sender
description- Transaction description from the senderreference- Payment reference for reconciliationtracking_number- Unique identifier for tracking the transactionsender_name- The name of the sender
Payment submitted
Payment submitted
Information about any funds sent on chain using the deposit instructions. This event is created when the funds are sent on chain. The
payment_submitted event amount is the funds sent to the destination after all fees are taken out and includes a breakdown of the amount of each fee. Some information such as destination_tx_hash may not be available immediately after the event is created but will be populated later when the transaction is confirmed on chain.For convenience, the source deposit information is included in this event as well if available.Payment processed
Payment processed
Information about any funds sent on chain using the deposit instructions. This event is created when the funds are confirmed on chain. The
payment_processed event amount is the funds sent to the destination after all fees are taken out and includes a breakdown of the amount of each fee. Thedestination_tx_hashwill always be populated for these events. This is final event in the onramp payment lifecycle and the best event to determine when a payment is fully complete.For convenience, the source deposit information is included in this event as well if available.Funds scheduled
Funds scheduled
The events provides a notification that incoming funds are processing through the ACH system and an estimated arrival date for the credit. These events only occur for funds sent through ACH.
In review
In review
This event happens when a transaction enters the manual review queue. Bridge may reach out to obtain more information about the transaction before processing.
Refund events
Refund events
Information about funds this Virtual Account received which were refunded back to the sender. Details about the refund are included in the “refund” section of the event which includes:Note that not all refund events will include a
- Reason: a brief, human-readable explanation of why this transaction was refunded
- Code: an alphanumeric code representing the reason inside Bridge’s system
- Refunded At: when the refund was initiated
deposit_id. This may be omitted in cases where the refund occurred before a deposit completed. For example:Microdeposits
Microdeposits
Virtual Accounts support microdeposit and challenge deposit verification to help your customers link external bank accounts.
This is currently only supported for ACH.
This is currently only supported for ACH.
- Microdeposit Verification – A small amount (typically less than $1) is deposited and withdrawn to confirm the account is active.
- Challenge deposit verification – One or more microdeposits are made, and the customer must input the exact deposit amounts (e.g. $0.56 and $0.84) to pass verification.
- Microdeposits are never onramped – Any deposit under $1 is treated as a verification attempt and will not trigger a payment or transfer. However, we do accumulate the balance of these microdeposits sent to your VA – once they exceed the minimum, we will onramp the combined ammount.
- Only Virtual Accounts support verification – Static memo-based deposit flows (e.g. with shared memos) are not compatible with microdeposit verification
microdeposit event for each verification attempt. This event includes the amount, source bank details, and timestamp—so you can display them to the customer for verification if needed.Credit and debit entries (positive and negative amounts) may both appear during the verification process. However, some providers may only send a credit—behavior varies by the verifying institution.
Account update
Account update
If a Virtual Account is modified using the Update a Virtual Account endpoint, its history will include an
account_update event to track what changed. The account_updates field in this event will contain a map of fields with their previous and updated values.Understanding Field Equivalents Across Payment Rails
Different payment rails use different field names for similar concepts. This table shows how to map equivalent information across payment rails:| Concept | ACH | SEPA/Faster Payments | SPEI | Wire |
|---|---|---|---|---|
| Transaction description | description | reference | description + reference | wire_message |
| Sender identifier | sender_bank_routing_number | iban + bic (SEPA)account_number + sort_code (FPS) | clabe | bank_routing_number |
| Transaction trace | trace_number | uetr | tracking_number | imad |
| Sender name | sender_name | sender_name | sender_name | originator_name |
Webhook Events
Virtual account activity appears invirtual_account.activity.* webhook events. The webhook event_object uses the exact same structure as the virtual account event responses shown above.
For webhook-specific details (envelope structure, signatures, delivery), see the Webhook Structure documentation.