RequestByUrl
RequestByUrl
This is a payee-initiated method where the API generates a unique secure URL per recipient. You can share the URL directly with recipients or embed it in your platform as an iframe, and recipients can complete the form on their own.
When to use
- You want recipients to access and complete the form on their own, without sending a direct email or SMS invitation.
- You want to embed the form completion experience directly into your platform as an iframe, keeping recipients within your application.
If you want a single shared URL for all recipients under a payer, use RequestByBusinessUrl instead.
How it works
Authenticate
Obtain a Bearer token via the OAuth 2.0 flow and include it in all request headers.
Ensure a business (payer) exists
Before calling this endpoint, confirm the payer has been created using the Business endpoint. If no
BusinessIdis provided in the request, the request will be associated with the default payer (the first payer created in your account).Call the endpoint
Along with the payer and recipient details, your request may include the following optional parameters:
DBAId / DBARef— Scope the URL to a specific DBA under the payer. The DBA name will appear as the requester on the form.Customization— Apply your logo and primary/secondary colors to brand the form page. Alternatively, pass aCustomizationIdgenerated from the PortalCustomization endpoint.InterviewFlow— Set to TRUE to present the W-9 as a guided interview rather than a traditional form.ShowDownloadPage— Set to TRUE to give recipients the option to download their completed form.PrefLang— Specify the language for the form. Recipients can also change their preferred language if needed. Supported languages: English, French, Spanish, German, Ukrainian, and Portuguese.
Automate TIN MatchingSet
IsTINMatchingto TRUE to automatically trigger IRS TIN Matching once the recipient submits their form.Recipient completes the form
The API returns a
Urlin the response — a unique, recipient-specific secure URL. You can:- Embed it in your application or portal as an iframe.
- Share it directly with the recipient via your own email, SMS, or messaging system.
When the recipient opens the link, they select the applicable Form W-9 and complete, e-sign, and submit it.
Get notified
Once a recipient submits, you can receive notification through any of the following:
- Webhooks — Configure the 'Form W-9 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
POST FormW9/RequestByUrl Request Body
| Field | Type | Description |
|---|---|---|
| Requester | Object | Collects the Requestor identifier i.e., TIN or TaxBandits Business Id or PayerRef. 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/RequestByURL. 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. |
| TIN | String | OptionalTaxpayer Identification Number. Use this as an alternative for BusinessId or PayerRef. Size Range: 9-11 |
| DBAId | String | OptionalUnique Identifier for the DBA. |
| DBARef | String | OptionalA Unique identifier for each DBA. This identifier can be used in future references for the DBA in the API. Size Range: 1 - 50 |
| Recipient | Object | Collects the recipient's unique identifier and other basic information of the recipient that will be pre-filled on the Form. |
| PayeeRef | String | A unique identifier for each recipient completing the Form W-9 which will be used for future reference. Size Range: 1-50 |
| FedTaxClass | String | Optional Federal tax classification of the recipient. This will be pre-filled on the Form.Allowed values"INDIVIDUAL", "SOLE_PROPRIETOR", "C_CORPORATION", "S_CORPORATION", "PARTNERSHIP", "TRUST_ESTATE", "SINGLE_MEMBER_LLC_ELECTED", "SINGLE_MEMBER_LLC_NOT_ELECTED", "LLC_C_CORPORATION", "LLC_S_CORPORATION", "LLC_P_CORPORATION" |
| String | Email address of the recipient Size Range: ..100 | |
| Name | String | Optional Recipient Name. This will be pre-filled on the Form. Size Range: ..40 |
| IsForeign | Boolean | Optional Set to TRUE if the recipient has a foreign address. When TRUE, pass address details under ForeignAddress instead of USAddress. |
| 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 | OptionalRecipient US City. This will be pre-filled on the Form. Size Range: ..50 |
| State | String | 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 | OptionalRecipient Zip Code. In the format 99999 or 99999-9999. This will be pre-filled on the Form. Size Range: 5..10 |
| ForeignAddress | Object | Optional Recipient's foreign address. Required when IsForeign is TRUE. |
| Address1 | String | Optional Street address or PO Box. Size: 1–50 |
| Address2 | String | Optional Suite or apartment number. Size: 1–50 |
| City | String | Optional City. Size: 1–50 |
| ProvinceOrStateNm | String | Optional Province or state name. Size: 1–50 When the country code is CA Allowed values"Alberta", "British Columbia", "Manitoba", "New Brunswick", "Newfoundland and Labrador", "Northwest Territories", "Nova Scotia", "Nunavut", "Ontario", "Prince Edward Island", "Quebec", "Saskatchewan", "Yukon Territory" |
| Country | String | Optional Recipient's country code. Refer to Static values. Size Range: 2 Allowed values"AF", "AX", "AL", "AG", "AQ", "AN", "AO", "AV", "AY", "AC", "AR", "AM", "AA", "AT", "AS", "AU", "AJ", "BF", "BA", "FQ", "BG", "BB", "BO", "BE", "BH", "BN", "BD", "BT", "BL", "BK", "BC", "BV", "BR", "IO", "VI", "BX", "BU", "UV", "BM", "BY", "CB", "CM", "CA", "CV", "CJ", "CT", "CD", "CI", "CH", "KT", "IP", "CK", "CO", "CN", "CF", "CG", "CW", "CR", "CS", "IV", "HR", "CU", "UC", "CY", "EZ", "DA", "DX", "DJ", "DO", "DR", "TT", "EC", "EG", "ES", "EK", "ER", "EN", "ET", "FK", "FO", "FM", "FJ", "FI", "FR", "FP", "FS", "GB", "GA", "GG", "GM", "GH", "GI", "GR", "GL", "GJ", "GQ", "GT", "GK", "GV", "PU", "GY", "HA", "HM", "VT", "HO", "HK", "HQ", "HU", "IC", "IN", "ID", "IR", "IZ", "EI", "IS", "IT", "JM", "JN", "JA", "DQ", "JE", "JQ", "JO", "KZ", "KE", "KQ", "KR", "KN", "KS", "KV", "KU", "KG", "LA", "LG", "LE", "LT", "LI", "LY", "LS", "LH", "LU", "MC", "MK", "MA", "MI", "MY", "MV", "ML", "MT", "IM", "RM", "MR", "MP", "MX", "MQ", "MD", "MN", "MG", "MJ", "MH", "MO", "MZ", "WA", "NR", "BQ", "NP", "NL", "NC", "NZ", "NU", "NG", "NI", "NE", "NF", "CQ", "NO", "MU", "OC", "PK", "PS", "LQ", "PM", "PP", "PF", "PA", "PE", "RP", "PC", "PL", "PO", "RQ", "QA", "RO", "RS", "RW", "TB", "RN", "WS", "SM", "TP", "SA", "SG", "RI", "SE", "SL", "SN", "NN", "LO", "SI", "BP", "SO", "SF", "SX", "OD", "SP", "PG", "CE", "SH", "SC", "ST", "SB", "VC", "SU", "NS", "SV", "WZ", "SW", "SZ", "SY", "TW", "TI", "TZ", "TH", "TO", "TL", "TN", "TD", "TS", "TU", "TX", "TK", "TV", "UG", "UP", "AE", "UK", "UY", "UZ", "NH", "VE", "VM", "VQ", "WQ", "WF", "WI", "YM", "ZA", "ZI" |
| PostalCd | String | Optional Postal code. Size: 1–16 |
| IsTINMatching | Boolean | OptionalTIN 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. |
| 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 customization identifier generated by TaxBandits after you complete the customization process in the Developer console or the unique ID you received in the response of the PortalCustomization CREATE Endpoint. endpoint. Note: You can customize the W-9/W-8 page (secure URL) with your own logo, favicon, and primary and secondary colors. |
| Customization | Object | OptionalCollects 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 Gets the position in which the logo should be displayed.Allowed values“LEFT”, “CENTER”, “RIGHT” |
| InterviewFlow | Boolean | Optional If TRUE, your vendors will fill the W-9 in an interview flow instead of the traditional Form filling flow. |
| PrimaryColor | String | Optional Gets the primary color for the portal. You can use this to customize the color theme of the portal to match with your application color |
| SecondaryColor | String | Optional Gets the secondary color for the portal. You can use this to customize the color theme of the portal to match with your application color |
| RedirectUrls | Object | Collects the Redirect Urls as ReturnUrl and CancelUrl. |
| PrefLang | String | OptionalLanguage Preference of the formAllowed values"en-US", "es-ES", "fr-FR","de-DE","uk-UA","pt-PT" |
| ShowDownloadPage | Boolean | Optional If TRUE, your vendors will have the option to download the completed W-9 form. |
| RedirectUrls | Object | Collects the Redirect Urls as ReturnUrl and CancelUrl. |
| ReturnUrl | String | Optional Return Redirection URL. Set the callback URL redirection once the recipient completes filling the Form W-9. Size Range: ..150 |
| CancelUrl | String | Optional Cancel Redirection URL. Set the callback URL when the recipient clicks the cancel button on the Form W-9. Note: If you do not provide the Cancel Callback Redirection URL, the cancel button will not be shown to the recipient. Size Range: ..150 |
| RedirectTime | Number | Optional Redirection Time. Set the time before redirecting to the callback URL. Note: Redirect URL is measured in seconds. Size Range: 5-300 |
Response Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | Unique identifier of a submission. |
| PayeeRef | String | Unique identifier of the recipient. |
| W9Url | String | URL that can be accessed on its own or embedded on the client's website using Iframe or other means. |
| 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 |
Request Json
- Sample 1
- Sample 2
- Sample 3
- Sample 4
- Sample 5
Request URL with DBAId and DBARef details. The Recipient Address will be pre-filled in the form No Requester details were sent in and opted for TIN Matching.
{
"Requester": {
"PayerRef": "NGD123",
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"TIN": "20-1652371",
"DBAId": "97a16024-c7d2-41d7-92fe-103341d58fa0",
"DBARef": "DBA NGD123"
},
"Recipient": {
"PayeeRef": "SG7356",
"FedTaxClass": "INDIVIDUAL",
"Name": "David Smith",
"IsForeign": false,
"Address": {
"Address1": "1751 Kinsey Rd",
"Address2": "Main St",
"City": "Dothan",
"State": "AL",
"ZipCd": "36303"
},
"ForeignAddress": {
"Address1": "120 Bremner Blvd",
"Address2": "Suite 800",
"City": "Toronto",
"ProvinceOrStateNm": "Ontario",
"Country": "CA",
"PostalCd": "4168682600"
},
"IsTINMatching": true
},
"WebhookRef": "2E9C7CA0-F0CF-4257-99AA-7FD6CCFD9D4",
"Customization":null,
"RedirectUrls":null
}
Request URL with Payee Reference, Recipient details, Opted for TIN Matching and Customization with redirectionurl
{
"Requester": {
"PayerRef": "NGD123",
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"TIN": "20-1652371",
"DBAId": "97a16024-c7d2-41d7-92fe-103341d58fa0",
"DBARef": "DBA NGD123"
},
"Recipient": {
"PayeeRef": "123456",
"Name": "John",
"IsTINMatching": true
},
"WebhookRef": "2E9C7CA0-F0CF-4257-99AA-7FD6CCFD9D4",
"Customization": {
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "CENTER",
"InterviewFlow": true,
"PrimaryColor": "#E61A1A",
"SecondaryColor": "#18F244",
"ShowDownloadPage": true
},
"RedirectUrls": {
"ReturnUrl": "https://example.com",
"CancelUrl": "https://example.com",
"RedirectTime": 60
}
}
Request URL for Form W-9 with BusinessId and provided RedirectUrl.
{
"Requester": {
"PayerRef": "NGD123",
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"TIN": "20-1652371",
"DBAId": "97a16024-c7d2-41d7-92fe-103341d58fa0",
"DBARef": "DBA NGD123"
},
"Recipient": {
"PayeeRef": "123456",
"Name": "John",
"IsTINMatching": true
},
"WebhookRef": "2E9C7CA0-F0CF-4257-99AA-7FD6CCFD9D4",
"Customization": null,
"RedirectUrls": {
"ReturnUrl": "https://example.com",
"CancelUrl": "https://example.com"
}
}
Request URL with PayerRef and PayeeRef
Generate a secure URL using your own payer and recipient reference identifiers instead of TaxBandits-generated IDs.
{
"Requester": {
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8"
},
"Recipient": {
"PayeeRef": "ER001",
"Name": "John",
"IsTINMatching": true,
"FedTaxClass": "INDIVIDUAL",
"Email": "sample@bodeem.com"
},
"RedirectUrls": {
"ReturnUrl": "https://example.com",
"CancelUrl": "https://example.com"
}
}
Request URL with saved customization profile
Generate a secure URL with a pre-configured branding profile applied using a CustomizationId, so the form completion page reflects your platform's logo and color theme without passing inline customization settings.
{
"Requester": {
"PayerRef": "NGD123",
"BusinessId": "7746f0cd-e8eb-4428-9240-12ea84160ee8",
"TIN": "20-1652371",
"DBAId": "97a16024-c7d2-41d7-92fe-103341d58fa0",
"DBARef": "DBA NGD123"
},
"Recipient": {
"PayeeRef": "Pay457",
"Name": "John",
"IsTINMatching": true
},
"WebhookRef":"2E9C7CA0-F0CF-4257-99AA-7FD6CCFD9D4",
"CustomizationId": "0ecbdb4f-4cf0-440f-b412-8793eeaf6ee1",
"Customization": null,
"RedirectUrls": {
"ReturnUrl": "https://exampleweblink1.com",
"CancelUrl": "https://exampleweblink2.com"
}
}
Response JSON
- 200
- 400
- 401
Success Response - This is a sample response for successful API requests.
{
"SubmissionId": "6e3195f2-4a56-4349-bb19-69d5f1bb5393",
"PayeeRef": "123456",
"W9Url": "https://testlinks.taxbandits.io?uId=6ccae518-e6f8-4c1c-83d9-767bb9949a02",
"Errors": null
}
Bad Request Response - You'll get the below response when your API requests contain any validation errors.
{
"SubmissionId": null,
"PayeeRef": null,
"W9Url": null,
"Errors": [
{
"Id": "F75-100004",
"Name": "PayeeRef",
"Message": "PayeeReference is mandatory"
}
]
}
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"
}
]
}