RequestByText
RequestByText
This is a payer-initiated method where the API sends a secure, personalized text message to each recipient containing a unique URL to complete their W-9 or W-8 form. Every URL is scoped to that specific recipient and cannot be accessed by anyone else.
You must provide the recipient's phone number in the request. If no country code is provided, the US country code is used by default.
When to use
- Your recipients are more likely to respond to an SMS than an email.
- You are collecting forms from recipients outside the US and have their country phone codes available.
If you want to reach recipients via email, use RequestByEmail 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.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
TaxBandits sends the SMS to each recipient. When they open the link, they select the applicable form — W-9, W-8BEN, W-8BEN-E, W-8ECI, W-8IMY, or W-8EXP — 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 '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
POST WhCertificate/RequestByText Request Body
| Field | Type | Description |
|---|---|---|
| SubmissionManifest | Object | Submission-level settings for this request. |
| IsTINMatching | Boolean | Optional Set to TRUE to automatically trigger IRS TIN Matching once the recipient submits their W-9. |
| Requester | Object | Identifies the payer associated with this request. If omitted, the default payer in your account is used. |
| PayerRef | String | Optional Your unique identifier for the payer. Size: 1-50 |
| BusinessId | Guid | Optional TaxBandits-generated unique identifier for the payer. |
| TIN | String | Optional Taxpayer Identification Number of the payer. Can be used in place of BusinessId or PayerRef.Size: 9-11 |
| DBAId | String | Optional Unique identifier for the DBA. The DBA name appears as the requester on the form. |
| DBARef | String | Optional Your reference identifier for the DBA. Size: 1-50 |
| Recipient | Object[] | List of recipients to send the text request to. Each element represents one recipient. |
| PayeeRef | String | Optional Your unique identifier for the recipient, used to reference them in future API calls. Size: 1-50 |
| Name | String | Optional Recipient's name. Pre-filled on the form. Size: 1-50 |
| Phone | String | Mobile phone number of the recipient. The collection SMS is sent to this number. Size: 4-16 |
| CountryPhoneCode | String | Optional Recipient's country phone code. Defaults to the US country code if not provided. Size: 2 |
| Address | Object | Optional Recipient's mailing address. Pre-filled on the form. |
| Address1 | String | Optional Street address or PO Box. Size: 1-46 |
| Address2 | String | Optional Suite or apartment number. Size: 1-46 |
| City | String | Optional City. Size: 1-46 |
| State | String | Optional Two-letter state code. Size: 2 |
| ZipCd | String | Optional ZIP code. Format: 99999 or 99999-9999. Size: 5-10 |
| WebhookRef | Guid | Optional Unique identifier for a specific webhook callback URL configured in the Developer Console. If omitted, the response is posted to the default callback URL. |
| CustomizationId | Guid | Optional 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 | Optional Inline branding settings for the form completion page. Use this if you do not have a CustomizationId. |
| BusinessLogoUrl | String | Optional URL of the logo to display on the form page. Size: 1-150 |
| LogoPosition | String | Optional Position of the logo on the form page.Allowed values"LEFT", "CENTER", "RIGHT" |
| InterviewFlow | Boolean | Optional Set to TRUE to present the W-9 as a guided step-by-step interview instead of the traditional form layout. |
| PrimaryColor | String | Optional Primary brand color for the form page. |
| SecondaryColor | String | Optional Secondary brand color for the form page. |
| PrefLang | String | Optional Default display language for the form. Defaults to English if not set.Allowed values"en-US", "es-ES", "fr-FR", "de-DE", "uk-UA", "pt-PT" |
Response Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | TaxBandits-generated unique identifier for this submission. |
| Requester | Object | Payer details associated with this request. |
| BusinessId | Guid | TaxBandits-generated unique identifier for the payer. |
| BusinessNm | String | Payer name. Returns the business name if the payer is an entity, or the full name if the payer is an individual. |
| FirstNm | String | First name of the payer (individual). Size: 1-20 |
| MiddleNm | String | Middle name of the payer (individual). Size: 1-20 |
| LastNm | String | Last name of the payer (individual). Size: 1-20 |
| Suffix | String | Suffix of the payer (individual). |
| PayerRef | String | Your unique identifier for the payer. |
| TINType | String | TIN type of the payer. |
| TIN | String | Taxpayer Identification Number of the payer. |
| DBAId | String | Unique identifier for the DBA. |
| DBARef | String | Your reference identifier for the DBA. |
| WhCertificate | Object | Results of the W-9/W-8 collection requests submitted in this call. |
| SuccessRecords | Object[] | Recipients for whom the request was successfully processed. |
| PayeeRef | String | Your unique identifier for the recipient. |
| Phone | String | Mobile number to which the SMS was sent. |
| CountryPhoneCode | String | Country phone code of the recipient. |
| WhCertificateStatus | String | Current status of the W-9/W-8 request. |
| StatusTs | String | Timestamp of the last status update. |
| ErrorRecords | Object[] | Recipients for whom the request failed. |
| PayeeRef | String | Your unique identifier for the failed recipient. |
| Phone | String | Mobile number provided for the failed recipient. |
| CountryPhoneCode | String | Country phone code provided for the failed recipient. |
| Errors | Object[] | List of error details for this recipient. |
| Id | String | TaxBandits-assigned error code. |
| Name | String | Field or node that triggered the error. |
| Message | String | Human-readable error description. |
| Errors | Object[] | Top-level errors that prevented the entire submission from being processed. Null on success. |
| Id | String | TaxBandits-assigned error code. |
| Name | String | Field or node that triggered the error. |
| Message | String | Human-readable error description. |
Request JSON
- Sample 1
- Sample 2
- Sample 3
Send a text request to a recipient linked to a specific payer
Send a W-9/W-8 collection SMS to a recipient's mobile number and associate the completed form with a specific payer using BusinessId.
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": "959763e4-26d3-4d52-a8eb-b954b22616fd",
"PayerRef": null,
"TIN": null,
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "ER001",
"Name": "Shawn Williams",
"CountryPhoneCode": "US",
"Phone": "5897657876"
}
],
"WebhookRef": null,
"CustomizationId": null,
"Customization": null
}
Send a text request using your own payer and recipient identifiers
Send a W-9/W-8 collection SMS using your own PayerRef and PayeeRef instead of TaxBandits-generated IDs
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": null,
"PayerRef": "PayerRef01",
"TIN": null,
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "ER001",
"Name": "Shawn Williams",
"CountryPhoneCode": "US",
"Phone": "5687657876",
"Address": {
"Address1": "1751 Kinsey Rd",
"Address2": "Main St",
"City": "Dothan",
"State": "AL",
"ZipCd": "36303"
}
}
],
"WebhookRef": null,
"CustomizationId": null,
"Customization": {
"InterviewFlow": true,
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "CENTER",
"PrimaryColor": "#1321E6",
"SecondaryColor": "#0F700C",
"PrefLang": null
}
}
Send a text request using the payer's TIN
Send a W-9/W-8 collection SMS and identify the payer using their TIN instead of a BusinessId or PayerRef.
{
"SubmissionManifest": {
"IsTINMatching": true
},
"Requester": {
"BusinessId": null,
"PayerRef": null,
"TIN": "67-8976578",
"DBAId": null,
"DBARef": null
},
"Recipients": [
{
"PayeeRef": "ER001",
"Name": null,
"CountryPhoneCode": "US",
"Phone": "4567657876",
"Address": {
"Address1": "1751 Kinsey Rd",
"Address2": "Main St",
"City": "Dothan",
"State": "AL",
"ZipCd": "36303"
}
}
],
"WebhookRef": null,
"CustomizationId": null,
"Customization": {
"InterviewFlow": true,
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "CENTER",
"PrimaryColor": "#1321E6",
"SecondaryColor": "#0F700C",
"PrefLang": null
}
}
Response JSON
- Response 1
- Response 2
- Response 3
{
"SubmissionId": "2d1797a2-5e56-4da4-a59d-e82e858ffbd8",
"Requester": {
"BusinessId": "9e284b90-aa98-4287-8e9a-38cc590a90d3",
"BusinessNm": "Snowdaze LLC",
"PayerRef": "Pe12rtgr3",
"TINType": "EIN",
"TIN": "39-4589707"
},
"WhCertificate": {
"SuccessRecords": [
{
"PayeeRef": "T@122",
"Phone": "5687657876",
"CountryPhoneCode": "US",
"WhCertificateStatus": "ORDER_CREATED",
"StatusTs": "2025-06-14 07:05:18 +05:30"
},
{
"PayeeRef": "mia@345",
"Phone": "5687657746",
"CountryPhoneCode": "US",
"WhCertificateStatus": "ORDER_CREATED",
"StatusTs": "2025-06-14 07:05:18 +05:30"
}
],
"ErrorRecords": null
},
"Errors": null
}
{
"SubmissionId": "09bddc72-5111-414a-ad6c-923140452e2e",
"Requester": {
"BusinessId": "2f7db6c1-c7aa-4dd0-8ae3-e45e4c5db106",
"BusinessNm": "Snowdaze LLC",
"PayerRef": "96459",
"TINType": "EIN",
"TIN": "39-4589707",
"DBAId": "dfb13337-f49b-42fb-b989-07c674a7b81c",
"DBARef": "#001"
},
"WhCertificate": {
"SuccessRecords": [
{
"PayeeRef": "1452631",
"Phone": "5687651426",
"CountryPhoneCode": "US",
"WhCertificateStatus": "ORDER_CREATED",
"StatusTs": "2024-04-03 08:38:09 -04:00"
}
],
"ErrorRecords": null
},
"Errors": null
}
{
"SubmissionId": "d57512a3-775d-4395-ad84-4d262e2d8aeb",
"Requester": {
"BusinessId": "959763e4-26d3-4d52-a8eb-b954b22616fd",
"BusinessNm": "Snowdaze LLC",
"FirstNm": null,
"MiddleNm": null,
"LastNm": null,
"Suffix": null,
"PayerRef": "Pay025",
"TINType": "EIN",
"TIN": "86-5923062",
"DBAId": null,
"DBARef": null
},
"WhCertificate": {
"SuccessRecords": [
{
"PayeeRef": "payeeref016",
"Phone": "5687655478",
"CountryPhoneCode": "US",
"WhCertificateStatus": "ORDER_CREATED",
"StatusTs": "2024-09-18 01:50:38 -04:00"
}
],
"ErrorRecords": null
},
"Errors": null
}