Hi @bzswords, Thanks for posting! This is one of the more complex topics to explain, but something that is important to get right in your integration. Please feel free to reply back with any questions after reviewing my post! The main difference between when these two events are triggered ultimately comes down to:
- The Customer record type(s) involved in the transaction; and
- The Funding Source of the source and destination. (Bank or Balance)
Note: Only Verified Customer records, either individual or business, can hold a balance within the Dwolla network and therefore the customer_bank_transfer_* only apply to this Customer record type.
This seems to me to be the correct observation. To represent the possible events for a given call to the API to Transfer, here’s an example:
For a bank-to-bank transfer between two Verified Customers, funds will move like the following:
- Customer A Bank —> Customer A Balance (3-4 Biz days) (1-2 Biz days if Next-day ACH feature enabled)
- Customer A Balance —> Customer B Balance (instant)
- Customer B Balance —> Customer B Bank (1-2 Business days)
How that looks with webhooks:
customer_bank_transfer_created - Represents funds moving from source verified Customer’s bank to the Dwolla network.
customer_transfer_created - Represents funds transferring from Customer A to Customer B.
customer_bank_transfer_completed - Represents funds clearing either from a verified Customer’s bank to the Dwolla network or from the Dwolla network to a verified Customer’s bank
customer_transfer_completed - Represents funds completing to receiving Customer. Customer B’s balance
Step 3 (from above)
customer_bank_transfer_created - Represents funds moving from Customer B’s balance to their bank.
customer_bank_transfer_completed - Represents funds completing to Customer B’s bank.
You can expect both events if the Transfer is sourced from a Verified Customer’s bank and is destined to another Customer record. I would recommend setting up a webhook subscription in our Sandbox environment and testing out your payment flow, keeping the two bullet points above in mind when testing. You should be able to replicate the sequence of events triggered for your payment use case and track funds as they move from their source to the destination.
Again, please don’t hesitate to reach out if you have any follow up questions! We are working on some supplemental documentation to help better visualize Transfers and their related Events based on a given payment use case. ![]()