Abound W-9 API

The W-9 API from Abound — 2 operation(s) for w-9.

OpenAPI Specification

abound-w-9-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Abound API - v4 1099-INT W-9 API
  version: '4'
  description: 'Abound was a US tax-compliance API for platforms and marketplaces: W-9 / W-8BEN / W-8BEN-E collection, real-time TIN verification against the IRS, and generation, filing, correction, voiding and physical mailing of Form 1099-NEC, 1099-MISC, 1099-K and 1099-INT with federal and state tax authorities.


    NOTE: This document is a mechanical conversion of the first-party Fern API Definition that Abound shipped inside its official npm package @withabound/node-sdk (v6.0.68). Abound was acquired and the service has been retired: the withabound.com DNS zone is fully de-delegated and the API hosts no longer resolve. This spec is preserved as a historical record of the API surface.'
  x-status: retired
servers:
- url: https://production-api.withabound.com
  description: Production (retired - host no longer resolves)
- url: https://sandbox-api.withabound.com
  description: Sandbox (retired - host no longer resolves)
security:
- bearerAuth: []
tags:
- name: W-9
paths:
  /v4/documents/w-9:
    get:
      operationId: formW9List
      tags:
      - W-9
      summary: List all W-9 documents
      description: Returns a list of W-9 documents.
      parameters:
      - name: page
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/Page'
      - name: payeeTinFingerprint
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/PayeeTinFingerprint'
      - name: payerTinFingerprint
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/PayerTinFingerprint'
      - name: userId
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/UserId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/W9Schema'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBadRequestSchema'
              example:
                errors:
                - field: metadata.key
                  message: Expected metadata.key to be of type string, but received number
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Internal Server Error
    post:
      operationId: formW9Create
      tags:
      - W-9
      summary: Create a W-9
      description: Creates a W-9 document and subsequently kicks off a TIN verification, if the name and TIN combo has not been used before.
      parameters:
      - name: Idempotency-Key
        in: header
        required: false
        schema:
          $ref: '#/components/schemas/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/W9RequestSchema'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/W9Schema'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBadRequestSchema'
              example:
                errors:
                - field: metadata.key
                  message: Expected metadata.key to be of type string, but received number
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Internal Server Error
  /v4/documents/w-9/{documentId}:
    get:
      operationId: formW9Retrieve
      tags:
      - W-9
      summary: Retrieve a W-9
      description: Retrieves the details of an existing W-9 document.
      parameters:
      - name: documentId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/DocumentId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/W9Schema'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBadRequestSchema'
              example:
                errors:
                - field: metadata.key
                  message: Expected metadata.key to be of type string, but received number
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorSchema'
              example:
                message: Internal Server Error
components:
  schemas:
    IdempotencyKey:
      type: string
      description: The unique key used to identify a request that has already been processed.
    PayerRequestSchema:
      allOf:
      - $ref: '#/components/schemas/AddressSchema'
      - type: object
        properties:
          name:
            type: string
            description: The payer's legal name (first + last) or business name.
          name2:
            type: string
            description: The payer's trade name, DBA name, or disregarded entity name, if different from `name`.
          tin:
            type: string
            description: The payer's tax identification number, commonly referred to as a TIN. No hyphens. Numerical digits only. Alternatively, you may pass the corresponding `tinFingerprint`.
            minLength: 9
            maxLength: 9
          phoneNumber:
            type: string
            description: The payer's phone number.
            pattern: ^\+?\d{10,15}$
        required:
        - name
        - phoneNumber
        - tin
      description: The payer of the document.
    Page:
      type: integer
      description: The specific page of results you're requesting. Responses are limited to a maximum of 100 records.
    TinTypeEnum:
      type: string
      enum:
      - INDIVIDUAL
      - BUSINESS
      description: The type of the TIN. `INDIVIDUAL` refers to SSNs, ITINs, or ATINs. While `BUSINESS` refers to EINs.
    ElectronicSignatureOfPayeeSchema:
      type: object
      properties:
        signature:
          type: string
          description: The signature of the payee.
        printedName:
          type: string
          description: The printed name of the payee.
        signedAt:
          type: string
          format: date-time
          description: The date and time in `ISO 8601` format of the signature.
        ipAddress:
          type: string
          description: The IP address of the payee when signing this document.
      required:
      - ipAddress
      - printedName
      - signature
      - signedAt
      description: The electronic signature of the payee.
    TinFingerprint:
      type: string
      description: Your unique token that points to a TIN.
    W9FormFieldsSchema:
      type: object
      properties:
        taxClassification:
          allOf:
          - $ref: '#/components/schemas/W9TaxClassificationSchema'
          description: The U.S. federal tax classification of the person.
        otherTaxClassification:
          type: string
          description: The tax classification of the payee if `taxClassification` is `OTHER`.
        hasIndirectForeignOwnership:
          type: boolean
          description: If your `taxClassification` is `PARTNERSHIP`, `TRUST`, `ESTATE`, or `LLC_PARTNERSHIP`, and you are providing this form to a partnership, trust, or estate in which you have an ownership interest, pass `true` if you have any foreign partners, owners, or beneficiaries.
        exemptPayeeCode:
          allOf:
          - $ref: '#/components/schemas/W9ExemptPayeeCodeSchema'
          description: The code to identify a payee that is exempt from backup withholding.
        exemptFatcaCode:
          allOf:
          - $ref: '#/components/schemas/W9ExemptFatcaCodeSchema'
          description: The code to identify a payee that is exempt from reporting under FATCA.
        accountNumbers:
          type: array
          items:
            type: string
          description: The account numbers to list on this W-9.
        isSubjectToBackupWithholding:
          type: boolean
          description: If the payee is subject to backup withholding, pass `true`.
        certifiedAt:
          type: string
          format: date-time
          description: The certification date and time in `ISO 8601` format. This field is deprecated. Please use `electronicSignature` instead.
          deprecated: true
        electronicSignature:
          allOf:
          - $ref: '#/components/schemas/ElectronicSignatureOfPayeeSchema'
          description: The electronic signature of the payee.
      required:
      - taxClassification
    PayerSchema:
      allOf:
      - $ref: '#/components/schemas/PayerRequestSchema'
      - type: object
        properties:
          tinFingerprint:
            $ref: '#/components/schemas/TinFingerprint'
          tinType:
            $ref: '#/components/schemas/TinTypeEnum'
          tinVerificationId:
            $ref: '#/components/schemas/TinVerificationId'
          tinVerificationStatus:
            $ref: '#/components/schemas/TinVerificationStatusEnum'
        required:
        - tinFingerprint
        - tinVerificationId
        - tinVerificationStatus
      description: The payer of the document.
    ErrorBadRequestSchema:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorBadRequestSchemaErrorsItem'
          description: The error message(s) associated with the response status code.
      required:
      - errors
    UserId:
      type: string
      description: The unique identifier for a single end-user of your application.
    TinVerificationStatusEnum:
      type: string
      enum:
      - MATCH
      - MISMATCH
      - PENDING
      description: The status of the TIN Verification.
    W9ExemptFatcaCodeSchema:
      type: string
      enum:
      - A
      - B
      - C
      - D
      - E
      - F
      - G
      - H
      - I
      - J
      - K
      - L
      - M
      - NOT_APPLICABLE
      description: The code to identify a payee that is exempt from reporting under FATCA.
    PayeeSchema:
      allOf:
      - $ref: '#/components/schemas/PayeeRequestSchema'
      - type: object
        properties:
          tinFingerprint:
            $ref: '#/components/schemas/TinFingerprint'
          tinType:
            $ref: '#/components/schemas/TinTypeEnum'
          tinVerificationId:
            $ref: '#/components/schemas/TinVerificationId'
          tinVerificationStatus:
            $ref: '#/components/schemas/TinVerificationStatusEnum'
        required:
        - tinFingerprint
        - tinVerificationId
        - tinVerificationStatus
      description: The payee of the document.
    W9TaxClassificationSchema:
      type: string
      enum:
      - INDIVIDUAL
      - SOLE_PROPRIETOR
      - C_CORPORATION
      - S_CORPORATION
      - PARTNERSHIP
      - TRUST
      - ESTATE
      - LLC_PARTNERSHIP
      - LLC_C_CORPORATION
      - LLC_S_CORPORATION
      - OTHER
      description: The U.S. federal tax classification of the person.
    AddressSchema:
      type: object
      properties:
        address:
          type: string
          description: The legal address.
        address2:
          type: string
          description: The second part of the legal address, such as an apartment or suite number.
        city:
          type: string
          description: The city associated with the street address. Required if `country` is `US`.
        state:
          type: string
          description: The two-letter character code for this state or US territory (`CA` for California, `ME` for Maine, `PR` for Puerto Rico). Required if `country` is `US`. If foreign, use the province.
        postalCode:
          type: string
          description: The postal code associated with the street address. Required to be a 5-digit numerical value if `country` is `US`. If foreign, use the foreign postal code.
        country:
          type: string
          description: The country adhering to `ISO 3166-2` standards.
          minLength: 2
          maxLength: 2
      required:
      - address
      - country
    DocumentId:
      type: string
      description: The unique identifier for an existing document.
    PayeeTinFingerprint:
      type: string
      description: Filters the list of documents based on the `payee.tinFingerprint` field.
    PayerTinFingerprint:
      type: string
      description: Filters the list of documents based on the `payer.tinFingerprint` field.
    W9Schema:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the W-9 document.
        createdAt:
          type: string
          format: date-time
          description: The date and time in `ISO 8601` format when the W-9 document was created.
        url:
          type: string
          description: The URL to the W-9 document.
        payee:
          $ref: '#/components/schemas/PayeeSchema'
        payer:
          $ref: '#/components/schemas/PayerSchema'
        formFields:
          $ref: '#/components/schemas/W9FormFieldsSchema'
        userId:
          $ref: '#/components/schemas/UserId'
      required:
      - createdAt
      - formFields
      - id
      - payee
      - url
      examples:
      - id: documentId_sampleVppNzzIbQT
        createdAt: '2024-01-01T00:00:00.000Z'
        url: https://tax-documents-sandbox.s3.us-west-2.amazonaws.com/FORM-W-9.pdf
        payee:
          name: Ada Lovelace
          address: 1401 N Shoreline Blvd
          address2: Suite 1
          city: Mountain View
          country: US
          postalCode: '94043'
          state: CA
          tin: '*******00'
          tinType: INDIVIDUAL
          tinFingerprint: tinFingerprint_samplehy2BWO6JJG
          tinVerificationId: tinVerificationId_sample41SD71AV8f
          tinVerificationStatus: MATCH
        formFields:
          accountNumbers:
          - '1234567890'
          - '1234567891'
          taxClassification: INDIVIDUAL
          isSubjectToBackupWithholding: false
          electronicSignature:
            signature: Ada Lovelace
            printedName: Ada Lovelace
            signedAt: '2024-01-01T00:00:00.000Z'
            ipAddress: 127.0.0.1
    PayeeRequestSchema:
      allOf:
      - $ref: '#/components/schemas/AddressSchema'
      - type: object
        properties:
          name:
            type: string
            description: The payee's legal name (first + last) or business name.
          name2:
            type: string
            description: The payee's trade name, DBA name, or disregarded entity name, if different from `name`.
          tin:
            type: string
            description: The payee's tax identification number, commonly referred to as a TIN. No hyphens. Numerical digits only. Alternatively, you may pass the corresponding `tinFingerprint`.
            minLength: 9
            maxLength: 9
        required:
        - name
        - tin
      description: The payee of the document.
    DefaultErrorSchema:
      type: object
      properties:
        message:
          type: string
          description: The error message associated with the response status code.
      required:
      - message
    TinVerificationId:
      type: string
      description: The unique identifier for the TIN Verification.
    W9RequestSchema:
      type: object
      properties:
        payee:
          $ref: '#/components/schemas/PayeeWithOptionalTinTypeRequestSchema'
        payer:
          $ref: '#/components/schemas/PayerRequestSchema'
        formFields:
          $ref: '#/components/schemas/W9FormFieldsSchema'
        userId:
          $ref: '#/components/schemas/UserId'
      required:
      - formFields
      - payee
      examples:
      - payee:
          name: Ada Lovelace
          address: 1401 N Shoreline Blvd
          address2: Suite 1
          city: Mountain View
          country: US
          postalCode: '94043'
          state: CA
          tin: '000000000'
          tinType: INDIVIDUAL
        formFields:
          taxClassification: INDIVIDUAL
          isSubjectToBackupWithholding: false
          electronicSignature:
            signature: Ada Lovelace
            printedName: Ada Lovelace
            signedAt: '2024-01-01T00:00:00.000Z'
            ipAddress: 127.0.0.1
    W9ExemptPayeeCodeSchema:
      type: string
      enum:
      - '1'
      - '2'
      - '3'
      - '4'
      - '5'
      - '6'
      - '7'
      - '8'
      - '9'
      - '10'
      - '11'
      - '12'
      - '13'
      description: The code to identify a payee that is exempt from backup withholding.
    PayeeWithOptionalTinTypeRequestSchema:
      allOf:
      - $ref: '#/components/schemas/PayeeRequestSchema'
      - type: object
        properties:
          tinType:
            $ref: '#/components/schemas/TinTypeEnum'
      description: The payee of the document.
    ErrorBadRequestSchemaErrorsItem:
      type: object
      properties:
        field:
          type: string
          description: The field that caused the error.
        message:
          type: string
          description: The error message associated with the field.
      required:
      - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token. The token is the concatenation of your Abound appId and appSecret separated by a period, e.g. `appId_xxx.appSecret_yyy`.