Transfer from customer to account - invalid funding source


(Tim Bartley) #1

Hi,

In the UAT environment, I am getting invalid funding source when I try and transfer.

If I get the funding source it says it is unverified so I guess that’s why since my customer is also unverified however when I look in the dashboard while the customer shows as unverified the funding source is shown as verified and the customer reports that it is ready to send and receive funds.

My sandbox account was supposed to be enabled for 3rd party IAV (e.g. Plaid) but maybe that hasn’t happened?

However I’m not sure the cause is the same. I have an unverified customer but a verified bank account funding source, at least that’s how it shows in the UAT dashboard.

Below is JSON request/response for the transfer and the result of the get of the funding source.

So, a couple of questions.

Why the discrepancy between dashboard and GET of the funding source? Or am I interpreting what I see incorrectly?
What else I need to do to get this working?

Cheers,

Tim

Response to transfer initiation:

{ "code":"ValidationError",
  "message":"Validation error(s) present. See embedded errors list for more details.",
  "_embedded":{
    "errors":[
      { "code":"Invalid",
        "message":"Invalid funding source.",
        "path":"/_links/source/href","_links":{}
      }
    ]
  }
}

Transfer initiation request

{
  "_links": {
    "source": {
      "href":"https://api-uat.dwolla.com/funding-sources/2fee1a68-6292-484e-a35d-cd013b9b34b3"
    },
    "destination": {
      "href":"https://api-uat.dwolla.com/funding-sources/c1ca982d-2c49-4af7-bf6b-a33175c71401",
      "type":"application/vnd.dwolla.v1.hal+json",
      "resource-type":"funding-source"
    }
  },
  "amount": {
    "value":"12.34",
    "currency":"USD"
  },
  "metadata":null,
  "fees":null,
  "clearing":null
}

Funding source from a GET:

{ "self": {
    "href":"https://api-uat.dwolla.com/funding-sources/2fee1a68-6292-484e-a35d-cd013b9b34b3",
    "type":"application/vnd.dwolla.v1.hal+json",
    "resource-type":"funding-source"
  },
  "customer": {
    "href":"https://api-uat.dwolla.com/customers/554b4468-b237-4e03-bf99-664c32c72f99",
    "type":"application/vnd.dwolla.v1.hal+json",
    "resource-type":"customer"
  },
  "account":null,
  "initiateMicroDeposits": {
    "href":"https://api-uat.dwolla.com/funding-sources/2fee1a68-6292-484e-a35d-cd013b9b34b3/micro-deposits",
    "type":"application/vnd.dwolla.v1.hal+json",
    "resource-type":"micro-deposits"
  },
  "withAvailableBalances":null,
  "balance":null,
  "id":"2fee1a68-6292-484e-a35d-cd013b9b34b3",
  "status":"unverified",
  "type":"bank",
  "name":
  "JUnit Check",
  "created":"2017-03-01T16:17:55.000+0000",
  "removed":false,
  "channels":["ach"],
  "bankName":"SANDBOX TEST BANK"
}

(Tim Bartley) #2

Bump. Help! This blocking me - I don’t know how to verify accounts that already appear verified in the dashboard.


(Spencer Hunter) #3

Hi @tbartley, from the request body provided it looks to be a valid request. I am also showing that the source funding has been verified as well. Have you tried with curl using that same request body?


(Tim Bartley) #4

Thanks @spencer With curl I still get the failed transfer:

< HTTP/1.1 400 Bad Request
< Date: Thu, 02 Mar 2017 17:44:47 GMT
< Content-Type: application/vnd.dwolla.v1.hal+json; profile="http://nocarrier.co.uk/profiles/vnd.error/"; charset=UTF-8
< Content-Length: 231
< Connection: keep-alive
< Set-Cookie: __cfduid=d8c30a5385f1d3b216e206ce4bd8cf8ab1488476687; expires=Fri, 02-Mar-18 17:44:47 GMT; path=/; domain=.dwolla.com; HttpOnly
< Access-Control-Allow-Origin: *
< X-Request-Id: 59ef7a85-6f4a-48a1-8a0c-ad4512bb28bf
< Server: cloudflare-nginx
< CF-RAY: 33962a821f091bc7-SEA
<
* Curl_http_done: called premature == 0
* Connection #0 to host api-uat.dwolla.com left intact
{"code":"ValidationError","message":"Validation error(s) present. See embedded errors list for more details.","_embedded":{"errors":[{"code":"Invalid","message":"Invalid funding source.","path":"/_links/source/href","_links":{}}]}}

But when I get the funding source to look it at it reports it’s status as verified now.

I wonder if the verified vs unverified thing is just a timing issue i.e. I’m doing this in an automated program:

  1. create customer
  2. create funding source
  3. get funding source
  4. attempt transfer

I wonder if when I get the funding source it’s still just in an “unverfied” state and I need to wait a little bit to see it go to verified state?

But that then doesn’t answer for me why the transfer is failing when I use curl and the funding source is reporting as verified?


(Tim Bartley) #5

Still blocked on this. The unverified status seems just to have been a timing issue however I still get the transfer failure. Any ideas?


(Spencer Hunter) #6

Hi @tbartley, I went through and attempted this same sequence using Runscope and chained requests and wasn’t able to recreate. Can you provide an output of the request body that is getting sent to the API which results in the validation error?


(Tim Bartley) #7

Hmmm. This is the request and corresponding response I see using curl:

POST /transfers HTTP/1.1
> Host: api-uat.dwolla.com
> User-Agent: curl/7.51.0
> Authorization: Bearer xxxxxxxxxxxxxxxx
> Content-Type: application/vnd.dwolla.v1.hal+json
> Accept: application/vnd.dwolla.v1.hal+json
> Content-Length: 448
{
  "_links": {
    "source": {
      "href":"https://api-uat.dwolla.com/funding-sources/2fee1a68-6292-484e-a35d-cd013b9b34b3"
    },
    "destination": {
      "href":"https://api-uat.dwolla.com/funding-sources/c1ca982d-2c49-4af7-bf6b-a33175c71401",
      "type":"application/vnd.dwolla.v1.hal+json",
      "resource-type":"funding-source"
    }
  },
  "amount": {
    "value":"12.34",
    "currency":"USD"
  },
  "metadata":null,
  "fees":null,
  "clearing":null
}

Response:

< HTTP/1.1 400 Bad Request
< Date: Tue, 07 Mar 2017 22:27:57 GMT
< Content-Type: application/vnd.dwolla.v1.hal+json; profile="http://nocarrier.co.uk/profiles/vnd.error/"; charset=UTF-8
< Content-Length: 231
< Connection: keep-alive
< Set-Cookie: __cfduid=d66af6be9fe540fab9590b7e25817b0ba1488925677; expires=Wed, 07-Mar-18 22:27:57 GMT; path=/; domain=.dwolla.com; HttpOnly
< Access-Control-Allow-Origin: *
< X-Request-Id: 33e595ed-ad15-4138-8ea6-70be6ef9057e
< Server: cloudflare-nginx
< CF-RAY: 33c0fc2b999a29e9-SEA
{ "code":"ValidationError",
  "message":"Validation error(s) present. See embedded errors list for more details.",
  "_embedded":{
    "errors":[{
      "code":"Invalid",
      "message":"Invalid funding source.",
      "path":"/_links/source/href",
      "_links":{}}]
  }
}

(Tim Bartley) #8

Same thing happens with a more recently created funding customer and funding source with the following JSON:

{ "_links": {
    "destination": {
      "href":"https://api-uat.dwolla.com/funding-sources/c1ca982d-2c49-4af7-bf6b-a33175c71401"
    },
    "source": {
      "href":"https://api-uat.dwolla.com/funding-sources/b814cb6d-a746-43db-b996-960f5ba1b1d5"
    }
  },
  "amount": {
    "value":"12.34",
    "currency":"USD"
  }
}

Thanks for you help.

Cheers,

Tim


(Spencer Hunter) #9

Hi @tbartley, We found the issue. It looks like you enabled an account setting called “only enable realtime payments” which prevents a transfer of funds to be source from a bank account. You’ll want to login to your uat account and navigate to: https://uat.dwolla.com/features. On the dropdown shown below you’ll select disabled.


(Tim Bartley) #10

Thank you! Yes - that was it. All working fine for me now!

Cheers,

Tim