The latest payment method to be utilized in the United States, real-time payments (RTP), lets users send funds between bank accounts quickly, 24/7/365. It differs from Same Day ACH in that payments are final, cleared and settled in real time, instead of within a few days. Real-time payments innovation is the convenient and efficient choice for businesses who qualify for this payment solution. Currently, these are the financial institutions participating in the RTP® Network according to The Clearing House.

Below you will find a table illustrating the differences between Same Day ACH Transfers and Real-Time Payment Transfers.

Same Day ACH Transfers Real-Time Payment Transfers
Sent via the ACH Network Operators (either the Federal Reserve Bank or The Clearing House). Sent via the RTP® Network Operator, The Clearing House.
Rules and regulations issued by Nacha. Rules and regulations issued by The Clearing House.
Funds can take 1 business day to be available. Real-time funds availability.
Agreed-upon process for correcting erroneous transactions (i.e. reversal requests). Funds are irrevocable (although not guaranteed, a request for return of funds may be issued).
Limits: $100,000 / push (credit) Limits: $100,000 / push (credit)
Supports Push (credit) only. Push (credit) only.
Transactions are batched. Transactions clear and settle individually.

You can now take advantage of these faster payments in the Dwolla API by using the `Create a new RTP transfer` endpoint.

In this article, we will be going over how to create an RTP transfer utilizing the Dwolla API postman collection.

Create An RTP Transfer

To follow along in this step-by-step example, make sure to obtain a key and secret from the Dwolla sandbox, and run our Postman collection.

If you already have a Dwolla sandbox or production account and a verified customer with a qualifying RTP funding source, you may begin on step 4.

Step 1: Get A Token

Once you have set up a Dwolla sandbox account:

  1. Get your `client_id` and `client_secret` values, found on the `Applications` tab upon logging in, and update those values in the “Dwolla API Sandbox” environment in Postman.
  2. Open the “Application Auth Access Token” request in the “Dwolla API Sandbox” collection, and make sure you have the environment selected as “Dwolla API Sandbox”. Run the request to get a new Dwolla API token.
  3. Copy the token value from the response body, and update the “appToken” field in the “Dwolla API Sandbox” environment.

Step 2: List Funding Sources for an Account

To create an RTP transfer from the Dwolla Balance of your Dwolla Admin Account, you must first obtain its funding source ID. This ID can either be found in your sandbox account settings, or obtained by calling the `List funding sources for an account` endpoint.

Note that if calling the `List funding sources for an account` endpoint, you will need to retrieve your Dwolla Admin Account ID by calling the root of the API.

Example: Get root
GET https://api-sandbox.dwolla.com/
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer {accessToken}

The Dwolla Admin Account ID can be found in the response’s “account” body.

  "account": {
    "href": "https://api-sandbox.dwolla.com/accounts/978ca130-e2b0-4024-9983-87e65fcdc90d",
    "type": "application/vnd.dwolla.v1.hal+json",
    "resource-type": "account"
  }

Now that we have the Account Id, we can use the `List funding sources for an account` endpoint, to get the funding source id for your Dwolla Balance admin account.

Example: List funding sources for an account
GET https://api-sandbox.dwolla.com/accounts/{{accountId}}/funding-sources?removed=false
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer {accessToken}

The Dwolla Balance funding source id for your admin account can be found in the href value of the balance object.

  "balance": {
    "href": "https://api-sandbox.dwolla.com/funding-sources/0004a5e9-d053-46e9-af1f-f4123439138c/balance",
    "type": "application/vnd.dwolla.v1.hal+json",
    "resource-type": "balance"
  }

You can also find your Dwolla Balance id in your sandbox account settings under the funding sources tab.

Step 3: List Funding Sources For a Customer

This step assumes that you have already created a Verified Customer and have set up a verified funding source for that customer. The `List funding sources for a customer` endpoint can also be found in the funding-sources folder in the Postman collection.

Example: List Funding Sources for a Customer
GET https://api-sandbox.dwolla.com/customers/{{customerId}}/funding-sources
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer {accessToken}

Step 4: Create A New RTP Transfer

Now that we have the funding source id of our Dwolla Balance from our admin account, paste this id in the source object of the POST request along with the funding source id of the Verified Customer. It’s important to note that RTP transfers are a push only, and that the destination funding source does need to be an RTP enabled financial institution.

Example: Create a Transfer
POST https://api-sandbox.dwolla.com/transfers
Accept: application/vnd.dwolla.v1.hal+json
Content-Type: application/vnd.dwolla.v1.hal+json
Authorization: Bearer {accessToken}

{
  "_links": {
    "source": {
      "href": "https://api-sandbox.dwolla.com/funding-sources/{sourceFundingSource}"
    },
    "destination": {
      "href": "https://api-sandbox.dwolla.com/funding-sources/{destinationFundingSource}"
    }
  },
  "amount": {
    "currency": "USD",
    "value": "10.00"
  },
  "processingChannel": {
    "destination": "real-time-payments"
  }
}

Note that if you receive a 403 Error along with the message, “Real Time Payments not enabled for this account”, please reach out to one of our developer advocates in the discuss forum to enable RTP in your sandbox, so you may begin testing.

Stay Updated