RequestByEmail
RequestByEmail
This is a payer-initiated method where you can use our API to send an email request containing a unique secure URL to each payee (recipient) for completing Form W-9.
How it works
1. OAuth 2.0 Authentication
As with any TaxBandits API call, begin by authenticating through the OAuth 2.0 flow to obtain an access token. This token must be included in the request header as a Bearer token. Refer to the OAuth 2.0 Authentication guide for details on JWT authentication and token handling.
2. Create Business
Before initiating a W-9 request, ensure at least one business (payer) has been created using the Business endpoint. This is a mandatory step.
3. Call the [POST] FormW9/RequestByEmail Endpoint
Your request must include the following:
- Authorization Header - Include the Bearer token obtained from OAuth.
- Payee Email Address - The form completion secure URL will be sent here.
- Payee Reference (Optional) - A unique ID for referencing the payee in future API calls.
- Payee Name and Address (Optional) - If included, this info will be pre-filled in the form.
- Business Identifier (Optional) - Provide the BusinessId or TIN to identify the payer associated with the request. If omitted, the form will be tied to the first business in your account.
- DBA Reference (Optional) - Used to display a specific DBA name as the requester on the form.
- Customizations (Optional) - You may include branding customization in the request, such as logo, theme colors, etc, and the redirection URLs where you want the payee to be redirected once they submit the form. You may also include a 'CustomizationId' if you’ve generated one. Learn more
- Languages (Optional) – Specify the language for the form. Recipients can also change their preferred language if needed. Supported languages: English, French, Spanish, German, Ukrainian and Portuguese
4. Payee completes the form
TaxBandits will send an email with a secure URL to the payee. Upon clicking the secure URL, the payee can complete Form W-9, e-sign, and submit it.
5. Get notified
- Webhooks - If you’ve configured Webhooks for the event type 'Form W-9 Status Change' webhook, you will receive a webhook notification once the payee submits the form. The Webhook payload includes payee details (name, TIN, address) and a link to download the completed form. Learn more
- Status endpoint - Alternatively, you can also use the Status endpoint to retrieve the status.
- Web messaging - Instead of Webhooks, you can choose to receive notifications via web messaging. For more information, click here.
If you want to validate the TINs automatically once collected, you can set the IsTINMatching as TRUE in your request JSON.
POST FormW9/RequestByEmail Request Body
| Field | Type | Description |
|---|---|---|
| SubmissionManifest | object | SubmissionManifest provides brief information about submission and the services opted for. |
| IsTINMatching | Boolean | Optional TIN Matching will be enabled when the value is set as True. Once the recipient completes Form W-9, TaxBandits will match the Recipient's Name and SSN with the IRS database and notify the client via the webhook with the TIN results. |
| Requester | object | Collects the Requester identifier, i.e., TIN (or) Business ID/PayerRef generated by TaxBandits. If neither is supplied, the default Business will be assumed as the Requester. |
| PayerRef | String | Optional Unique payer identifier assigned by the client while requesting the payer information using the endpoint Business/RequestByEmail. Size Range: 1-50 |
| BusinessId | Guid | Optional TaxBandits Unique Business Identifier. This ID is generated by TaxBandits after you create a business in your account using the Business endpoint. If you do not provide the BusinessId in the request, then the URL will be generated against the default business, i.e., the first business created in your account. |
| TINType | String | OptionalTIN Type of the Requester. |
| TIN | String | Optional Taxpayer Identification Number. Use this as an alternate for BusinessId. (Values: EIN, SSN) Size Range: 9-11 Allowed values"EIN", "SSN" (Including hyphen) |
| DBAId | String | Optional Unique Identifier for the DBA. |
| DBARef | String | Optional Unique identifier for each DBA. This identifier can be used in future references of the DBA in the API. |
| Recipients | object[] | Collects the recipient's unique identifier and other basic information that will be pre-filled on the Form. |
| PayeeRef | String | Optional A unique identifier for each recipient completing the Form W-9 for future references. Size Range: 1-50 |
| Name | string | Name of the recipient. Size Range: ..40 |
| string | Email Address of the recipient. This is the email address to which the W-9 request email will be sent. Size Range: ..100 | |
| Address | Object | Collects US address details of the recipient. |
| Address1 | string | Optional Recipient US Address 1 (street address or post office box of that locality). This will be pre-filled on the Form. Size Range: ..46 |
| Address2 | string | Optional Recipient US Address 2 (suite or apartment number). This will be pre-filled on the Form. Size Range: ..46 |
| City | string | Optional Recipient US City. This will be pre-filled on the Form. Size Range: ..46 |
| State | string | Optional OptionalRecipient US State Code. This will be pre-filled on the Form. Size Range: 2 Allowed values"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", "AS", "FM", "GU", "MH", "MP", "PW", "PR", "VI", "AA", "AE", "AP" |
| ZipCd | string | Optional Recipient Zip Code. In the format 99999 or 99999-9999. This will be pre-filled on the Form. Size Range: 5..10 |
| WebhookRef | Guid | Optional A unique identifier of the Webhooks that TaxBandits generates against each Callback URL when adding it to the console site. If you pass the WebhookRef in the request JSON, we will post the webhook response to the corresponding Callback URL. If you don't pass one, the webhook response will be posted to the default Callback URL. |
| CustomizationId | Guid | Optional A unique identifier generated by TaxBandits upon completing the portal customization in the Developer Console, or returned in the response from the PortalCustomization/Create endpoint. |
| EmailCustomizationId | Guid | Optional A unique identifier generated by TaxBandits upon completing the email customization in the Developer Console, or returned in the response from the EmailCustomization/Create endpoint. |
| Customization | Object | Optional Collects the customizations like TIN service, Business Logo and Callback URLs. |
| BusinessLogoUrl | String | Optional Gets the Business Logo. If given the business logo will be shown in the Iframe page. Size Range: ..150 |
| LogoPosition | String | Optional Optional The position where your business logo will be placed on the page.Allowed values"LEFT", "CENTER", "RIGHT" |
| InterviewFlow | Boolean | Optional As an alternative to direct-form entry, provide your recipients with an interview-style W-9/W-8 completion. |
| PrimaryColor | String | Optional The color theme of the iframe page will be customized with this primary color. |
| SecondaryColor | String | Optional The color theme of the iframe page will be customized with this secondary color. |
| PrefLang | String | OptionalLanguage Preference of the formAllowed values"en-US", "es-ES", "fr-FR","de-DE","uk-UA","pt-PT" |
Response Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | A unique identifier of a submission. |
| Requester | Object | Requester information. |
| BusinessId | Guid | A unique identifier of the business. |
| BusinessNm | String | Requester Name. If the requester is a Business, then the Business Name will be returned. If the requester is an Individual, then the Payer’s full name will be returned. |
| FirstNm | String | First Name of the Individual Size Range: ..20 |
| MiddleNm | String | Middle Name of the Individual Size Range: ..20 |
| LastNm | String | Last Name of the Individual Size Range: ..20 |
| Suffix | String | Suffix of the Individual Allowed values"Jr", "Sr", "I", "II", "III", "IV", "V", "VI", "VII" |
| TINType | String | TIN Type of the Requester. |
| TIN | String | Taxpayer Identification Number of the requester. |
| DBAId | String | Unique Identifier for the DBA. |
| DBARef | String | Unique identifier for each DBA. This identifier can be used in future references of the DBA in the API |
| FormW9Records | Object | Details of Form W-9 requests given in the request. |
| SuccessRecords | Object[] | Recipients with no error in the request |
| PayeeRef | String | Unique identifier of the recipient. |
| String | Email Address of the recipient to which W-9 request was sent. | |
| W9Status | String | Status of the W-9 |
| StatusTs | String | Timestamp of the W-9 status |
| ErrorRecords | Object | Details of the recipients with errors |
| PayeeRef | String | A unique identifier of a recipient. |
| String | Email Address of the recipient given in the request | |
| Errors | object[] | Collection of errors for the recipient |
| Id | string | Error ID number. This ID is assigned by TaxBandits and it is unique for each error. |
| Name | string | Name of the errored node. |
| Message | string | Shows the error message. |
| Errors | object[] | Collection of errors in the request. Example :
|
| Id | string | Error ID number. This ID is assigned by TaxBandits and it is unique for each error. |
| Name | string | Name of the errored node. |
| Message | string | Shows the error message. |
Request JSON
- Sample 1
- Sample 2
- Sample 3
- Sample 4
- Sample 5
- Sample 6
- Sample 7
Pass the BusinessId, recipient’s name,email address and customizations. W-9 email requests will be triggered to recipients. (Make sure the Form W-9 Status Change Webhook is configured.)
{
"SubmissionManifest": {
"IsTINMatching": true
}
"Requester": {
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"PayerRef": null,
"TIN": null,
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "8987844654654654",
"Name": "Mark Davis",
"Email": "mark@sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
}
],
"WebhookRef":"99db0874-e749-48d6-b96f-de6447d03667",
"Customization": {
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png"}
}
Pass the BusinessId, recipient’s name, and email address. W-9 email requests will be triggered to recipients. (Make sure the Form W-9 Status Change Webhook is configured.)
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"PayerRef": null,
"TIN": null,
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "8987844654654654",
"Name": "Mark Davis",
"Email": "mark@sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
}
],
"WebhookRef": null,
}
Pass the Business TIN instead of BusinessId along with recipient information. (TIN must be associated with a business in the account.)
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": null,
"TIN": "22-2222222",
"TINType": "EIN",
"DBAId": null,
"DBARef": null
"PayerRef": "FJK123W"
},
"Recipients": [
{
"PayeeRef": "8987844654654654",
"Name": "Mark Davis",
"Email": "mark@sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
}
],
"WebhookRef": null
}
Pass just the recipient information without the Business (Requestor) details and request TIN Matching on the W-9 submissions. The recipients will be tied to the default business.
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": null,
"Recipients": [
{
"PayeeRef": "8987844654654654",
"Name": "Mark Davis",
"Email": "mark@sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
}
],
"WebhookRef": null,
}
Pass the W-9 request with an invalid email address format.
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": null,
"TIN": "22-2222222",
"TINType": "EIN",
"PayerRef": "FJK123W"
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "8987844654654658",
"Name": "Mark Davis",
"Email": "mark+sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
}
],
"WebhookRef": null,
}
RequestByEmail with DBA details
{
"SubmissionManifest": {
"IsTINMatching": false
},
"Requester": {
"BusinessId": null,
"PayerRef": null,
"TIN": null,
"DBAId": "dfb13337-f49b-42fb-b989-07c674a7b81c",
"DBARef": "#001"
},
"Recipients": [
{
"PayeeRef": "1452631",
"Name": "Mark Davis",
"Email": "mark@sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
},
{
"PayeeRef": null,
"Name": null,
"Email": "Geffry@sample.com",
"Address": {
"Address1": "1201 Milford Poston Rd",
"Address2": "Main St",
"City": "Dothan",
"State": "AL",
"ZipCd": "36303"
}
}
],
"WebhookRef": null,
"Customization": {
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png"
},
"RedirectUrls": {
"ReturnUrl": "https://example.com",
"CancelUrl": "https://example.com"
}
}
Request Email for Form W-9 with Payer Reference and opt for Customization and TIN Matching
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": "959763e4-26d3-4d52-a8eb-b954b22616fd",
"PayerRef": "Pay025",
"TIN": "865923062",
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "PayeeRef007",
"Name": "Mark Davis",
"Email": "markdavis@sample.com",
"Address": {
"Address1": "201 KATLIAN ST",
"Address2": "STE. 108",
"City": "SITKA",
"State": "AK",
"ZipCd": "99835"
}
}
],
"WebhookRef":"99db0874-e749-48d6-b96f-de6447d03667",
"CustomizationId": "0ecbdb4f-4cf0-440f-b412-8793eeaf6ee1",
"EmailCustomizationId": “2FF35B72-2EEF-466F-90EB-505FD250FD1L”,
"Customization": {
"InterviewFlow": true,
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "RIGHT",
"PrimaryColor": "#46E62D",
"SecondaryColor": "#1321E6",
"PrefLang": "es-ES"
}
}
Response JSON
- 200
- 400
- 401
Success Response - This is a sample response for successful API requests.
{
"SubmissionId": "54755d41-4883-4ae6-9bf5-48d8482b50a1",
"WebhookRef":"99db0874-e749-48d6-b96f-de6447d03667",
"Requester": {
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"PayerRef": "aATT12",
"BusinessNm": "Express Solutions",
"TINType": "EIN",
"TIN": "00-7711148",
"DBAId": null,
"DBARef": null
},
"FormW9Records": {
"SuccessRecords": [
{
"PayeeRef": "1",
"Email": "mark@sample.com",
"W9Status": "ORDER_CREATED",
"StatusTs": "2023-10-26 01:32:01 -04:00"
}
],
"ErrorRecords": null
},
"Errors": null
}
Bad Request Response - You'll get the below response when your API requests contain any validation errors.
{
"SubmissionId": null,
"WebhookRef": null,
"Requester": {
"BusinessId": "d2495f20-b809-41f9-b323-2da251749d9d",
"PayerRef": null,
"BusinessNm": "SnowDaze LLC",
"FirstNm": null,
"MiddleNm": null,
"LastNm": null,
"Suffix": null,
"TINType": "EIN",
"TIN": "32-2764877",
"DBAId": null,
"DBARef": null
},
"FormW9Records": {
"SuccessRecords": null,
"ErrorRecords": [
{
"PayeeRef": "Pe8374",
"Email": null,
"Errors": [
{
"Id": "F75-100031",
"Name": "Recipients.Email[0]",
"Message": "Email address is required"
}
]
}
]
},
"Errors": null
}
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"
}
]
}