TIN Verification

Taxpayer Identification Number (TIN) Verification enables you to confirm that a user's information is correct, in the eyes of the IRS, before submitting any tax documents or payments. Not verifying your user's TIN in advance increases the risk of missing due dates and incurring fines.


๐Ÿ“˜

TIN vs SSN vs ITIN vs EIN

TIN stands for Taxpayer Identification Number. Social Security Numbers (SSN), Individual Taxpayer Identification Number (ITIN) and Employer Identification Number (EIN) are all types of TINs.



Verification Requirements

To verify a user's legal name and TIN match, you must be the 1099 Issuer for that user.


If you are verifying SSNs or ITINs, the user model must include firstName, lastNameand socialSecurityNumber.

{
    "data": {
        "userId": "<<testUserId>>",
        "profile": {
            "firstName": "Ada",
            "lastName": "Lovelace",
            "socialSecurityNumber": "123456789"
        },
    }
}

If you are verifying EINs, the user model must include a business object with name and ein.

{
    "data": {
        "userId": "<<testUserId>>",
        "business": {
            "name": "InGen Corporation",
            "ein": "123456789"
        }
    }
}

โš 

TIN Verification is off by default in Production

TIN Verification is an app-level setting that can be turned on after talking with an Abound representative. TIN Verification is defaulted on in Sandbox to enable testing.



Checking if a TIN is verified

The SSN or EIN verification status can be found by fetching the user record and checking either the ssnVerification or einVerification objects

Below is an example response from a GET /users/{userId} call:

{
    "data": {
        "userId": "<<testUserId>>",
        "email": "[email protected]",
        "profile": {
            "firstName": "Ada",
            "lastName": "Lovelace",
            "socialSecurityNumber": "123456789"
        },
        "ssnVerification": {
            "status": "verified", // see possible statuses below
            "message": "SSN and legal name match."
        },
        "einVerification": {
            "status": "unverified", // see possible statuses below
        }
    }
}

๐Ÿ•ฐ๏ธ

Abound will attempt to verify TIN requests in real time, but in the event of a government outage we will queue for processing when those government services are made available.

Here are the possible values of the SSN or EIN verification statuses:

Verification StatusDescription
unverifiedA verification check has not been attempted.
verifiedThe IRS confirmed a successful match.
mismatchThe IRS confirmed there was no name + TIN match.
pendingThe verification has been queued and will be processed.
errorThis is a system-failure error and should rarely, if ever, occur.
lockedOutThis is typically a result from too many verification requests with an invalid name and TIN combination. The limit is 3 tries in 24 hours.

Testing verification statuses

In the sandbox environment, you can force specific verification statuses by passing certain values defined in Testing 1099 Documents in Sandbox



Triggering a new verification

A new TIN verification occurs whenever there is a new user created from a POST /user call or when a user's applicable information is updated on a PUT /user/{userId} call.



Webhooks

Webhooks will be trigged on all TIN verification status changes. Below is an example of the webhook request payload that would be sent to your URL when the users.updated event occurs:

{
  "resource": "users",
  "resourceId": "userId_0aa8b15c0cce59aa766156e6328798c80512131a",
  "resourceURL": "https://sandbox-api.withabound.com/<<apiVersion>>/users/userId_0aa8b15c0cce59aa766156e6328798c80512131a",
  "event": "users.updated",
  "userId": "userId_0aa8b15c0cce59aa766156e6328798c80512131a",
  "webhookId": "webhookId_XXXXXXXXXXXXXXX",
  "webhookURL": "https://webhook.site/e665ac70-4914-4d8b-ab48-fa2b47680b4a",
  "webhookRequestId": "webhookRequestId_YYYYYYYYYYYY"
}



Bulk Verifications

For bulk TIN verification requests please contact us.