Duplicate / Different transfers showing up in the transfer list

I’m using the transfers object to see the list of pending transfers that a user has, and I would use the source link to trace back to the sender so I could also tell them who their pending transfers are coming from… I noticed as part of the transfers for this user…

https://api-sandbox.dwolla.com/customers/22533c58-779e-464f-95dd-a5ba0ba0ba7d/transfers

The second transfer below is the funds ($3.55) going from Customer B to Customer A. The first transfer below is funds going from Customer A to Customer A ($3.55).

Is there a better way to go about this, or should I just filter out any of the source[‘href’] that have ‘funding-source’ instead of customer, or maybe that don’t have the individualAchId attribute? Is this how production works as well?

{
“_links”: {
“cancel”: {
“href”: “https://api-sandbox.dwolla.com/transfers/32f1127d-e343-eb11-8129-d2ba35ae0f85”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “transfer”
},
“source”: {
“href”: “https://api-sandbox.dwolla.com/funding-sources/6edf12dc-5257-4580-9ea7-1abab5d6b5fa”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “funding-source”
},
“self”: {
“href”: “https://api-sandbox.dwolla.com/transfers/32f1127d-e343-eb11-8129-d2ba35ae0f85”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “transfer”
},
“funded-transfer”: {
“href”: “https://api-sandbox.dwolla.com/transfers/33f1127d-e343-eb11-8129-d2ba35ae0f85”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “transfer”
},
“source-funding-source”: {
“href”: “https://api-sandbox.dwolla.com/funding-sources/6edf12dc-5257-4580-9ea7-1abab5d6b5fa”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “funding-source”
},
“destination”: {
“href”: “https://api-sandbox.dwolla.com/customers/22533c58-779e-464f-95dd-a5ba0ba0ba7d”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “customer”
}
},
“id”: “32f1127d-e343-eb11-8129-d2ba35ae0f85”,
“status”: “pending”,
“amount”: {
“value”: “3.55”,
“currency”: “USD”
},
“created”: “2020-12-21T23:23:11.530Z”,
“clearing”: {
“source”: “standard”
},
“individualAchId”: “IBXRMRK9”
},
{
“_links”: {
“cancel”: {
“href”: “https://api-sandbox.dwolla.com/transfers/33f1127d-e343-eb11-8129-d2ba35ae0f85”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “transfer”
},
“source”: {
“href”: “https://api-sandbox.dwolla.com/customers/22533c58-779e-464f-95dd-a5ba0ba0ba7d”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “customer”
},
“funding-transfer”: {
“href”: “https://api-sandbox.dwolla.com/transfers/32f1127d-e343-eb11-8129-d2ba35ae0f85”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “transfer”
},
“destination-funding-source”: {
“href”: “https://api-sandbox.dwolla.com/funding-sources/46e93d09-5dc1-4bb5-906f-77284c618563”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “funding-source”
},
“self”: {
“href”: “https://api-sandbox.dwolla.com/transfers/33f1127d-e343-eb11-8129-d2ba35ae0f85”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “transfer”
},
“source-funding-source”: {
“href”: “https://api-sandbox.dwolla.com/funding-sources/6edf12dc-5257-4580-9ea7-1abab5d6b5fa”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “funding-source”
},
“destination”: {
“href”: “https://api-sandbox.dwolla.com/accounts/84cfb86b-54db-44e9-ba91-07968962450c”,
“type”: “application/vnd.dwolla.v1.hal+json”,
“resource-type”: “account”
}
},
“id”: “33f1127d-e343-eb11-8129-d2ba35ae0f85”,
“status”: “pending”,
“amount”: {
“value”: “3.55”,
“currency”: “USD”
},
“created”: “2020-12-21T23:23:11.277Z”,
“clearing”: {
“source”: “standard”
}
},

Hi @jmtichell! Thanks for the question. This one can be a little bit complex. Our lead advocate posted a detailed explanation of this here.

In short, 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:

  1. Customer A Bank —> Customer A Balance (3-4 Biz days) (1-2 Biz days if Next-day ACH feature enabled)
  2. Customer A Balance —> Customer B Balance (instant)
  3. Customer B Balance —> Customer B Bank (1-2 Business days)

Feel free to respond to this thread if you have any follow up questions, or need any clarifications on the post :slightly_smiling_face:

I guess it might be better to ask for advice, since I kinda feel like I’m walking through spiderwebs here.

In general:
- One side of my transaction will always be a VCR, and the other side will typically be verified, but could be an unverified customer.
- The transaction will either be generated as part of a mass payment or a as regular transfer.

What I would like to do is display to the customer pending transactions for information purposes and business logic (such as not allowing accounts to be deactivated if transfers are pending). So the 2 pieces of information I would like to acquire are, who sent the funds and who is receiving them - which is proving much more difficult than I expected (I’m using the retrieve customer endpoint as my starting point).

Hey @jmtichell.

There is another endpoint you can use to help provide the user with this information. The List and Search Transfers for a Customer endpoint could be used for all customer types and is able to list information on all transaction types including mass pay.

We do have a Postman collection where you could try out this end point as well. It should be located in the transfers folder.

Let me know if this helps, and please don’t hesitate to ask any follow up questions :slightly_smiling_face:

Thanks @kmoreira, that endpoint is a bit faster to work with. I noticed that the endpoint does not include transaction fees that are passed along with the mass payment - I’m not sure where I would look to get that piece so the amounts tie out.

For example, a mass payment of $8,000 could look like:
Payment 1 : $3,000
Payment 2 : $3,000
Payment 3 : $2,000
Payment 4 : $8 (Transaction Fee)

The customers/id/transfers endpoint only lists Payments 1,2, and 3.

This only appears to happen with Mass Payments, the transaction fee is included when it’s a normal transfer.

I actually think I understand what’s going on now… I had forgotten you can’t include transaction fees on mass payments (correct?) and was passing it as another transfer (which would show up on my account vs. the customer).

It does look like there is a totalFees item on the Masspayment.

I’m not sure how I would set this though - I tried to pass the following along with the request body and totalFees is still 0:

request_body = {
  '_links': {
     'source': {'href': source_bank},
     'destination': {'href': destination_bank}
   },

 'amount': {
     'currency': 'USD',
     'value': str(charge_amount)
   },

 'correlationId' : correlationId,
  "totalFees": {
        "value": "8.00",
        "currency": "USD"
    },

 'fees' : fees = [{

     "_links": {
         "charge-to": {
            "href": "https://api-sandbox.dwolla.com/customers/" + dwolla_customer_id
          }
      },

     "amount": {
          "value": "8.00",
          "currency": "USD"
      }
   }]
 }