# Testing transfers webhooks

**URL:** <https://discuss.dwolla.com/t/testing-transfers-webhooks/5634>\
**Category:** API Support\
**Created:** [April 2, 2020, 4:36pm UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634 "2020-04-02T16:36:40Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michal\_K](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/michal_k/32/2362_2.png) [@Michal\_K](https://discuss.dwolla.com/u/Michal_K)\
**Post date:** [April 2, 2020, 4:36pm UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/1 "2020-04-02T16:36:40Z")

</div>

Hi!

I’m testing making transfers (sandbox env) from an unverified customer with a verified funding source to a verified business user with an unverified funding source.

Success flow callbacks are:

- customer\_transfer\_created (for business user)
- customer\_transfer\_created (for customer)
- customer\_transfer\_completed (for business user)
- customer\_transfer\_completed (for customer)
- customer\_bank\_transfer\_creation\_failed (for business user)

Can you tell me why I got customer\_bank\_transfer\_creation\_failed here?

Also is it sandbox fault that I’ve never got any of those callbacks when I was testing failure scenarios: customer\_bank\_transfer\_created, customer\_bank\_transfer\_failed, customer\_bank\_transfer\_completed)

And the last thing - in a sandbox environment can I affect the money’s amount on a customer bank account - the one to be added and verified by Dwolla.js?

---

<div class="post-metadata">

**Author:** ![spencer](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/spencer/32/2143_2.png) [@spencer](https://discuss.dwolla.com/u/spencer)\
**Post date:** [April 2, 2020, 8:30pm UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/2 "2020-04-02T20:30:22Z")

</div>

> [@Michal\_K](#):
>
> Can you tell me why I got customer\_bank\_transfer\_creation\_failed here?

Hey @Michal_K, thanks for posting. The `customer_bank_transfer_creation_failed` event is less common in nature in relation to the overall transfer workflow. This event is triggered when Dwolla is unable to create an ACH credit to a recipients bank account. To provide some additional context, if the funds transfer is going **to** a Verified business Customer then they will pass through a [balance](https://developers.dwolla.com/resources/balance-funding-source.html) before being credited to their attached bank account. A few examples where Dwolla would fail to “auto-withdraw” those funds can include:

- A negative balance exists on the receiving Customer. (A negative balance can occur if this Customer record received an ACH return) (Did you test a Failure scenario which caused this balance to go negative?)
- The receiving Customer is in an account state where they are unable to transfer funds. This can include if the Customer has a status other than `verified` such as `document`, `deactivated`, `suspended`, etc.

> [@Michal\_K](#):
>
> Also is it sandbox fault that I’ve never got any of those callbacks when I was testing failure scenarios: customer\_bank\_transfer\_created, customer\_bank\_transfer\_failed, customer\_bank\_transfer\_completed)

The sequence of events triggered will vary depending on when the ACH return occurred and the Customer types involved in the transaction. For more information on the events you may receive based on your funds flow, reference [this gist](https://gist.github.com/spencerhunter/2ab064e8e76a049eb22e17ed8e92f350). Also covered in [this forum thread](https://discuss.dwolla.com/t/bank-transfer-vs-transfer-webhook/5526/4).

> [@Michal\_K](#):
>
> And the last thing - in a sandbox environment can I affect the money’s amount on a customer bank account - the one to be added and verified by Dwolla.js?

You should be able to transfer funds to/from an attached bank account regardless of the method used to add that bank (dwolla.js/IAV // via API // Plaid). You’ll just want to be sure that when **sending funds** the underlying bank account has a `verified` status.

Hope this helps, please let me know if I’m misunderstanding anything or if you have any follow up questions!

---

<div class="post-metadata">

**Author:** ![Michal\_K](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/michal_k/32/2362_2.png) [@Michal\_K](https://discuss.dwolla.com/u/Michal_K)\
**Post date:** [April 3, 2020, 8:04am UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/3 "2020-04-03T08:04:07Z")

</div>

> [@spencer](#):
>
> The receiving Customer is in an account state where they are unable to transfer funds. This can include if the Customer has a status other than `verified` such as `document` , `deactivated` , `suspended` , etc.

Yes, that was it, at least it pushed me in the right direction. I mean in the Dwolla dashboard the business customer was flagged as verified and what I miss was the two tiny little grayish boxes saying that I need to certify beneficial ownership. After doing so, it seems that I’m not getting customer\_bank\_transfer\_creation\_failed webhook when testing the success transfer process, which is nice. Thank you!

I went through your gist and I’m not sure I understand correctly the case scenarios there: Transfer scenario 2: `Verified Customer As bank to Unverified Customer Cs bank`  
Does this mean eg unverified individual customer with verified funding source to verified business customer with unverified funding source? (I’m asking because I got confused after reading scenario 3 ` **Source:** Unverified Customer bank **Destination:** Verified Customer bank`. Uncerified is related to Customer and not to bank right? I mean is it even possible to make a transfer from a verified customer with an unverified funding source?)

Sorry for bothering you, but because we’re dealing with customer’s money I’d like to fully understand the process here.

---

<div class="post-metadata">

**Author:** ![spencer](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/spencer/32/2143_2.png) [@spencer](https://discuss.dwolla.com/u/spencer)\
**Post date:** [April 3, 2020, 1:38pm UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/4 "2020-04-03T13:38:58Z")

</div>

> [@Michal\_K](#):
>
> Yes, that was it, at least it pushed me in the right direction. I mean in the Dwolla dashboard the business customer was flagged as verified and what I miss was the two tiny little grayish boxes saying that I need to certify beneficial ownership. After doing so, it seems that I’m not getting customer\_bank\_transfer\_creation\_failed webhook when testing the success transfer process, which is nice. Thank you!

No problem! Beneficial ownership certification is another piece that will prevent that account type from transferring funds.

> [@Michal\_K](#):
>
> I went through your gist and I’m not sure I understand correctly the case scenarios there: Transfer scenario 2: `Verified Customer As bank to Unverified Customer Cs bank`  
> Does this mean eg unverified individual customer with verified funding source to verified business customer with unverified funding source?

Sorry, I linked to the wrong scenario! You’ll want to refer to [transfer scenario 3](https://gist.github.com/spencerhunter/2ab064e8e76a049eb22e17ed8e92f350#transfer-scenario-3) as you have Unverified users sending to Verified users. Unverified vs. Verified is referring to the Customer type.

No worries on asking questions, this is one of the more complex/confusing components to an integration (Reconciling transactions based on transfer events).

---

<div class="post-metadata">

**Author:** ![Michal\_K](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/michal_k/32/2362_2.png) [@Michal\_K](https://discuss.dwolla.com/u/Michal_K)\
**Post date:** [April 7, 2020, 9:35am UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/5 "2020-04-07T09:35:40Z")

</div>

I have one more question. I’m looking for the final webhook for success transfer - it seems to be `customer_bank_transfer_created`. But when testing failure scenarios (R01-late & R03-late) after `customer_bank_transfer_created` I got two more webhooks (`customer_transfer_failed` for individual and business customer).

So my question is can I rely on `customer_bank_transfer_created` webhook (very convenient) or rather log in to receiving bank account and see if the money from a transfer is there (not very convenient).

Or maybe there is another webhook that I can use or some other way?

Also is there a way to trigger `customer_bank_transfer_failed` on the sandbox env?

---

<div class="post-metadata">

**Author:** ![spencer](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/spencer/32/2143_2.png) [@spencer](https://discuss.dwolla.com/u/spencer)\
**Post date:** [April 8, 2020, 1:25pm UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/6 "2020-04-08T13:25:20Z")

</div>

> [@Michal\_K](#):
>
> So my question is can I rely on `customer_bank_transfer_created` webhook (very convenient) or rather log in to receiving bank account and see if the money from a transfer is there (not very convenient).

@Michal_K, There are two sides to every bank-to-bank transaction (ACH debit and credit). Im assuming that this event is being triggered when the source ACH debit is marked as `processed` in Dwolla? If so, that should kick off a secondary transaction to withdraw funds from the recipient’s balance (held in Dwolla) to their bank account. The `customer_bank_transfer_created` event should be followed by a `customer_bank_transfer_completed` event wherein that completion should be an indication that funds are in the receiving bank account.

What I would likely recommend is utilizing the `funded-transfer` and/or `funding-transfer` links returned on a Transfer resource to indicate what action your app needs to take, and to identify if the funds have reached their destination. Described in [this forum thread](https://discuss.dwolla.com/t/bank-transfer-vs-transfer-webhook/5526/4). You could then do the following:

- Store the transfer ID returned from the API when creating the transfer as well as a status (your own payment status).
- When a transfer related event is triggered, follow the resource URL to do a GET /transfers/{id} to retrieve the status as well as determine if the transfer has created a a subsequent transfer (as indicated by the presence of the `funded-transfer` link). If `funded-transfer` link exists, follow that URL by making a GET /transfers/{id}. If there is no `funded-transfer` link and the status is `processed` then the lifecycle of the transaction is complete.

> [@Michal\_K](#):
>
> Also is there a way to trigger `customer_bank_transfer_failed` on the sandbox env?

You should be able to test this for use case by setting the receiving Verified Customer’s attached funding source name to `R03`. Once that’s done, initiate a transfer and click the “Process bank transfers” button multiple times in the Sandbox Dashboard.

---

<div class="post-metadata">

**Author:** ![Michal\_K](https://sea2.discourse-cdn.com/dwolla/user_avatar/discuss.dwolla.com/michal_k/32/2362_2.png) [@Michal\_K](https://discuss.dwolla.com/u/Michal_K)\
**Post date:** [April 8, 2020, 3:46pm UTC](https://discuss.dwolla.com/t/testing-transfers-webhooks/5634/7 "2020-04-08T15:46:25Z")

</div>

Thank you so much!
