Hi @KevinMcKee – Hopefully this helps clarify things!
Determining what webhooks to expect:
This gist should be helpful in determining exactly what webhooks you can expect to receive in the above scenario where a transfer is being made from an Unverified Customer’s bank to your Dwolla Account’s Bank.
Why are there similar webhooks for the same actioin:
For each transfer involving two parties, we send two similar webhooks for each action; one includes the sender’s link and the other includes the receiver’s link. This is so that, if needed, you can handle any business logic separately for the Sender party and the Receiver party.
Linking original transfer with second half of the transfer:
As for linking the original transfer with the second half of the transfer linked in the bank_transfer_created/bank_transfer_completed webhooks, when you make a GET request to the linked transfer, you can find the original transfer as a "funding-transfer" link in the response. Similarly, when you make a GET request to the original transfer, you will find the second half of the transfer as a "funded-transfer" link in the response.
"funding-transfer" → Follow this link to go back and determine how the balance got deposited on the initial bank-to-balance transaction.
"funded-transfer" → Follow this link to go forward and determine the transfer that pushes funds out of a balance and into the bank of a destination Customer.
Linking transfers using "correlationId":
Additionally, you can also use a correlationId to link transfers together. This is a field you can append to a transfer request when creating a transfer like in the following example, and is returned in the response whenever you retrieve the transfer (including the funded and funding transfers).
POST /transfers
{
"_links": {
"source": {},
"destination": {},
"amount": {},
"correlationId": "any-random-string-upto-255-char-no-space"
}
Let us know if you have any questions!