Docs
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.

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-SHA-256 contains an HMAC SHA-256 hash based on the webhook payload and a key which is your webhook secret. The webhook signature should be processed and 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, resourceId, and conditionally a correlationId (see table below for more information).

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 to
idUnique 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.
correlationIdUnique ID that was specified, if any, when a transfer was created.
This value is only present for transfer and transfer-related webhooks.

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"
}

Customer related 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. A complete list of supported Events can be found in the API docs.

Customers #

Event Topic NameDescription
customer_createdDescription: A Customer was created.
Timing: Occurs upon a POST request to the Create a Customer endpoint.
customer_kba_verification_neededDescription: The retry identity verification attempt failed due insufficient scores on the submitted data. The end user will have a single kba attempt to answer a set of “out of wallet” questions about themselves for identity verification.
Timing: Occurs after a failed attempt to verify a Verified Customer Record.
customer_kba_verification_failedDescription: The end user failed KBA verification and was unable to correctly answer at least three KBA questions.
Timing: Triggered after a single attempt at verifying a Verified Customer Record using KBA.
customer_kba_verification_passedDescription: The end user was able to correctly answer at least three KBA questions.
Timing: Triggered after a Verified Customer Record successfully passes KBA requirements.
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 NameDescription
customer_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.
customer_beneficial_owner_verifiedDescription: A beneficial owner has been verified.
Timing: Occurs when a Beneficial Owner is verified by Dwolla upon a POST request to the Create a beneficial owner endpoint. In a case where the Beneficial Owner isn’t instantly verified upon creation, this event occurs when the Beneficial Owner is verified after an update, or after a document is approved.

Customers - Funding Sources #

Event Topic NameDescription
customer_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 drop-in components 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 POST request to the Verify micro-deposits endpoint with the corrent amounts, or when a funding source is added + verified via 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.
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_maxattemptsDescription: 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 the third POST request to the Verify micro-deposits endpoint with incorrect micro-deposit amounts.

Customers - Transfers #

For transfer webhooks, in addition to the default payload keys, a correlationId key-value pair may be present if a value was specified when the transfer was created.

Event Topic NameDescription
customer_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 NameDescription
customer_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.
customer_balance_inquiry_completedDescription: Upon checking a Customer's bank balance, Dwolla will immediately return an HTTP 202 with response body that includes a status of processing.
Timing: This event will be triggered when the bank balance check has completed processing.

Customers - Labels #

Event Topic NameDescription
customer_label_createdDescription: A Verified Customer’s label was created.
Timing: Occurs upon a POST request to the Create a label endpoint.
customer_label_ledger_entry_createdDescription: A ledger entry for a Verified Customer’s label was created.
Timing: Occurs upon a POST request to the Create a label ledger entry endpoint.
customer_label_removedDescription: A Verified Customer’s label was removed.
Timing: Occurs upon a POST request to the Remove a label endpoint.
Still haven’t found what you are looking for?
Ask the community.
Test in the Sandbox for free today.
Use sandbox environment to test API requests.
Get API Keys
2024 All Rights Reserved
Financial institutions play an important role in our network.

All funds transfers made using the Dwolla Platform are performed by a financial institution partner, and any funds held in a Dwolla Balance are held by a financial institution partner. Learn more about our financial institution partners.