RequestByBusinessUrl
RequestByBusinessUrl
This method generates a single, public URL tied to a specific payer (business or DBA). Unlike the other request methods, this URL is not unique per recipient (payee) — it can be shared broadly, embedded on your website, or included in onboarding emails. Any recipient who completes the form through this URL is automatically linked to that payer in TaxBandits.
This is the most scalable collection method when you can't enumerate recipients in advance or want to minimize the number of API calls needed to collect forms.
When to use
- You are onboarding a large number of vendors and cannot issue individual URL requests for each one.
- You have a high volume of new vendors or contractors signing up regularly, and want a zero-touch collection path.
If you need each recipient to receive a personalized invitation with their name and details pre-filled, use RequestByEmail or RequestByUrl instead.
| RequestByEmail / RequestByText / RequestByUrl | RequestByBusinessUrl | |
|---|---|---|
| Who initiates | Payer—you trigger the request per recipient. | Recipient (Payee)—you publish the URL once, and they access it on their own. |
| URL scope | Unique per recipient. | Shared across all recipients. |
| API calls | Requires one API call per recipient. | After the initial URL generation, no API calls are required. |
How it works
Authenticate
Obtain a Bearer token via the OAuth 2.0 flow and include it in all request headers.
Ensure a business exists
Before calling this endpoint, confirm the payer has been created using the Business endpoint. If no
BusinessIdis provided in the request,you will receive an error.Call the endpoint
Your request may include the following optional parameters:
DBAId/DBARef— Scope the URL to a specific DBA under the business. The DBA name will appear as the requester on the form.UrlValidity— Set an expiration date for the URL.Customization— Apply your logo, primary/secondary colors, and logo position to brand the form page. Alternatively, pass aCustomizationIdgenerated from the Portal Customization endpoint.PrefLang— Specify the language for the form. Supported languages: English, French, Spanish, German, Ukrainian, and Portuguese.InterviewFlow— Present the W-9 as a guided interview rather than a traditional form.
Automate TIN MatchingSet
IsTINMatchingto TRUE to automatically trigger IRS TIN Matching once the recipient submits their form.Embed or share the URL
The API returns a
SecureUrlin the response — a public URL tied to the specified payer or DBA. Deploy the URL in your onboarding flow, a vendor self-service portal, an automated welcome email, or a QR code on a printed document.Since this is a public URL, we recommend you enable OTA verification in Developer Console → Settings → W-9/W-8 Settings to ensure secure submissions.
Recipient completes the form
When a recipient opens the URL, they are prompted to select the form appropriate for their status — W-9, W-8BEN, W-8BEN-E, W8IMY, W8EXP, or W-8ECI — and then complete, e-sign, and submit it.
Get notified
Once a recipient submits, you can receive the result through any of the following:
- Webhooks — Configure the 'WhCertificate Status Change' webhook event to receive a payload with the recipient's name, TIN, address, and a link to download the completed form Learn more.
- Status endpoint — Poll the Status endpoint on demand to retrieve the current form status for a given recipient.
- Web messaging — Receive in-browser notifications when a recipient completes their form Learn more.
Tracking submissions with URL parameterizationBecause all recipients share the same base URL, TaxBandits provides URL Parameterization to track individual submissions. Append your internal identifier (such as
PayeeRef) for each payee as a query parameter to associate the submissions with specific recipients. Learn more.
POST WhCertificate/RequestByBusinessUrl Request Body
| Field | Type | Description |
|---|---|---|
| SubmissionManifest | object[] | Contains submission details. |
| IsTINMatching | Boolean | Set to TRUE to automatically trigger IRS TIN Matching once the payee submits their form. |
| UrlValidity | string | Expiration date for the generated URL. After this date, the link is no longer accessible. Format: MM/DD/YYYY or MM-DD-YYYY Example: 01/25/2025 or 01-25-2025 |
| CustomizationId | Guid | A unique identifier for a saved customization profile, generated via the Developer Console or the PortalCustomization endpoint. Applies your branding to the form page. |
| Customization | object | Inline branding settings applied to the form page. Use this if you don't have a CustomizationId. |
| BusinessLogoUrl | string | URL of the logo to display on the form page. Maximum size: 150px |
| LogoPosition | string | Position of the logo on the form page. Allowed values"LEFT", "CENTER", "RIGHT" |
| PrimaryColor | string | Primary color for the form page, matched to your platform's color theme. |
| SecondaryColor | string | Secondary color for the form page. |
| InterviewFlow | Boolean | Set to TRUE to present the W-9 as a step-by-step interview instead of the traditional form layout. |
| PrefLang | String | Default display language for the form. Payees can change their preferences during completion.Allowed values"en-US", "es-ES", "fr-FR","de-DE","uk-UA","pt-PT" Defaults to “en-US”. |
| Requester | object | Identifies the payer associated with this URL. If omitted, the URL is generated for the default (first) business in your account. |
| BusinessId | Guid | TaxBandits' unique identifier for the payer, returned when the business was created. |
| PayerRef | string | Your own unique identifier for the payer, assigned when creating the business. Size Range: 1-50 |
| TIN | string | Taxpayer Identification Number of the payer. Allowed values"EIN", "SSN" (Including hyphen) |
| DBAId | Guid | Unique identifier for a specific DBA under the business. The DBA name will appear as the requester on the form. |
| DBARef | string | Your own reference identifier for the DBA. Can be used in future API calls to reference the same DBA. |
Response Body
| Field | Type | Description |
|---|---|---|
| SecureUrl | string | The public shared URL generated for the specified payer or DBA. Embed this in your portal or platform for payees to access. |
| Requester | object | Returns the payer identifiers associated with the generated URL. |
| BusinessId | Guid | TaxBandits’ unique identifier for the payer. |
| PayerRef | string | Your unique identifier for the payer, as provided in the request. |
| TIN | string | Taxpayer Identification Number of the payer. |
| DBAId | Guid | Unique identifier for the DBA, if the URL was scoped to one. |
| DBARef | string | Your reference identifier for the DBA, if provided in the request. |
| Errors | object[] | Array of error objects returned if the request fails. Null on success. |
| Id | string | TaxBandits-assigned unique identifier for the error. |
| Name | string | The name of the field or node where the error occurred. |
| Message | string | A description of the error. |
Request JSON
- Sample 1
- Sample 2
Generate a business URL scoped to a DBA
Scope the collection URL to a specific DBA so that the DBA's name appears as the requester on the form.
{
"SubmissionManifest": {
"IsTINMatching": true,
"UrlValidity": "08/27/2024",
"CustomizationId": "e4e3db3a-5032-4646-97d1-8d0837f43189",
"Customization": {
"BusinessLogoUrl": null,
"LogoPosition": null,
"InterviewFlow": false,
"PrimaryColor": null,
"SecondaryColor": null
}
},
"Requester": {
"BusinessId": "86b2ea22-c928-42ef-a5fe-545a09072fdc",
"PayerRef": null,
"TIN": "26-3537385",
"DBAId": "6aaba0bc-ec93-4a21-a600-f1733f76130e",
"DBARef": "Ref008"
}
}
Generate a business URL with TIN Matching and expiry
Publish a single collection URL for a payer that expires after your onboarding window closes, with TIN Matching triggered automatically on each submission.
{
"SubmissionManifest": {
"IsTINMatching": true,
"UrlValidity": "08/27/2026"
},
"Requester": {
"BusinessId": "38e7bfbf-787f-482a-b594-d1781b84506d",
}
}
Response JSON
- 200
- 400
- 401
Success Response - This is a sample response for successful API requests.
{
"SecureUrl": "https://snowda_388311.esignw9.com",
"Requester": {
"BusinessId": "99cdf439-8037-4fbf-a2d2-aad0409337d5",
"PayerRef": "pay5465",
"DBAId": null,
"DBARef": null
},
"Errors": null
}
Bad Request Response - You'll get the below response when your API requests contain any validation errors.
{
"SecureUrl": null,
"Requester": null,
"Errors": [
{
"Id": "F75-100096",
"Name": "BusinessIdorPayerReforTin",
"Message": "BusinessId or PayerRef or Tin is Required"
}
]
}
Unauthorized Response - You'll get the below response when your API requests don't contain valid authentication credentials.
{
"StatusCode": 401,
"StatusName": "Unauthorized",
"StatusMessage": "Invalid authorization credentials",
"Errors": [
{
"Id": "AUTH-100025",
"Name": "Authorization",
"Message": "Authorization should not be empty"
}
]
}