Dwolla Developers Logo
Back
Concepts
  • Customers
    Customer Types
  • Features
  • Funding Sources
  • Transfers
  • Webhooks
API DocsOpen in new tabChangelog
Get API Keys
API DocsOpen in new tabChangelog
JavaScript
Get API Keys

Webhook Events #

When an action occurs within the Dwolla system on a resource (Customers, Transfers, etc.), an Event object is created to record a change to the state of the resource. All created Webhook Events follow the same format and include high level details such as: an event topic, a resource URL that identifies the specific resource that changed states, and a timestamp. If your application has an active webhook subscription, all Events relevant to your integration will trigger a webhook notification each time they occur. The following resource article will provide guidance on the structure of webhook events, which will assist with handling incoming webhooks.

Info
Dwolla requires all applications to have a created webhook subscription in production. The webhook subscription is used to notify your application to trigger an email notification to your end-users.

Webhook request details #

When your webhook subscription is configured, events will be created and sent asynchronously via webhooks as they occur. The webhook notification from Dwolla is a POST request that contains a JSON-encoded payload as well as HTTP headers, which are both used when consuming the webhook. Webhook payloads are designed to be lightweight with only minimum details regarding the triggered event. Dwolla returns links within the Event object pointing to relevant resources in the API which are used to lookup more detailed information on the resource that changed states.

Webhook headers #

There are a few HTTP headers that are useful for your application when consuming the webhook request. x-dwolla-topic lets your app know, at a high level, the type of event being sent in the payload. x-request-signature-sha256 contains a HMAC SHA256 hash based on the webhook payload and a key which is your webhook secret. The webhook signature should be validated prior to parsing the webhook payload.

  • x-dwolla-topic - customer_created
  • x-request-signature-sha-256 - ed551cfb4acb48d31e14886bffa33aa417dfa4a3d3778f6141a7f7f92ee64861

Webhook payload #

All webhook payloads will include an Event object which will follow the same format as outlined in the API reference docs. An Event contains _links to: the relevant resource that caused the Event to be triggered, the Customer that the Event belongs to, and a self link to identify the unique Event. In addition to relevant _links, the payload will include attributes such as a created timestamp, event topic, and resourceId.

AttributeDescription_linksAn object that contains relevant links to resources in the Dwolla API. Possible links can include: self, account, resource, and customer.
self - a link to the unique event
account - a link to the Dwolla account that the application belongs to
resource - a link to the resource that changed states. Used to lookup additional details returned on the resource itself
customer - a link to the customer the Event belongs toidUnique Event Id. An Event Id is used along with the created timestamp for idempotent event processing.createdISO-8601 timestamp when event was created.topicType of action that occurred with Dwolla.resourceIdUnique Id of the resource that triggered the Event.

Example webhook payload #

json
{
  "_links": {
    "account": {
      "href": "https://api-sandbox.dwolla.com/accounts/0ee84069-47c5-455c-b425-633523291dc3",
      "resource-type": "account",
      "type": "application/vnd.dwolla.v1.hal+json"
    },
    "customer": {
      "href": "https://api-sandbox.dwolla.com/customers/a6f09251-c2de-4833-94a8-5c70916cebbc",
      "resource-type": "customer",
      "type": "application/vnd.dwolla.v1.hal+json"
    },
    "resource": {
      "href": "https://api-sandbox.dwolla.com/customers/a6f09251-c2de-4833-94a8-5c70916cebbc",
      "type": "application/vnd.dwolla.v1.hal+json"
    },
    "self": {
      "href": "https://api-sandbox.dwolla.com/events/29a82d20-a703-41cb-9b3c-bd409c499925",
      "resource-type": "event",
      "type": "application/vnd.dwolla.v1.hal+json"
    }
  },
  "created": "2019-05-30T18:21:11.490Z",
  "id": "29a82d20-a703-41cb-9b3c-bd409c499925",
  "resourceId": "a6f09251-c2de-4833-94a8-5c70916cebbc",
  "topic": "customer_created"
}

List of supported events by resource #

Webhooks are available for the list of Events shown below. As API enhancements are made, Dwolla may add new Events at any point in the future.

Info
The Event topic for all events triggered for your end-users that are created as Customers will be prepended with customer_*. Events that represent actions being triggered on your primary Dwolla Account are not shown below. Refer to the API docs for the complete list of Events.

Customers #

Event Topic NameDescriptioncustomer_createdDescription: A Customer was created.
Timing: Occurs upon a POST request to the Create a Customer endpoint.customer_reverification_neededDescription: Incomplete information was received for a Customer; updated information is needed to verify the Customer.
Timing: Occurs upon a POST request to the Update a Customer endpoint, or when Dwolla places a Customer into retry status.customer_verification_document_neededDescription: Additional documentation is needed to verify a Customer.
Timing: Occurs when a second attempt to re-verify a Customer fails, which systematically places the Customer in document status immediately after a POST request to the Update a Customer endpoint.customer_verification_document_uploadedDescription: A verification document was uploaded for a Customer.
Timing: Occurs upon a POST request to the Create a Document endpoint.customer_verification_document_failedDescription: A verification document was rejected for a Customer.
Timing: Occurs when a document uploaded for a Customer is reviewed by Dwolla, and rejected with a document failure reason, usually within 1-2 business days of uploading a document.customer_verification_document_approvedDescription: A verification document was approved for a Customer.
Timing: Occurs when a document uploaded for a Customer is reviewed by Dwolla, and approved, usually within 1-2 business days of uploading a document.customer_verifiedDescription: A Customer was verified.
Timing: Occurs when a Customer is verified by Dwolla upon a POST request to the Create a Customer endpoint. In a case where the Customer isn’t instantly verified upon creation, this event occurs when the Customer is verified after a retry attempt, or after a document is approved.customer_suspendedDescription: A Customer was suspended.
Timing: Occurs when Dwolla systematically places a Customer in suspended status as a result of uploading fraudulent document, or upon receiving certain ACH return codes when a transfer fails.customer_activatedDescription: A Customer moves from deactivated or suspended to an active status.
Timing: Occurs upon reactivating a Customer that has a deactivated status by making a POST request to the Update a Customer endpoint, or when Dwolla reactivates a Customer that has a suspended status.customer_deactivatedDescription: A Customer was deactivated.
Timing: Occurs upon deactivation of a Customer by making a POST request to the Update a Customer endpoint, or when Dwolla systematically deactivates a Customer upon receiving certain ACH return codes when a transfer fails.

Customers - Beneficial Owners #

Event Topic NameDescriptioncustomer_beneficial_owner_createdDescription: A Beneficial owner was successfully created.
Timing: Occurs upon a POST request to the Create a beneficial owner endpoint.customer_beneficial_owner_removedDescription: An individual beneficial owner has been successfully removed from the Customer.
Timing: Occurs upon a POST request to the Remove a beneficial owner endpoint.customer_beneficial_owner_verification_document_neededDescription: Additional documentation is needed to verify an individual beneficial owner.
Timing: Occurs when a second attempt to re-verify a beneficial owner fails, which systematically places the beneficial owner in document status immediately after a POST request to the Update a beneficial owner endpoint.customer_beneficial_owner_verification_document_uploadedDescription: A verification document was uploaded for beneficial owner.
Timing: Occurs upon a POST request to the Create a document for a beneficial owner endpoint.customer_beneficial_owner_verification_document_failedDescription: A verification document was rejected for a beneficial owner.
Timing: Occurs when a document uploaded for a beneficial owner is reviewed by Dwolla, and rejected with a document failure reason reason, usually within 1-2 business of uploading a document.customer_beneficial_owner_verification_document_approvedDescription: A verification document was approved for a beneficial owner.
Timing: Occurs when a document uploaded for a Customer is reviewed by Dwolla, and approved, usually within 1-2 business days of uploading a document.customer_beneficial_owner_reverification_neededDescription: A previously verified beneficial owner status has changed due to either a change in the beneficial owner’s information or at request for more information from Dwolla. The individual will need to verify their identity within 30 days.
Timing: Occurs upon a POST request to the Update a beneficial owner endpoint, or when Dwolla places the beneficial owner into incomplete status.

Customers - Funding Sources #

Event Topic NameDescriptioncustomer_funding_source_addedDescription: A funding source was added to a Customer.
Timing: Occurs upon a POST request to the Create a funding source for a customer endpoint, or when a funding source is added via dwolla.js or a third party bank verification method.customer_funding_source_removedDescription: A funding source was removed from a Customer.
Timing: Occurs upon a POST request to the Remove a funding source endpoint, or when Dwolla systematically removes a funding source upon receiving certain ACH return codes when a transfer fails.customer_funding_source_verifiedDescription: A Customer’s funding source was marked as verified.

Timing: Occurs upon a successful POST request to the Verify micro-deposits endpoint, or when a funding source is added + verified via IAV or a third party bank verification method. Also occurs in cases where Dwolla manually marks a funding source as verified.customer_funding_source_unverifiedDescription: A funding source has been systematically unverified. This is generally a result of a transfer failure. View our developer resource article to learn more.
Timing: Occurs when Dwolla systematically marks a funding source unverified upon receiving certain ACH return codes when a transfer fails.customer_funding_source_negativeDescription: A Customer’s balance has gone negative. You are responsible for ensuring a zero or positive Dwolla balance for Customer accounts created by your application. If a Customer’s Dwolla balance has gone negative, you are responsible for making the Dwolla Customer account whole. Dwolla will notify you via a webhook and separate email of the negative balance.
Timing: Occurs upon a POST request to the Initiate a transfer endpoint that causes a funding source balance to go negative.customer_funding_source_updatedDescription: A Customer’s funding source has been updated. This can also be fired as a result of a correction after a bank transfer processes. For example, a financial institution can issue a correction to change the bank account type from checking to savings.
Timing: Occurs upon a POST request to the Update a funding source endpoint.customer_microdeposits_addedDescription: Two less than or equal to ten cent transfers to a Customer’s linked bank account were initiated.
Timing: Occurs upon a POST request to the Initiate micro-deposits endpoint, or when a Customer selects the microdeposits option within IAV.customer_microdeposits_failedDescription: The two less than or equal to ten cent transfers to a Customer’s linked bank account failed to clear successfully.
Timing: Occurs when micro-deposits fails to clear into a bank account, usually within 1-2 business days of initiating them.customer_microdeposits_completedDescription: The two less than or equal to ten cent transfers to a Customer’s linked bank account were successful.
Timing: Occurs when micro-deposit are successful, usually within 1-2 business days of initiating them.customer_microdeposits_maxattemptDescription: The Customer has reached their max verification attempts, limit of three. The Customer can no longer verify their funding source with the completed micro-deposit amounts.
Timing: Occurs upon a POST request to the Verify micro-deposits endpoint with incorrect micro-deposit amounts.

Customers - Transfers #

Event Topic NameDescriptioncustomer_bank_transfer_createdDescription: A bank transfer was created for a Customer. Represents funds moving either from a verified Customer’s bank to the Dwolla Platform or from the Dwolla Platform to a verified Customer’s bank.
Timing: Occurs upon a POST request to the Initiate a transfer endpoint when sending funds from a Verified Customer’s bank, or when funds move from a receiving Verified Customer’s balance to their bank.customer_bank_transfer_cancelledDescription: A pending Customer bank transfer has been cancelled, and will not process further. Represents a cancellation of funds either transferring from a verified Customer’s bank to the Dwolla Platform or from the Dwolla Platform to a verified Customer’s bank.
Timing: Occurs upon a POST request to the Cancel a transfer endpoint, or when Dwolla manually cancels a transfer.customer_bank_transfer_failedDescription: A Customer bank transfer. Usually, this is a result of an ACH failure (insufficient funds, etc.). Represents a failed funds transfer either from a verified Customer’s bank to the Dwolla Platform or from the Dwolla Platform to a verified Customer’s bank.
Timing: Occurs when Dwolla marks a transfer as failed.customer_bank_transfer_creation_failedDescription: Transfers initiated to a verified Customer’s bank must pass through the verified Customer’s balance before being sent to a receiving bank. Dwolla will fail to create a transaction intended for a verified Customer’s bank if the funds available in the balance are less than the transfer amount.
Timing: Occurs when a transfer to a verified Customer’s bank fails to be created.customer_bank_transfer_completedDescription: A bank transfer that was created for a Customer was success. Represents a successful funds transfer either from a verified Customer’s bank to the Dwolla Platform or from the Dwolla Platform to a verified Customer’s bank.
Timing: Occurs when a funds transfer into the Dwolla Platform or a verified Customer’s bank is successful, based on the transfer processing
Timing used.customer_transfer_createdDescription: A transfer was created for a Customer. Represents funds transferring from a verified Customer’s balance or unverified Customer’s bank.
Timing: Occurs upon a POST request to the Initiate a transfer endpoint when sending funds from a verified Customer’s balance, or to/from an unverified Customer’s bank.customer_transfer_cancelledDescription: A pending transfer has been cancelled, and will not process further. Represents a cancellation of funds transferring either to an unverified Customer’s bank or to a verified Customer’s balance.
Timing: Occurs upon a POST request to the Cancel a transfer endpoint to cancel a transfer initiated from a verified Customer’s balance, or to/from an unverified Customer’s bank.customer_transfer_failedDescription: A Customer transfer failed. Represents a failed funds transfer either to an unverified Customer’s bank or to a verified Customer’s balance.
Timing: Occurs when Dwolla marks a transfer as failed.customer_transfer_completedDescription: A Customer transfer was successful. Represents a successful funds transfer either to an unverified Customer’s bank or to a verified Customer’s balance.
Timing: Occurs when a funds transfer into an unverified Customer’s bank or a verified Customer’s balance is successful, based on the transfer processing
Timing used.

Customers - Mass Payments #

Event Topic NameDescriptioncustomer_mass_payment_createdDescription: A verified Customer’s mass payment was created.
Timing: Occurs upon a POST request to the Initiate a mass-payment endpoint.customer_mass_payment_completedDescription: A verified Customer’s mass payment was completed. However, this doesn’t mean that each mass payment item’s transfer was successful.
Timing: Occurs when a mass payment job completes.customer_mass_payment_cancelledDescription: A Verified Customer’s created and deferred mass payment was cancelled.
Timing: Occurs upon a POST request to the Update a mass-payment endpoint when cancelling a mass payment job.

Test in the Sandbox for free today.

Use sandbox environment to test API requests.

Get API Keys
2020 All Rights Reserved

Dwolla

  • About
  • Blog
  • Pricing
  • Contact Sales
  • Terms of Service
  • Privacy Policy
Financial institutions play an important role in our network.

Dwolla, Inc. is an agent of Veridian Credit Union and all funds associated with your account in our network are held in one or more pooled accounts at Veridian Credit Union. These funds may not be eligible for share insurance by the National Credit Union Share Insurance Fund. Dwolla, Inc. is the operator of a software platform that communicates user instructions for funds transfers to Veridian Credit Union.

Sponsorship and Settlement of Push-to-Debit payment services provided by MetaBank®, N.A.
Push-to-Debit payments are typically available within 30 minutes.