Abound · Arazzo Workflow

Collect a W-9 and verify the payee TIN

Version 1.0.0

Create a user, collect their Form W-9, then run and read back a real-time TIN verification against the IRS.

1 workflow 1 source API 1 provider
View Spec View on GitHub CompanyTaxesTax ComplianceRegulatory ComplianceFinancial ServicesIdentity VerificationGovernmentDocumentsWebhooksRetiredArazzoWorkflows

Provider

abound

Workflows

collectW9AndVerifyTin
Onboard a payee, capture a W-9, and confirm the TIN matches before any 1099 is filed.
The pre-filing onboarding path. Create the end-user, collect a signed Form W-9, then create a TIN verification and poll it until status is MATCH. Put an Idempotency-Key on every POST.
4 steps inputs: idempotencyKey, tinVerification, w9 outputs: tinStatus, tinVerificationId, userId, w9DocumentId
1
createUser
usersCreate
Create the end-user the W-9 and 1099s will hang off.
2
collectW9
formW9Create
Collect and store the payee Form W-9. Kicks off a TIN verification if the name+TIN pair is new.
3
verifyTin
tinVerificationsCreate
Create an asynchronous TIN verification against the IRS.
4
readTinResult
tinVerificationsRetrieve
Read the verification back until status resolves to MATCH or MISMATCH (or subscribe to the TIN_VERIFICATION_MATCH webhook instead of polling).

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
# Native Arazzo workflow authored by the API Evangelist enrichment pipeline from the
# recovered first-party Abound v4 API definition (@withabound/node-sdk). Abound is retired;
# every operationId below is verified against openapi/abound-v4-openapi.yml.
# method: generated  source: openapi/abound-v4-openapi.yml
arazzo: 1.0.1
info:
  title: Collect a W-9 and verify the payee TIN
  version: '1.0.0'
  summary: Create a user, collect their Form W-9, then run and read back a real-time TIN verification against the IRS.
sourceDescriptions:
- name: abound
  url: ../openapi/abound-v4-openapi.yml
  type: openapi
workflows:
- workflowId: collectW9AndVerifyTin
  summary: Onboard a payee, capture a W-9, and confirm the TIN matches before any 1099 is filed.
  description: >-
    The pre-filing onboarding path. Create the end-user, collect a signed Form W-9, then create a
    TIN verification and poll it until status is MATCH. Put an Idempotency-Key on every POST.
  inputs:
    type: object
    properties:
      idempotencyKey:
        type: string
        description: Client-generated key echoed on every write to make retries safe.
      w9:
        type: object
        description: W9RequestSchema body (payee name, TIN or tinFingerprint, address, optional userId).
      tinVerification:
        type: object
        description: TinVerificationRequestSchema body (name + TIN or tinFingerprint, tinType).
  steps:
  - stepId: createUser
    description: Create the end-user the W-9 and 1099s will hang off.
    operationId: usersCreate
    requestBody:
      contentType: application/json
      payload:
        foreignId: $inputs.w9.userForeignId
    outputs:
      userId: $response.body#/id
  - stepId: collectW9
    description: Collect and store the payee Form W-9. Kicks off a TIN verification if the name+TIN pair is new.
    operationId: formW9Create
    parameters:
    - name: Idempotency-Key
      in: header
      value: $inputs.idempotencyKey
    requestBody:
      contentType: application/json
      payload: $inputs.w9
    outputs:
      w9DocumentId: $response.body#/id
  - stepId: verifyTin
    description: Create an asynchronous TIN verification against the IRS.
    operationId: tinVerificationsCreate
    parameters:
    - name: Idempotency-Key
      in: header
      value: $inputs.idempotencyKey
    requestBody:
      contentType: application/json
      payload: $inputs.tinVerification
    outputs:
      tinVerificationId: $response.body#/id
      initialStatus: $response.body#/status
  - stepId: readTinResult
    description: Read the verification back until status resolves to MATCH or MISMATCH (or subscribe to the TIN_VERIFICATION_MATCH webhook instead of polling).
    operationId: tinVerificationsRetrieve
    parameters:
    - name: tinVerificationId
      in: path
      value: $steps.verifyTin.outputs.tinVerificationId
    outputs:
      status: $response.body#/status
  outputs:
    userId: $steps.createUser.outputs.userId
    w9DocumentId: $steps.collectW9.outputs.w9DocumentId
    tinVerificationId: $steps.verifyTin.outputs.tinVerificationId
    tinStatus: $steps.readTinResult.outputs.status