Abound has comprehensive webhook support ensuring your system can stay in sync with activity across our entire 1099 automation platform.

Webhooks fire by sending a POST request to the URL you register after a subscribed event occurs. For added rigidity, webhooks will fire up to 3 times if your webhook URL returns a 4xx or 5xx server code.

Webhook events fire regardless of where the event originates. For example, this means a TIN_VERIFICATION_CREATED webhook could fire as a result of any of the following actions:

  • CSV data upload from within the Abound Dashboard
  • End-user submitting information in a Drop-In Component
  • A tin verification request directly to the Abound API

Registering a webhook

To register a webhook url and subscribe to specific events go to the Webhook page in the Abound Dashboard.

You will be able to give your webhook a nickname and control if its enabled or disabled.

Register as many webhook URLs as you need.


Webhook payloads

The body of each webhook POST call will have the following format:

JSON
1{
2 "id": "webhookLogId_sample4RMH0Ly5DQ",
3 "webhookId": "webhookId_samplexGCArf0Tcv",
4 "timestamp": "2023-01-01T00:00:00.000Z",
5 "event": "W_9_CREATED",
6 "resourceId": "documentId_sampleVppNzzIbQT",
7 "resourceUrl": "https://sandbox-api.withabound.com/v4/documents/w-9/documentId_sampleVppNzzIbQT"
8}

Validating webhooks

Included in every webhook POST call is the Abound-Signature header which contains a SHA-256 HMAC hash that can be used to validate the data has originated from Abound.

Below are examples on to use your webhook’s validationKey to sign and validate the payload of the webhook. You can find your webhook’s unique validationKey in the Abound Dashboard on the Webhook page.

1const { createHmac } = await import("crypto");
2
3// Header containing webhook signature
4const sigHeader = event.headers["Abound-Signature"];
5
6// Raw body of received request
7const rawBody = event.body;
8
9const hmac = createHmac("sha256", "YOUR_WEBHOOKS_VALIDATION_KEY");
10hmac.update(event.body);
11const sigGenerated = hmac.digest("hex");
12
13// Returns true if match
14return sigGenerated === sigHeader;

List of webhook events

Webhook events are API-resource specific. Here is a complete list of the webhook events we offer: