Skip to content
Staircase

Income

Income verification and derivation across a vendor roster, with a model-based derivation path routed as one more vendor.

A caller sends a borrower. The product works down the ordering below and returns canonical income records — employer, pay frequency, amounts, and the period each covers.

Where no vendor holds a record, a derivation path reads the documents already attached to the file and produces income figures from them. It sits in the same ordering as the data vendors rather than in a separate branch.

How it works

Derivation is routed as a vendor rather than run as a fallback mode. A caller receives the same response shape either way, and the record carries which vendor produced it, so a downstream qualification step can weigh a derived figure differently without a second code path.

Income and employment are separate products because they answer separate questions and their vendor rosters differ, even though several vendors appear on both.

Dual listing

Income is filed under two categories. The other listing is Income under Automation, and neither listing carries a recorded specification.

Operations

Partners

GET /partners

Retrieve Partners

retrievePartners

Retrieve Partners retrieves an object containing all active partners for income verification and details about the partner. Use the partner property to invoke the partner directly in the product invocation.

Response
application/json

Successfully returned the partner object

[
  {
    "partner": "partner_name_1",
    "active": true,
    "byoc": true,
    "order": 1,
    "status": "active",
    "verification_type": "borrower"
  },
  {
    "partner": "partner_name_2",
    "active": true,
    "byoc": false,
    "order": 2,
    "status": "active",
    "verification_type": "instant"
  },
  {
    "partner": "partner_name_3",
    "active": false,
    "byoc": true,
    "order": 3,
    "status": "upcoming",
    "verification_type": "manual"
  }
]
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Response 200application/json
6 fields

Successfully returned the partner object

FieldTypeDescription
byocbooleanIf value is set to "True", customer must add its own partner credentials to be able to use this partner for verification.
activebooleanIf set to "True" partner can be used for verification. If set to "False" partner will be disabled for verification and excluded from the waterfall.
statusstringParameter for documentation. Can be set to "active" and "upcoming".
verification_typestringIf value is set to "borrower", borrower needs to authorize verification process via provided URL. Whether value is set to "instant", verification process is done without any third party interventions. If value is set to "manual", verification process needs to be approved manually by selected data partner (Truework partner only).borrowerinstantmanual
partnerstringPartner name.
orderintegerOrder value provides priority on waterfall execution, where number 1 represents the highest priority and such will be executed first in the waterfall feature.
Other responses

403

GET /product/income/partners

Retrieve Product Partners

getVendors

Retrieve Partners retrieves:

-All the Partners (vendors) configured in the Product Flows configurations.

-The Order of the partner in the Product Waterfall Settings or default order in Product Flows if Product Waterfall was not configured.

-The status of the partners as active/upcoming according to the configurations of the product flows of these partners (partner will be active if at least one flow is active).'

Response
application/json

Successfully returned the partner object

[
  {
    "partner": "partner_name_1",
    "active": true,
    "byoc": true,
    "order": 1,
    "status": "active",
    "verification_type": "borrower"
  },
  {
    "partner": "partner_name_2",
    "active": true,
    "byoc": false,
    "order": 2,
    "status": "active",
    "verification_type": "instant"
  },
  {
    "partner": "partner_name_3",
    "active": false,
    "byoc": true,
    "order": 3,
    "status": "upcoming",
    "verification_type": "manual"
  }
]
Parameters
2
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
active boolean query false Include vendors with active product flows
Response 200application/json
6 fields

Successfully returned the partner object

FieldTypeDescription
byocbooleanIf value is set to "True", customer must add its own partner credentials to be able to use this partner for verification.
activebooleanIf set to "True" partner can be used for verification. If set to "False" partner will be disabled for verification and excluded from the waterfall.
statusstringParameter for documentation. Can be set to "active" and "upcoming".
verification_typestringIf value is set to "borrower", borrower needs to authorize verification process via provided URL. Whether value is set to "instant", verification process is done without any third party interventions. If value is set to "manual", verification process needs to be approved manually by selected data partner (Truework partner only).borrowerinstantmanual
partnerstringPartner name.
orderintegerOrder value provides priority on waterfall execution, where number 1 represents the highest priority and such will be executed first in the waterfall feature.
Other responses

403

GET /partners/ordering

Retrieve Partners Ordering

getPartnersOrdering

Get Partners Ordering

Retrieve Partners Ordering returns the partner ordering, for Verification Income waterfall execution.

Product will execute waterfall process only in case you are using default as partner parameter (instead of partner name) for Verify Income

For example if partner5 has order set to 1 we will try to use it before partner1 with order set to 2.

Response
application/json

Successfully received ordering of the partners

[
  {
    "partner": "partner1",
    "order": 1
  },
  {
    "partner": "partner2",
    "order": 2
  }
]
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Response 200application/json
1 fields

Successfully received ordering of the partners

FieldTypeDescription
partner_orderobjectPartner and order
partnerstringExample partner1
ordernumberExample 1
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
GET /products/income/partners/ordering

Retrieve Partners Ordering

getPartnersOrdering

Get Partners Ordering

Retrieve Partners Ordering returns the partner ordering, for Verification Income waterfall execution.

Product will execute waterfall process only in case you are using default as partner parameter (instead of partner name) for Verify Income

For example if partner5 has order set to 1 we will try to use it before partner1 with order set to 2.

Response
application/json

Successfully received ordering of the partners

[
  {
    "partner": "partner1",
    "order": 1
  },
  {
    "partner": "partner2",
    "order": 2
  }
]
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Response 200application/json
1 fields

Successfully received ordering of the partners

FieldTypeDescription
partner_orderobjectPartner and order
partnerstringExample partner1
ordernumberExample 1
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
PUT /partners/ordering

Update Partners Ordering

updatePartnersOrdering

Update Partners Order updates the order of execution during Verify Income for all partners in the product.

We allow our customers an option to use preferred partner in ordering they select. Ordering with lower number has priority in product execution.

Request
application/json
{
  "ordering": [
    {
      "partner": "partner1",
      "order": 1
    },
    {
      "partner": "partner2",
      "order": 10
    }
  ]
}
Response
application/json

Successfully updated order for partners

{
  "message": "Partner ordering updated!"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Request bodyapplication/json
1 fields
FieldTypeDescription
orderingobject[]
partnerstringPartner nameExample wage
ordernumberPartner orderExample 1
Response 200application/json
1 fields

Successfully updated order for partners

FieldTypeDescription
messagestringPartner ordering updated!
Response 400application/json
1 fields

Failed to update the partner from one of the reasons

FieldTypeDescription
messagestringPartner doesn't exist in database
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
PUT /products/income/partners/ordering

Update Partners Ordering

updatePartnersOrdering

Update Partners Order updates the order of execution during Verify Income for all partners in the product.

We allow our customers an option to use preferred partner in ordering they select. Ordering with lower number has priority in product execution.

Request
application/json
{
  "ordering": [
    {
      "partner": "partner1",
      "order": 1
    },
    {
      "partner": "partner2",
      "order": 10
    }
  ]
}
Response
application/json

Successfully updated order for partners

{
  "message": "Partner ordering updated!"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Request bodyapplication/json
1 fields
FieldTypeDescription
orderingobject[]
partnerstringPartner nameExample wage
ordernumberPartner orderExample 1
Response 200application/json
1 fields

Successfully updated order for partners

FieldTypeDescription
messagestringPartner ordering updated!
Response 400application/json
1 fields

Failed to update the partner from one of the reasons

FieldTypeDescription
messagestringPartner doesn't exist in database
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
GET /partners/{partner}/schema

Retrieve Partner Credentials Schema

getPartnerSchema

Retrieve Partner Credentials Schema retrieves the required partner schema for credentials.

Response
application/json

Successfully returned the partner schema object

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "http://example.com/example.json",
  "type": "object",
  "title": "Partner root schema",
  "description": "Partner credentials schema for connector flows.",
  "webhook": false,
  "default": {},
  "examples": [
    {
      "key1": "value1",
      "key2": "value2"
    }
  ],
  "required": [
    "key1",
    "key2"
  ],
  "properties": {
    "key1": {
      "$id": "#/properties/key1",
      "type": "string",
      "title": "Partner key1 schema",
      "description": "Partner key1",
      "default": "",
      "examples": [
        "value1"
      ]
    },
    "key2": {
      "$id": "#/properties/key2",
      "type": "string",
      "title": "Partner key2 schema",
      "description": "Partner key2",
      "default": "",
      "examples": [
        "value2"
      ]
    }
  },
  "additionalProperties": true
}
Parameters
2
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
partner required string path partner_name Name of the partner for which we wan't to retrieve schema
Response 200application/json
10 fields

Successfully returned the partner schema object

FieldTypeDescription
schemastringSchema URL
idstringSchema ID
typestringJSON type
titlestringSchema title
descriptionstringSchema description
webhookbooleanValue that indicates if partner requires webhook setup
defaultobjectDefault value for schema
examplesobject[]List of examples
key1stringExample 1
key2stringExample 2
requiredstring[]Required fields
propertiesobjectProperties of Schema
key1objectKey 1 Schema
idstringProperty ID
typestringProperty value type
titlestringTitle for property
descriptionstringDescription for property
defaultstringDefault value if exists
examplesstring[]List of examples for given property
key2objectKey 2 Schema
idstringProperty ID
typestringProperty value type
titlestringTitle for property
descriptionstringDescription for property
defaultstringDefault value if exists
examplesstring[]List of examples for given property
Response 400application/json
1 fields

Bad Request

FieldTypeDescription
messagestringPartner not found
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
PUT /partners/{partner}/status

Update Partner Status

updatePartnerStatus

Update Partner Status updates the active parameter of a partner to either true or false. Set partner name that you want to enable/disable.

If partner has active set to false you won't be able to use this partner when doing income verification or while using Company Search.

If partner has active set to true you will be able to use this partner when doing income verification and for Company Search.

Please note that a given partner can only be activated if credentials are set, please use the Setup endpoints to set credentials.

Request
application/json
{
  "active": true
}
Response
application/json

Successfully updated active parameter for the partner

{
  "message": "Partner status updated!"
}
Parameters
2
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
partner required string path partner_name Name of the partner for which we wan't to update status
Request bodyapplication/json
1 fields
FieldTypeDescription
activerequiredbooleanExample true
Response 200application/json
1 fields

Successfully updated active parameter for the partner

FieldTypeDescription
messagestringPartner status updated!
Response 400application/json
1 fields

Failed to update the partner from one of the reasons

FieldTypeDescription
messagestringPartner doesn't exist in database
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
PATCH /products/income/partners/{partner}/status

Update Partner Status

updatePartnerStatus

Update Partner Status updates the active parameter of a partner to either true or false. Set partner name that you want to enable/disable.

If partner has active set to false you won't be able to use this partner when doing income verification or while using Company Search.

If partner has active set to true you will be able to use this partner when doing income verification and for Company Search.

Please note that a given partner can only be activated if credentials are set, please use the Setup endpoints to set credentials.

Request
application/json
{
  "active": true
}
Response
application/json

Successfully updated active parameter for the partner

{
  "message": "Partner status updated!"
}
Parameters
2
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
partner required string path partner_name Name of the partner for which we wan't to update status
Request bodyapplication/json
1 fields
FieldTypeDescription
activerequiredbooleanExample true
Response 200application/json
1 fields

Successfully updated active parameter for the partner

FieldTypeDescription
messagestringPartner status updated!
Response 400application/json
1 fields

Failed to update the partner from one of the reasons

FieldTypeDescription
messagestringPartner doesn't exist in database
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring

Workflow

POST /products/income/invocations

Verify Income

invokeProductFlow

Verify Income creates a verification request for provided transaction, collection and selected partner.

To better understand how to use this endpoint and how the entire income flow works check out the Overview Page and the detailed tutorial.

To invoke Income, you will need:

  • a transaction_id, and
  • a collection_id with valid data.

To get correct information from the income product, creating the request collection is extremely important. Hence, we heavily recommend looking at Create Collection documentation before this one.

Show the rest

Verification options

Manual Verification parameter

The manual_verification option enables you to add or remove partners that perform manual income verifications. When manual_verification=false, Income will exclude all partners performing manual VOI. This limits the search for partners performing VOI, and also reduces the time it takes to complete a VOI.

Exclude Borrower parameter

The exclude_borrower option enables you to remove the borrower from the VOI loop. When exclude_borrower=false, the borrower must provide credentials for Income verification prior to the partner performing the VOI. This increases borrower interaction, and also increases the chance that the VOI will be successfully completed.

The borrower needs to authorize the verification by entering payroll provider or bank credentials to the URL (widget_url) provided in the verification response. Call Retrieve Partners to retrieve test credentials for partners that have the borrower in the loop.

Instant Verification parameter

The instant_verification option enables you to add or remove partners that perform instant verifications. When instant_verification=true, Income will use all partners performing instant verification. This can limit the search for partners performing VOI, and also reduces the time it takes to complete a VOI.

Partner name parameter

The partner_name option enables you to select a preferred partner, or use "default" as the value. If you use "default" as the partner_name, Income will find the best match and use that partner for verification process. If you want to use a specific partner, call Retrieve Partners to see all income verification partners.

Callback URL parameter

The callback_url option enables you to send a URL with the request. This URL will be used to send a callback when the verification process status changes, including changes in status of underlying service invocations.

Send SMS parameter

The send_sms option enables you to send an SMS to the borrower when an authorization for the verification is needed. The default SMS text is "Lender has provided verification link to your E-mail address, please open link in browser, and finish verification process", if you wish to change the default SMS text you can send an optional sms_text parameter with your custom text message.

Send Email parameter

The send_email option enables you to email the borrower when an authorization for the verification is needed. The Email will be sent to the email address specified in the input collection. The Email uses the standard email template voi_email_template, if you wish to update the template please refer to the Update Email Template documentation. Please note that the template takes in two passed variables, which are the applet URL and employer_name, and those are required variables and should not be altered, for more info check the Email Product section.

Redirect URL parameter

Providing the redirect_url is optional and allows you to redirect the borrower to a URL of your choosing after linking the borrower's income verification. If left empty or no options parameter is passed, this URL defaults to the Staircase homepage.

If the waterfall feature is enabled, partner is selected based on the partner ordering.

To use the waterfall feature set the partner name to default. This way verification will be executed following the ordering for all available data partners. Use Update Partners Ordering and Retrieve Partners Ordering to set and get the orderings. If two data partners share the same legal entity full name the verification will be done based on the ordering of data partners.

Verify Income returns, as a synchronous acknowledgement, a new collection_id. The new collection_id represents an empty container which will hold the partner's response once processing has completed.

Some Partners require the borrower to authenticate, if the response contains the url property then the URL should be forwarded to the borrower and authenticated. The url is valid until the expiration_time which is denoted in EST.

Use the newly returned collection_id together with transaction_id in Retrieve Collection to get verification result.

Monitoring the health of the Income product

The Income product is integrated with the Health product, a cloud-based DevOps service that monitors the health of APIs. With the help of Health product, you can monitor the process of verification. To check the health of the Income product, you can use the create async health query execution API. This API allows you to specify a time period, a response collection ID ("id" returned as result of Income verification), and a product or API identifier. Here are the relevant product and API identifiers for the Income product:

  • Income Product Identifier: 64b4b099-2ec6-448c-a33e-8c15dd167ab1
  • Income Verification API ID: d1b1e55b-7398-4cb6-9e6f-d7ab3e5b83d4

To check the health after submitting a new Income verification request, you can use the following request payload:

{
 "start_date": "2023-01-28T00:00:00",
 "end_date": "2023-12-29T23:59:59",
 "response_collection_id": "01GNPTVCE9E737Y7HFEK9QKQRV",
 "product_identifier": "64b4b099-2ec6-448c-a33e-8c15dd167ab1",
 "product_api_identifier": "d1b1e55b-7398-4cb6-9e6f-d7ab3e5b83d4",
}

To check the overall health of your income transaction, you can use the following request payload:

{
 "start_date": "2023-01-28T00:00:00",
 "end_date": "2023-12-29T23:59:59",
 "response_collection_id": "01GNPTVCE9E737Y7HFEK9QKQRV",
 "product_identifier": "d1b1e55b-7398-4cb6-9e6f-d7ab3e5b83d4"
}

To retrieve the results of your health query, use the get async health query result API. This API takes the query execution ID returned by the create async health query execution API as a parameter. When you retrieve the results of your health query, you should see at least one health metric with corresponding status information (e.g. "SUCCEEDED", "FAILED").

Setting up alarms

You can set up alarms to be notified when the health of the Income product. To do this, use the create_health_alarm API. This API allows you to specify a threshold value and a notification method.

Request
application/json
{
  "transaction_id": "01F0KHK7DN3H5JZ4QJKMYAM6GB",
  "collection_id": "01F0KHKADN0HRFXMCQQXPA6AFZ",
  "partner_name": "Partner",
  "callback_url": "https://webhook.site/1234",
  "options": {
    "manual_verification": true,
    "exclude_borrower": false,
    "instant_verification": true,
    "send_sms": false
  }
}
Response
application/json

Request for Verification of Income created successfully. Please take the contained widget_url and forward it to the borrower. The url is valid until the `expiration_time`. The `expiration_time` is denoted in EST.

{
  "collection_id": "01F0KHKADN0HRFXMCQQXPA6AFZ",
  "url": "www.staircase.co",
  "expiration_time": "2021-04-22T12:51:25-04:00"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Request bodyapplication/json
5 fields
FieldTypeDescription
transaction_idrequiredstring (ulid)Staircase Transaction IdentifierExample 01F0KHK7DN3H5JZ4QJKMYAM6GB
collection_idrequiredstring (ulid)Staircase Collection IdentifierExample 01F0KHKADN0HRFXMCQQXPA6AFZ
partner_namestringTo get available partners, you can use /partners endpoint
callback_urlstringCallback URL - will be used by product to send a callback when the invocation status changes.
optionsobjectYou can use options to customize the verification
manual_verificationbooleanThis option allows us to add partners that perform manual verification to your search list while finding the most suitable partner for you. This option takes a longer time and gives you a broader search.
exclude_borrowerbooleanSome of our partners include borrowers in the loop while executing the verification. Income is verified by requesting information from borrower. If you want to exclude the borrower from the process, you must select *exclude_borrower* = *true* in options.
instant_verificationbooleanThis option allows us to add partners that perform instant verification to the search list while finding the most suitable partner for VOI.
send_smsbooleanThis option allows us to send SMS to the borrower when an authorization for the verification is needed. The SMS text is "Lender has provided verification link to your E-mail address, please open link in browser, and finish verify process"
send_emailbooleanIf set to True, product will email the borrower when an authorization for the verification is needed. The Email will contain the URL to the authorization and the Company name.
Response 200application/json
3 fields

Request for Verification of Income created successfully. Please take the contained widget_url and forward it to the borrower. The url is valid until the `expiration_time`. The `expiration_time` is denoted in EST.

FieldTypeDescription
collection_idstring (ulid)Staircase Collection IdentifierExample 01F0KHKADN0HRFXMCQQXPA6AFZ
urlstringURL that needs to be sent to the borrower
expiration_timestring (date-time)Expiration time in EST. The operation will result in failure after this date has passed.
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 422application/json
1 fields

Unprocessable Entity

FieldTypeDescription
messagestringMessage
Other responses

400

POST /transactions

Create Transaction

createTransaction

Create Transaction creates a transaction in Staircase.

Transactions in Staircase are containers for all the data related to an instance of a transaction type. They enable you to correlate the output of various products to a single transaction type, where the transaction type depends on your line of business.

Transactions are identified by a unique key called transaction_id. As you use different Staircase products to gather the data needed for a specific instance of your transaction type, and receive different sets of output from each product, use the same transaction_id to correlate all the outputs to the same transaction.

A transaction_id, when used properly, gives you a holistic view of the data related to the transaction you've assembled. To access all collections associated with a given transaction_id, try out /transactions/{transaction_id}/collections

Response
application/json

Transaction created successfully

{
  "transaction_id": "01F0KHK7DN3H5JZ4QJKMYAM6GB",
  "created_at": "2021-05-11T03:39:27.129434-04:00"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Response 201application/json
2 fields

Transaction created successfully

FieldTypeDescription
transaction_idstring (ulid)Staircase Transaction IdentifierExample 01F0KHK7DN3H5JZ4QJKMYAM6GB
created_atstringISO 8601 format with EST timezoneExample 2021-05-11T03:39:27.129434-04:00
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
POST /approval

Upload Approval Document

uploadApproval

Upload Approval

Upload Approval Document allows a Lender to upload a Borrower-signed approval document in .pdf form, to increase the income verification success rate.

Upload Approval Document uploads a .pdf document (blob) to Persistence.

You can upload PDF using HTML Request Maker Try It Out. Place your api_key in the request header, set the request body to binary and browse to your signed approval document. Click Send to upload your document.

Show the rest

To upload a document programmatically, use the programmatic upload example below. After the approval document is successfully uploaded, a blob_id value is provided. Example: 'blob_id': '01EZYHKY4EXFW4Z8RKWHDP1KHB'

After you got successful response, you need to use the blob_id in collection with the following path.

$.document_sets.document_set[0].documents.document[0].foreign_objects.foreign_object[0].staircase_blob_id

To upload a document within code, you can to use a below example.

import requests
url = ""
payload = open("borrower_approval_document.pdf", "rb")
headers = {
 'x-api-key': 'API_KEY',
 'Content-Type': 'application/pdf'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Request
application/json
Select option 'binary' in order to upload file
Response
application/json

Approval uploaded

{
  "blob_id": "01EZYNPEJMP5J3G8DVF8S4QXH2"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Response 200application/json
1 fields

Approval uploaded

FieldTypeDescription
blob_idstringID of blob on AWS, put this later than as part of income verification collection body to be used by verification process
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
Other responses

400

POST /transactions/{transaction_id}/collections

Create Collection

createCollection

Create Collection creates a collection of data attached to a transaction_id. Then, you can use this collection to invoke Verify Income endpoint to retrieve Income verification response. Once you have created a collection, you can send it, along with your api_key and transaction_id, to more than one Income partner.

We assembled an example that you can access by invoking Retrieve Example Schema endpoint. Simply select an entry in the array and pass it directly into the request body for Create Collection endpoint.

Show the rest

Mock Responses

You can mock data to get mock responses without setting any partner credentials. Staircase Income API uses a mock request response strategy that allows you to test your pipeline before setting your partner credentials. Currently, Income looks at the taxpayer identifier (SSN) and the employer name fields to detect whether the request is a mock request or not. You can set these fields by setting:

For staircase-graph collections:

 $.organizations[*].has_organization_name.has_value
 $.people[*].has_taxpayer_identifier_value.has_value

For staircase-limited collections:

 $.deal_sets.deal_set[0].deals.deal[0].parties.party[0].roles.role[0].borrower.employers.employer[0].legal_entity.full_name
 $.deal_sets.deal_set[0].deals.deal[0].parties.party[0].taxpayer_identifiers.taxpayer_identifier[0].value

Mock SSN and Company names and their relative partner responses are available in the table below:

SSN Company Name Partner Data
000000001 Fox Subacute Argyle
000000001 Uber Atomic
000000001 Amazon Equifax
000000001 Finbank Finicity
000000001 Apple Meridian
000000001 Fairport Little League Inc. Pinwheel
000000001 Truework DEMO Truework
000000001 Truework DEMO Truework-Instant
000000001 Lexipol Plaid

If you want to retrieve low income response please use the following invoke details below:

SSN Company Name Partner Data
000000002 N/A default

You can call Retrieve Example Schema with the query parameter return_example=true to retrieve examples for the data body of a request.

Day-1 Certainty

For Day-1 certainty, partners that require indicators to be sent in the request, you can use the following field:

 $.loans[*].has_day_1_certainty_indicator.has_value
Request
application/json
{
  "data": {
    "people": [
      {
        "@type": "borrower",
        "@id": "01FD6ZNGJADZ0RB1H96FSE8ABC",
        "has_first_name": {
          "has_value": "FirstName"
        },
        "has_last_name": {
          "has_value": "LastName"
        },
        "has_birth_date": {
          "has_value": "1993-01-11"
        },
        "has_taxpayer_identifier_value": {
          "has_value": "111223333"
        },
        "with_address": [
          "01FD6ZNGJADZ0RB1H96FSE8BAB"
        ],
        "contact_at": [
          "01FD6ZNGJW9X96WGWX2BD37CFY"
        ],
        "works_for": [
          "01FD6ZNGNFKY3B7CX0YN6NH56E"
        ]
      }
    ],
    "addresses": [
      {
        "@type": "address",
        "@id": "01FD6ZNGJADZ0RB1H96FSE8BAB",
        "has_address_line_1_text": {
          "has_value": "33 IRVING PLACE"
        },
        "has_address_line_2_text": {
          "has_value": ""
        },
        "has_city_name": {
          "has_value": "NEW YORK"
        },
        "has_state_code": {
          "has_value": "NY"
        },
        "has_postal_code": {
          "has_value": "10003"
        },
        "has_country_name": {
          "has_value": "US"
        }
      }
    ],
    "contact_information": [
      {
        "@type": "contact_information",
        "@id": "01FD6ZNGJW9X96WGWX2BD37CFY",
        "has_email_address": {
          "has_value": "test@test.com"
        },
        "has_phone_number": {
          "has_value": "+123456789"
        }
      }
    ],
    "organizations": [
      {
        "@id": "01FD6ZNGNFKY3B7CX0YN6NH56E",
        "has_organization_name": {
          "has_value": "Company Name"
        }
      }
    ],
    "loans": [
      {
        "@id": "01G3B5DKRT27W61Y3ZK57JSGBE",
        "has_day_1_certainty_indicator": {
          "has_value": "123456789"
        }
      }
    ]
  }
}
Response
application/json

Collection created successfully

{
  "data": {
    "deal_sets": {
      "deal_set": [
        {
          "deals": {
            "deal": [
              {
                "parties": {
                  "party": [
                    {
                      "customer_transaction_id": "111222333444",
                      "individual": {
                        "contact_points": {
                          "contact_point": [
                            {
                              "contact_point_telephone": {
                                "value": "+1234567890"
                              },
                              "contact_point_email": {
                                "value": "test@test.com"
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                }
              },
              {
                "loans": {
                  "loan": [
                    {
                      "loan_identifiers": {
                        "loan_identifier": [
                          {
                            "identifier": "6f039329-3fd6-44c1-a460-9af546e798de",
                            "name": {
                              "first": "John",
                              "last": "Jackson"
                            }
                          }
                        ],
                        "roles": {
                          "role": [
                            {
                              "borrower": {
                                "birth_date": "1984-01-01",
                                "employers": {
                                  "employer": [
                                    {
                                      "legal_entity": {
                                        "full_name": "Amazing Community Pharmacy LLC"
                                      }
                                    }
                                  ]
                                },
                                "residences": {
                                  "residence": [
                                    {
                                      "address": {
                                        "additional_line_text": "None",
                                        "city": "NEW YORK",
                                        "country": "US",
                                        "line_text": "33 IRVING PLACE",
                                        "postal_code": "10003",
                                        "state_code": "NY"
                                      }
                                    }
                                  ]
                                }
                              },
                              "party_type": "Borrower"
                            }
                          ]
                        },
                        "taxpayer_identifiers": {
                          "taxpayer_identifier": [
                            {
                              "value": "317210001"
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "services": {
                  "service": [
                    {
                      "verification_of_income": {
                        "verification_of_income_response": {
                          "partner": "Wage",
                          "partner_data_source_date": "2021-02-08"
                        }
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    },
    "document_sets": {
      "document_set": [
        {
          "documents": {
            "document": [
              {
                "document_classification": {
                  "document_classes": {
                    "document_class": [
                      {
                        "staircase_type": "Staircase",
                        "type": "BorrowerApproval"
                      }
                    ]
                  }
                },
                "foreign_objects": {
                  "foreign_object": [
                    {
                      "description": "BorrowerApproval",
                      "mime_type_identifier": "application/pdf",
                      "name": "01F1Z5KG9E3CPD78P7GYB3TYC1.pdf",
                      "staircase_blob_id": "01F1Z5KG9E3CPD78P7GYB3TYC1"
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  },
  "metadata": {
    "validation": false,
    "created_at": "03/04/2021, 1:18:35 PM EST"
  },
  "collection_id": "01F0KHKADN0HRFXMCQQXPA6AFZ",
  "transaction_id": "01F0KHK7DN3H5JZ4QJKMYAM6GB"
}
Parameters
2
ParameterTypeExampleDescription
transaction_id required string (ulid) path 01F0KHK7DN3H5JZ4QJKMYAM6GB Staircase Transaction Identifier
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Response 201application/json
1 fields

Collection created successfully

FieldTypeDescription
dataobject
deal_setsrequiredobject
deal_setrequiredobject[]
dealsrequiredobject
document_setsobject
document_setobject[]
documentsobject
Response 400application/json
1 fields

Error

FieldTypeDescription
messageone of
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
POST /

Verify Income

verifyIncome

Verify Income creates a verification request for provided transaction, collection and selected partner.

To better understand how to use this endpoint and how the entire income flow works check out the Overview Page and the detailed tutorial.

To invoke Income, you will need:

  • a transaction_id, and
  • a collection_id with valid data.

To get correct information from the income product, creating the request collection is extremely important. Hence, we heavily recommend looking at Create Collection documentation before this one.

Show the rest

Verification options

Manual Verification parameter

The manual_verification option enables you to add or remove partners that perform manual income verifications. When manual_verification=false, Income will exclude all partners performing manual VOI. This limits the search for partners performing VOI, and also reduces the time it takes to complete a VOI.

Exclude Borrower parameter

The exclude_borrower option enables you to remove the borrower from the VOI loop. When exclude_borrower=false, the borrower must provide credentials for Income verification prior to the partner performing the VOI. This increases borrower interaction, and also increases the chance that the VOI will be successfully completed.

The borrower needs to authorize the verification by entering payroll provider or bank credentials to the URL (widget_url) provided in the verification response. Call Retrieve Partners to retrieve test credentials for partners that have the borrower in the loop.

Instant Verification parameter

The instant_verification option enables you to add or remove partners that perform instant verifications. When instant_verification=true, Income will use all partners performing instant verification. This can limit the search for partners performing VOI, and also reduces the time it takes to complete a VOI.

Partner name parameter

The partner_name option enables you to select a preferred partner, or use "default" as the value. If you use "default" as the partner_name, Income will find the best match and use that partner for verification process. If you want to use a specific partner, call Retrieve Partners to see all income verification partners.

Callback URL parameter

The callback_url option enables you to send a URL with the request. This URL will be used to send a callback when the verification process status changes, including changes in status of underlying service invocations.

Send SMS parameter

The send_sms option enables you to send an SMS to the borrower when an authorization for the verification is needed. The default SMS text is "Lender has provided verification link to your E-mail address, please open link in browser, and finish verification process", if you wish to change the default SMS text you can send an optional sms_text parameter with your custom text message.

Send Email parameter

The send_email option enables you to email the borrower when an authorization for the verification is needed. The Email will be sent to the email address specified in the input collection. The Email uses the standard email template voi_email_template, if you wish to update the template please refer to the Update Email Template documentation. Please note that the template takes in two passed variables, which are the applet URL and employer_name, and those are required variables and should not be altered, for more info check the Email Product section.

Redirect URL parameter

Providing the redirect_url is optional and allows you to redirect the borrower to a URL of your choosing after linking the borrower's income verification. If left empty or no options parameter is passed, this URL defaults to the Staircase homepage.

If the waterfall feature is enabled, partner is selected based on the partner ordering.

To use the waterfall feature set the partner name to default. This way verification will be executed following the ordering for all available data partners. Use Update Partners Ordering and Retrieve Partners Ordering to set and get the orderings. If two data partners share the same legal entity full name the verification will be done based on the ordering of data partners.

Verify Income returns, as a synchronous acknowledgement, a new collection_id. The new collection_id represents an empty container which will hold the partner's response once processing has completed.

Some Partners require the borrower to authenticate, if the response contains the url property then the URL should be forwarded to the borrower and authenticated. The url is valid until the expiration_time which is denoted in EST.

Use the newly returned collection_id together with transaction_id in Retrieve Collection to get verification result.

Request
application/json
{
  "transaction_id": "01F0KHK7DN3H5JZ4QJKMYAM6GB",
  "collection_id": "01F0KHKADN0HRFXMCQQXPA6AFZ",
  "partner_name": "Partner",
  "callback_url": "https://webhook.site/1234",
  "options": {
    "manual_verification": true,
    "exclude_borrower": false,
    "instant_verification": true,
    "send_sms": false
  }
}
Response
application/json

Request for Verification of Income created successfully. Please take the contained widget_url and forward it to the borrower. The url is valid until the `expiration_time`. The `expiration_time` is denoted in EST.

{
  "collection_id": "01F0KHKADN0HRFXMCQQXPA6AFZ",
  "url": "www.staircase.co",
  "expiration_time": "2021-04-22T12:51:25-04:00"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Request bodyapplication/json
5 fields
FieldTypeDescription
transaction_idrequiredstring (ulid)Staircase Transaction IdentifierExample 01F0KHK7DN3H5JZ4QJKMYAM6GB
collection_idrequiredstring (ulid)Staircase Collection IdentifierExample 01F0KHKADN0HRFXMCQQXPA6AFZ
partner_namestringTo get available partners, you can use /partners endpoint
callback_urlstringCallback URL - will be used by product to send a callback when the invocation status changes.
optionsobjectYou can use options to customize the verification
manual_verificationbooleanThis option allows us to add partners that perform manual verification to your search list while finding the most suitable partner for you. This option takes a longer time and gives you a broader search.
exclude_borrowerbooleanSome of our partners include borrowers in the loop while executing the verification. Income is verified by requesting information from borrower. If you want to exclude the borrower from the process, you must select *exclude_borrower* = *true* in options.
instant_verificationbooleanThis option allows us to add partners that perform instant verification to the search list while finding the most suitable partner for VOI.
send_smsbooleanThis option allows us to send SMS to the borrower when an authorization for the verification is needed. The SMS text is "Lender has provided verification link to your E-mail address, please open link in browser, and finish verify process"
send_emailbooleanIf set to True, product will email the borrower when an authorization for the verification is needed. The Email will contain the URL to the authorization and the Company name.
Response 200application/json
3 fields

Request for Verification of Income created successfully. Please take the contained widget_url and forward it to the borrower. The url is valid until the `expiration_time`. The `expiration_time` is denoted in EST.

FieldTypeDescription
collection_idstring (ulid)Staircase Collection IdentifierExample 01F0KHKADN0HRFXMCQQXPA6AFZ
urlstringURL that needs to be sent to the borrower
expiration_timestring (date-time)Expiration time in EST. The operation will result in failure after this date has passed.
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 422application/json
1 fields

Unprocessable Entity

FieldTypeDescription
messagestringMessage
Other responses

400

POST /cancel-verification

Cancel Income Verification

cancel-income-verification

Cancel Income Verification invokes a partner to cancel an income verification request that is already started. This feature is currently only available from Truework.

Request
application/json
{
  "transaction_id": "42u3784-324123-41234-21234",
  "collection_id": "42u3784-324123-41234-21234"
}
Response
application/json

Invalid key for service

{
  "message": "Please check the key you used to call this service",
  "url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
Parameters
1
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
Request bodyapplication/json
2 fields
FieldTypeDescription
transaction_idrequiredstring (ulid)Staircase Transaction IdentifierExample 01F0KHK7DN3H5JZ4QJKMYAM6GB
collection_idrequiredstring (ulid)Staircase Collection IdentifierExample 01F0KHKADN0HRFXMCQQXPA6AFZ
Response 200application/json
1 fields

Cancel income verification triggered

FieldTypeDescription
messagestringExample Cancel income verification request is successfully taken
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
Response 502application/json
1 fields

Bad gateway.

FieldTypeDescription
messagestringError Message.
Other responses

400

GET /products/income/invocations/{invocation_id}

Retrieve Income Verification Status

RetrieveProductFlowInvocationStatus

Retrieves the status of running Product flow invocation.

A more detailed explanation as to why something failed or timed out can be found by retrieving the collection and checking the data object.

Response
application/json

Status retrieved successfully

{
  "status": "COMPLETED",
  "message": "Verification is completed, please check response collection to see verification data",
  "updated_at": "2021-06-25T09:32:13.272871-04:00"
}
Parameters
2
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
invocation_id required string (ulid) path 01FFMHWSGMBJDSXTEX09M3EYJ9 Product flow invocation identifier
Response 200application/json
3 fields

Status retrieved successfully

FieldTypeDescription
statusstring'Potential status responses: ''WAITING_FOR_RESPONSE'', ''COMPLETED'', ''FAILED'', ''TIME_OUT'', ''CANCELLED'''CANCELLEDCOMPLETEDFAILEDTIME_OUTWAITING_FOR_RESPONSE
messagestringAdditional information for status
updated_atstringLast updated time
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
Other responses

400

GET /status/{transaction_id}/{collection_id}

Retrieve Status

retrieveStatus

'Retrieve Status determines if a partner has completed income verification.'

Status Descriptions:

  • REQUEST_MADE: Indicates that execution has started
  • WAITING_FOR_RESPONSE: Indicates that execution is being processed
  • COMPLETED: Indicates execution has been successfully finished. Response collection can be retrieved.
  • TIME_OUT: Indicates execution has timed out.
  • CANCELLED: Indicates execution has cancelled
  • FAILED: Indicates execution has failed

A more detailed explanation as to why something failed or timed out can be found by retrieving the collection and checking the data object.

Response
application/json

Status retrieved successfully

{
  "status": "COMPLETED",
  "message": "Verification is completed, please check response collection to see verification data",
  "updated_at": "2021-06-25T09:32:13.272871-04:00"
}
Parameters
3
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
transaction_id required string (ulid) path 01F0KHK7DN3H5JZ4QJKMYAM6GB Staircase Transaction Identifier
collection_id required string (ulid) path 01F0KHKADN0HRFXMCQQXPA6AFZ Staircase collection_id
Response 200application/json
3 fields

Status retrieved successfully

FieldTypeDescription
statusstring'Potential status responses: ''WAITING_FOR_RESPONSE'', ''COMPLETED'', ''FAILED'', ''TIME_OUT'', ''CANCELLED'''CANCELLEDCOMPLETEDFAILEDTIME_OUTWAITING_FOR_RESPONSE
messagestringAdditional information for status
updated_atstringLast updated time
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
Other responses

400

GET /transactions/{transaction_id}/collections/{collection_id}

Retrieve Collection

retrieveCollection

Retrieve Collection returns an Income collection. If income process still continues (i.e. partner hasn't returned any data yet) this endpoint returns IN_PROGRESS in metadata.status field.

For example:

{
 "metadata": {
 "created_at": "2021-08-05T03:53:06.180163-04:00",
 "results": {
 "product": "Income",
 "status": "IN_PROGRESS"
 },
 "validation": false
 }
}

Continue to ping this endpoint until metadata.status field returns COMPLETED.

{
 "metadata": {
 "created_at": "2021-08-05T03:53:06.180163-04:00",
 "results": {
 "product": "Income",
 "status": "COMPLETED"
 },
 "validation": false
 }
}

Once the status is COMPLETED you will be able to access the full partner response in the {"data"} property of the response collection

Response
application/json

Successfully Retrieved Collection

{
  "collection_id": "01G4CSWKK6HRABWRZNM0J6BEXK",
  "data": {
    "addresses": [
      {
        "@id": "01G0F11KE743JYDTZK6JSJSZUY",
        "@type": "residential_address",
        "has_address_line_1_text": {
          "has_value": "33 IRVING PLACE"
        },
        "has_city_name": {
          "has_value": "NEW YORK"
        },
        "has_country_name": {
          "has_value": "US"
        },
        "has_postal_code": {
          "has_value": "10003"
        },
        "has_state_code": {
          "has_value": "NY"
        }
      },
      {
        "@id": "01G4CSY8CJ30N1ZWNH3W4TEF9H",
        "@type": "business_address",
        "has_address_line_1_text": {
          "has_value": "1313 Mockingbird Lane"
        },
        "has_city_name": {
          "has_value": "Olympia"
        },
        "has_country_name": {
          "has_value": "US"
        },
        "has_postal_code": {
          "has_value": "82943-9302"
        },
        "has_state_code": {
          "has_value": "NY"
        }
      }
    ],
    "contact_information": [
      {
        "@id": "01G0F11KE743JYDTZK6JSJSYCR",
        "@type": "contact_information",
        "has_email_address": {
          "has_value": "test@test.com"
        },
        "has_phone_number": {
          "has_value": "+123456789"
        }
      }
    ],
    "documents": [
      {
        "@id": "01G4CSYSAREBF6Y4GY2MNPJBEG",
        "@type": "verification_of_income",
        "has_document_description": {
          "has_value": "Income Verification Report prepared by Staircase"
        },
        "has_document_mime_type": {
          "has_value": "application/pdf"
        },
        "has_document_name": {
          "has_value": "01G4CSYKZQKZN4PCRZHQD0XNJB.pdf"
        },
        "has_staircase_blob_identifier": {
          "has_value": "01G4CSYKZQKZN4PCRZHQD0XNJB"
        },
        "has_staircase_document_category_type": {
          "has_value": "staircase"
        }
      },
      {
        "@id": "01G0EX4VT41ZF22QWXH1QBTZPF",
        "@type": "verification_of_income",
        "has_document_description": {
          "has_value": "Income Verification Report prepared by Partner"
        },
        "has_document_mime_type": {
          "has_value": "application/pdf"
        },
        "has_document_name": {
          "has_value": "01G0EX4VT41ZF22QWXH1QBTZPF.pdf"
        },
        "has_staircase_blob_identifier": {
          "has_value": "01G0EX4VT41ZF22QWXH1QBTZPF"
        },
        "has_staircase_document_category_type": {
          "has_value": "partner"
        }
      }
    ],
    "employment": [
      {
        "@id": "01G0F11KE743JYDTZK6JSJSPOQ",
        "@type": "employment",
        "has_current_employment_indicator": {
          "has_value": true
        },
        "has_employment_monthly_income_amount": {
          "has_value": 7000
        },
        "has_employment_position_description": {
          "has_value": "HR ADMININSTRATOR"
        },
        "has_employment_start_date": {
          "has_value": "2014-01-01"
        },
        "provided_by": [
          "01G0F11KE743JYDTZK6JSJSTIY"
        ]
      }
    ],
    "income": [
      {
        "@id": "01G4CSY8CK4K120TWKECZXHGGA",
        "@type": "employment_income",
        "earned_from": [
          "01G4CSY8CJXPA8R5SFVSTEQ188"
        ],
        "has_bonus_income_amount": {
          "has_value": 0
        },
        "has_income_amount": {
          "has_value": 22615.38
        },
        "has_income_pay_frequency_type": {
          "has_value": "monthly"
        },
        "has_income_year": {
          "has_value": "2022"
        },
        "has_other_income_amount": {
          "has_value": 0
        },
        "has_overtime_income_amount": {
          "has_value": 0
        }
      },
      {
        "@id": "01G4CSY8CKKBSYGQXA5D5KY8A9",
        "@type": "employment_income",
        "earned_from": [
          "01G4CSY8CJXPA8R5SFVSTEQ188"
        ],
        "has_bonus_income_amount": {
          "has_value": 0
        },
        "has_income_amount": {
          "has_value": 84000
        },
        "has_income_pay_frequency_type": {
          "has_value": "monthly"
        },
        "has_income_year": {
          "has_value": "2021"
        },
        "has_other_income_amount": {
          "has_value": 0
        },
        "has_overtime_income_amount": {
          "has_value": 0
        }
      },
      {
        "@id": "01G4CSY8CK3RJAF6WP0XQN2JQW",
        "@type": "employment_income",
        "earned_from": [
          "01G4CSY8CJXPA8R5SFVSTEQ188"
        ],
        "has_bonus_income_amount": {
          "has_value": 0
        },
        "has_income_amount": {
          "has_value": 80000
        },
        "has_income_pay_frequency_type": {
          "has_value": "monthly"
        },
        "has_income_year": {
          "has_value": "2020"
        },
        "has_other_income_amount": {
          "has_value": 0
        },
        "has_overtime_income_amount": {
          "has_value": 0
        }
      }
    ],
    "mortgage_products": [
      {
        "@id": "01G4CSYB2B2JZW01E660FHJED5",
        "@type": "income",
        "has_partner_name": {
          "has_value": "Partner"
        },
        "has_service_response_date": {
          "has_value": "2022-05-31"
        }
      }
    ],
    "loans": [
      {
        "@id": "01G3B5DKRT27W61Y3ZK57JSGBE",
        "@type": "loan",
        "has_day_1_certainty_indicator": {
          "has_value": "123456789"
        }
      }
    ],
    "organizations": [
      {
        "@id": "01G0F11KE743JYDTZK6JSJSTIY",
        "@type": "organization",
        "has_organization_name": {
          "has_value": "Amazon"
        },
        "with_address": [
          "01G4CSY8CJ30N1ZWNH3W4TEF9H"
        ]
      }
    ],
    "people": [
      {
        "@id": "01G4CSY8CJ5X9MPA2VR5AH97YB",
        "@type": "borrower",
        "contact_at": [
          "01G0F11KE743JYDTZK6JSJSYCR"
        ],
        "earns": [
          "01G4CSY8CKKBSYGQXA5D5KY8A9",
          "01G4CSY8CK3RJAF6WP0XQN2JQW",
          "01G4CSY8CK4K120TWKECZXHGGA"
        ],
        "employed_as": [
          "01G0F11KE743JYDTZK6JSJSPOQ"
        ],
        "has_birth_date": {
          "has_value": "1973-01-01"
        },
        "has_first_name": {
          "has_value": "Happy"
        },
        "has_last_name": {
          "has_value": "Traveler"
        },
        "has_taxpayer_identifier_value": {
          "has_value": "666991238"
        },
        "with_address": [
          "01G4CSY8CJ30N1ZWNH3W4TEF9H",
          "01G0F11KE743JYDTZK6JSJSZUY"
        ],
        "works_for": [
          "01G0F11KE743JYDTZK6JSJSTIY"
        ]
      }
    ]
  },
  "metadata": {
    "created_at": "2022-05-31T06:16:54.118103-04:00",
    "invocation_status": "COMPLETED",
    "last_updated_at": "2022-05-31T06:18:22.606643-04:00",
    "partner_language": "income-equifax-output",
    "product_name": "income",
    "report_download_urls": {
      "income_report": {
        "blob_id": "01G4CSYKZQKZN4PCRZHQD0XNJB",
        "download_url": "https://dev-data-manager-blobs-bucket-us-east-1-026452950730.s3.amazonaws.com/01G4CSYKZQKZN4PCRZHQD0XNJB.pdf?response-content-type=application%2Fpdf&AWSAccessKeyId=<redacted>&Signature=<redacted>&x-amz-security-token=<redacted>&Expires=1653995880",
        "status": "Succeeded"
      }
    },
    "service_invocation": {
      "Connector": {
        "connector_flow_name": "income",
        "debug_config": {
          "dry_run": true
        },
        "invocation_id": "1f15fe83-7b8a-4123-b645-c62e0d922612",
        "status": "COMPLETED"
      },
      "Language": {
        "input": {
          "from_language": "staircase-graph",
          "invocation_id": "01G4CSX1GYCSCHYYEZCXT1DPYQ",
          "status": "COMPLETED",
          "to_language": "income-input"
        },
        "output": {
          "from_language": "income-equifax-output",
          "invocation_id": "01G4CSY55AZ4TH9X29ZE4YQAB0",
          "status": "COMPLETED",
          "to_language": "staircase-graph"
        }
      },
      "report_mapping": {
        "invocation_id": "01G4CSYMQ5QXV05P70CB6ZH92E",
        "language_name": "income-report-mapping",
        "status": "COMPLETED"
      }
    },
    "staircase_language_version": 2,
    "validation": false,
    "version": 2
  },
  "transaction_id": "01G4CSWCBM2QE3QXTDEM4AEPBK"
}
Parameters
3
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
transaction_id required string (ulid) path 01F0KHK7DN3H5JZ4QJKMYAM6GB Staircase Transaction Identifier
collection_id required string (ulid) path 01F0KHKADN0HRFXMCQQXPA6AFZ Staircase collection_id
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 404application/json
1 fields

Resource not found

FieldTypeDescription
messagestringMessage
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring
Other responses

200400

GET /blobs/{blob_id}/presigned-urls/{action}

Create Report Download URL

createPresignedUrl

Create Report Download URL creates a presigned URL in Staircase. It expires one hour after creation.

If partner provides a report in the documents, you can generate a download url using staircase blob ID.

Response
application/json

Presigned URL created successfully.

{
  "upload": {
    "url": "https://dev-data-manager-blobs-bucket.s3.amazonaws.com/01EZY9J8SEFM2JKDJ1Q3YX65HS"
  }
}
Parameters
3
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
blob_id required string path 01EZY9J8SEFM2JKDJ1Q3YX65HS Blob identifier
action required string path upload Action, one of one of ['upload', 'download']
Response 200application/json
2 fields

Presigned URL created successfully.

FieldTypeDescription
uploadobjectAction
urlstringPresigned_url
downloadobjectAction
urlstringPresigned_url
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Other responses

400404

GET /report/{blob_id}

Retrieve Report

retrieveReport

Retrieve Report retrieves a PDF report from a successful verification. This endpoint takes in one path parameter, the blob ID, which can be found in the response collection of a successful verification.

Response
application/json

Report URL retrieved successfully

{
  "url": "www.domain.com/reportURL"
}
Parameters
2
ParameterTypeExampleDescription
x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
blob_id required string path 01FVFBXHVD5WT2MJAGG96CPBJD Blob ID for report that needs to retrieved.
Response 200application/json
1 fields

Report URL retrieved successfully

FieldTypeDescription
urlstringReport URL
Response 400application/json
1 fields

Bad Request

FieldTypeDescription
messagestringPartner not found
Response 403application/json
2 fields

Invalid key for service

FieldTypeDescription
messagestring
urlstring
Response 500application/json
1 fields

The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

FieldTypeDescription
messagestring

Verification

POST /verification

Verify Income

InvokeIncomeVerificationFlow

The Verify Income API facilitates the retrieval of income and employment details for the income and employment product offered by partners based on provided borrower information.

API Input

In order to run Verify Income below data is required in the request payload:

  • partner_name, supported partners:

  • truework-instant

    Show the rest
  • request_data: You need to provide people, addresses and contact_information classes in your request collection. Below is detailed explaination for the request_data attributes.

  • People
    • @id - (string) - Unique identifier for the person object.
    • @type - (string) - Label that explains the type of person. Values: borrower
    • has_first_name/has_value - (string) - The person's first name.
    • has_last_name/has_value - (string) - The person's last name.
    • has_birth_date/has_value - (string) - The person's birth date.
    • has_taxpayer_identifier_value/has_value - (string) - The person's tax payer identifier (SSN).
    • with_address - (array) - List of ID's that should connect the person object with the corresponding address object.
    • contact_at - (array) - List of ID's that should connect the person object with the corresponding contact_information object.
    Address
    • @id - (string) - Unique identifier for the address object.
    • @type - (string) - Label that explains the type of address. Values: address, business_address
    • has_address_line_1_text/has_value - (string) - The address line text.
    • has_address_line_2_text/has_value - (string) - The address line text, for additional information.
    • has_city_name/has_value - (string) - The address city name.
    • has_state_code/has_value - (string) - The address stat code.
    • has_postal_code/has_value - (string) - The address postal code.
    • has_country_name/has_value - (string) - The address country name.
    Contact Information
    • @id - (string) - Unique identifier for the contact information object.

    • @type - (string) - Label that explains the type of contact information. Values: contact_information

    • has_email_address/has_value - (string) - The email address.

    • has_phone_number/has_value - (string) - The phone number.

  • callback_url: If you don't want to continuously poll the result, you can provide a callback_url in request body. Once the invocation is completed, response content will be posted to this endpoint.

  • Note: All relationships between classes need to be defined and present. If this is not the case the API may encounter issues getting the correct income verification.

    Running Verify Income API

    API can be run in two modes:

    • Real Call: In the case of a Real Partner Call, an actual call will be made to the partner. Prior to making this call, it is necessary to call Setup Partner Configurations API through this link. Please note that Staircase and Partners may apply charges for this service.

    • Mock Call: The API will return a mock partner response without making a real call in the case of a mock scenario. To return the corresponding response for each scenario, the API will use the people[*].has_taxpayer_identifier_value/has_value field. However, if any other SSN values are used in the call, the API will switch to Real Partner Call Mode.

    Mock Scenarios Examples

    If you want to test the system and see possible income and employment results without invoking partners you can do mock request instead. Create payload as described in Request Payload section above but add has_taxpayer_identifier_value/has_value field to the person with following values:

    SSN Partner Name Mock Scenario
    990000001 truework-instant Standard VOIE response

    API Response

    • Once Verify Income results are available, the results will be returned on the webhook URL with the status and response_data, below are the details of the response_data from the Verify Income API.
    People
    • @id - (string) - Unique identifier for the person object.
    • @type - (string) - Label that explains the type of person. Values: borrower
    • has_first_name/has_value - (string) - The person's first name.
    • has_last_name/has_value - (string) - The person's last name.
    • has_birth_date/has_value - (string) - The person's birth date.
    • has_taxpayer_identifier_value/has_value - (string) - The person's tax payer identifier (SSN).
    • with_address - (array) - List of ID's that should connect the person object with the corresponding address object.
    • earns - (array) - List of ID's that should connect the person object with the corresponding income object.
    • works_for - (array) - List of ID's that should connect the person object with the corresponding organization object.
    • with_contact_point - (array) - List of ID's that should connect the person object with the corresponding contact_information object.
    Income
    • @id - (string) - Unique identifier for the income object.
    • @type - (string) - Label that explains the type of income. Values: employment_income
    • has_income_year/has_value - (string) - The income year.
    • has_income_pay_frequency_type/has_value - (string) - The income pay frequency type.
    • has_base_income_amount/has_value - (string) - The income base amount.
    • has_income_amount/has_value - (string) - The income amount.
    • has_overtime_income_amount/has_value - (string) - The income overtime amount.
    • has_commission_income_amount/has_value - (string) - The income commission amount.
    • has_bonus_income_amount - (string) - The income bonus amount.
    • earned_from - (array) - List of ID's that should connect the income object with the corresponding employment object.
    Employment
    • @id - (string) - Unique identifier for the employment object.
    • @type - (string) - Label that explains the type of employment. Values: employment
    • has_current_employment_indicator/has_value - (boolean) - Wheter the borrower is currently employed.
    • has_employment_start_date/has_value - (string) - The employment start date.
    • has_employment_end_date/has_value - (string) - The employment end date.
    • has_employment_type/has_value - (string) - The employment type.
    • has_employment_position_description/has_value - (string) - The employment position description.
    • provided_by - (array) - List of ID's that should connect the employment object with the corresponding organization object.
    • earns - (array) - List of ID's that should connect the employment object with the corresponding income object.
    Employer
    • @id - (string) - Unique identifier for the employer object.
    • @type - (string) - Label that explains the type of employer. Values: employer
    • with_verification - (array) - List of ID's that should connect the employer object with the corresponding verification object.
    • with_employment - (array) - List of ID's that should connect the employer object with the corresponding employment object.
    Verification
    • @id - (string) - Unique identifier for the verification object.
    • @type - (string) - Label that explains the type of verification. Values: verification
    • has_verification_report_identifier/has_value - (string) - The verification report identifier. Each employer record should have it's own verification report identifier.
    Address
    • @id - (string) - Unique identifier for the address object.
    • @type - (string) - Label that explains the type of address. Values: address, business_address
    • has_address_line_1_text/has_value - (string) - The address line text.
    • has_address_line_2_text/has_value - (string) - The address line text, for additional information.
    • has_city_name/has_value - (string) - The address city name.
    • has_state_code/has_value - (string) - The address stat code.
    • has_postal_code/has_value - (string) - The address postal code.
    • has_country_name/has_value - (string) - The address country name.
    Organization
    • @id - (string) - Unique identifier for the organization object.
    • @type - (string) - Label that explains the type of organization. Values: organization
    • has_organization_name/has_value - (string) - The organization name.
    Mortgage Product
    • @id - (string) - Unique identifier for the mortgage product object.
    • @type - (string) - Label that explains the type of mortgage product. Values: mortgage_product
    • has_partner_product_name/has_value - (string) - The partner product name.
    • has_response_datetime/has_value - (string) - The product response datetime.
    • has_request_datetime/has_value - (string) - The product request datetime.
    • has_partner_transaction_identifier/has_value - (string) - The partner product transaction identifier, the verification identifier.
    • has_partner_name/has_value - (string) - The partner name.
    Contact Point
    • @id - (string) - Unique identifier for the contact point object.
    • @type - (string) - Label that explains the type of contact point. Values: contact_point
    • with_contact_point_email - (string) - List of ID's that should connect the contact point with the corresponding contact_point_emails object.
    Contact Point Email
    • @id - (string) - Unique identifier for the contact point email object.
    • @type - (string) - Label that explains the type of contact point email. Values: contact_point_emails
    • has_contact_point_email_value/has_value - (string) - The email address.
    Statuses
    • @id - (string) - Unique identifier for the status object.
    • @type - (string) - Label that explains the type of status. Values: status
    • has_status_code/has_value - (string) - The status code.
    • has_status_name/has_value - (string) - The status name.

    Any warning, errors or unwanted behavior will be shown in the error objects:

    Error Message
    • @id - (string) - Unique identifier for the error message object.
    • @type - (string) - Label that explains the type of error message. Values: error_message
    • has_error_message_text/has_value - (string) - The error message.

    Moreover, the system provides an API to get the status, you can use it using this link to get the data at any time.

    Request
    application/json
    {
      "partner_name": "truework-instant",
      "callback_url": "callback.url",
      "request_data": {
        "people": [
          {
            "@id": "01FD6ZNGJADZ0RB1H96FSE8CEC",
            "@type": "borrower",
            "has_first_name": {
              "has_value": "Mock"
            },
            "has_last_name": {
              "has_value": "Mocker"
            },
            "has_birth_date": {
              "has_value": "1973-01-01"
            },
            "has_taxpayer_identifier_value": {
              "has_value": "990000001"
            },
            "with_address": [
              "01FD6ZNGJADZ0RB1H96FSE8BAB"
            ],
            "contact_at": [
              "01FD6ZNGJW9X96WGWX2BD37CFY"
            ]
          }
        ],
        "addresses": [
          {
            "@type": "address",
            "@id": "01FD6ZNGJADZ0RB1H96FSE8BAB",
            "has_address_line_1_text": {
              "has_value": "33 IRVING PLACE"
            },
            "has_address_line_2_text": {
              "has_value": ""
            },
            "has_city_name": {
              "has_value": "NEW YORK"
            },
            "has_state_code": {
              "has_value": "NY"
            },
            "has_postal_code": {
              "has_value": "10003"
            },
            "has_country_name": {
              "has_value": "US"
            }
          }
        ],
        "contact_information": [
          {
            "@type": "contact_information",
            "@id": "01FD6ZNGJW9X96WGWX2BD37CFY",
            "has_email_address": {
              "has_value": "test@test.com"
            },
            "has_phone_number": {
              "has_value": "+123456789"
            }
          }
        ]
      }
    }
    Response
    application/json

    Successfully started flow invocation.

    {
      "response_id": "01F6NAQ4894HPMCBGB4P0G78HG"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Environment API Key.
    Request bodyapplication/json
    3 fields
    FieldTypeDescription
    partner_namerequiredstringPartner name.Example optimalBlue
    callback_urlstringCallback urlExample callback.url
    request_datarequiredobjectRequest data for Income.
    peoplerequiredobject[]List of persons.
    @typerequiredstringPersons type.
    @idrequiredstringPersons id.
    has_first_namerequiredobjectPersons first name.
    has_valuerequiredstringPersons first name.
    has_last_namerequiredobjectPersons last name.
    has_valuerequiredstringPersons last name.
    has_birth_daterequiredobjectPersons date of birth.
    has_valuerequiredstringPersons date of birth.
    has_taxpayer_identifier_valuerequiredobjectPersons taxpayer identifier.
    has_valuerequiredstringPersons taxpayer identifier.
    with_addressrequiredstring[]ID's that point to the corresponding address object.
    contact_atrequiredstring[]ID's that point to the corresponding contact_information object.
    addressesrequiredobject[]Addresses class.
    @typerequiredstringAddress type.
    @idrequiredstringAddress id.
    has_address_line_1_textrequiredobjectAddress line 1.
    has_valuerequiredstringAddress line 1 text.
    has_city_namerequiredobjectAddress city name.
    has_valuerequiredstringAddress city name.
    has_state_coderequiredobjectAddress state code.
    has_valuerequiredstringAddress state code.
    has_postal_coderequiredobjectAddress postal code.
    has_valuerequiredstringAddress postal code.
    contact_informationrequiredobject[]Contact Information class.
    @typerequiredstringContact Information type.
    @idrequiredstringContact Information id.
    has_email_addressrequiredobjectEmail address.
    has_valuerequiredstringEmail address.
    Response 201application/json
    1 fields

    Successfully started flow invocation.

    FieldTypeDescription
    response_idrequiredstringResponse collection ID.
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messageone ofMessage
    Response 403application/json
    2 fields

    403 invalid error

    FieldTypeDescription
    messagestringError message.
    urlstringError additional URL.
    Response 404application/json
    1 fields

    Resource not found

    FieldTypeDescription
    messagestringMessage
    Response 500application/json
    1 fields

    Internal server error

    FieldTypeDescription
    messagestringError message.
    GET /verification/{id}

    Retrieve Income Verification Status

    RetrieveIncomeVerificationFlowInvocationStatus

    Retrieves the result of running Income Verification process.

    The status of the process can be found in metadata invocation_status once the status is COMPLETED the Income and Employment data will be stored in the data object.

    If something fails an error message with further details will be stored in the data object.

    Response Payload

    API Response

    This endpoint returns the following response object:

    Show the rest
    People
    • @id - (string) - Unique identifier for the person object.
    • @type - (string) - Label that explains the type of person. Values: borrower
    • has_first_name/has_value - (string) - The person's first name.
    • has_last_name/has_value - (string) - The person's last name.
    • has_birth_date/has_value - (string) - The person's birth date.
    • has_taxpayer_identifier_value/has_value - (string) - The person's tax payer identifier (SSN).
    • with_address - (array) - List of ID's that should connect the person object with the corresponding address object.
    • earns - (array) - List of ID's that should connect the person object with the corresponding income object.
    • works_for - (array) - List of ID's that should connect the person object with the corresponding organization object.
    • with_contact_point - (array) - List of ID's that should connect the person object with the corresponding contact_information object.
    Income
    • @id - (string) - Unique identifier for the income object.
    • @type - (string) - Label that explains the type of income. Values: employment_income
    • has_income_year/has_value - (string) - The income year.
    • has_income_pay_frequency_type/has_value - (string) - The income pay frequency type.
    • has_base_income_amount/has_value - (string) - The income base amount.
    • has_income_amount/has_value - (string) - The income amount.
    • has_overtime_income_amount/has_value - (string) - The income overtime amount.
    • has_commission_income_amount/has_value - (string) - The income commission amount.
    • has_bonus_income_amount - (string) - The income bonus amount.
    • earned_from - (array) - List of ID's that should connect the income object with the corresponding employment object.
    Employment
    • @id - (string) - Unique identifier for the employment object.
    • @type - (string) - Label that explains the type of employment. Values: employment
    • has_current_employment_indicator/has_value - (boolean) - Wheter the borrower is currently employed.
    • has_employment_start_date/has_value - (string) - The employment start date.
    • has_employment_end_date/has_value - (string) - The employment end date.
    • has_employment_type/has_value - (string) - The employment type.
    • has_employment_position_description/has_value - (string) - The employment position description.
    • provided_by - (array) - List of ID's that should connect the employment object with the corresponding organization object.
    • earns - (array) - List of ID's that should connect the employment object with the corresponding income object.
    Employer
    • @id - (string) - Unique identifier for the employer object.
    • @type - (string) - Label that explains the type of employer. Values: employer
    • with_verification - (array) - List of ID's that should connect the employer object with the corresponding verification object.
    • with_employment - (array) - List of ID's that should connect the employer object with the corresponding employment object.
    Verification
    • @id - (string) - Unique identifier for the verification object.
    • @type - (string) - Label that explains the type of verification. Values: verification
    • has_verification_report_identifier/has_value - (string) - The verification report identifier. Each employer record should have it's own verification report identifier.
    Address
    • @id - (string) - Unique identifier for the address object.
    • @type - (string) - Label that explains the type of address. Values: address, business_address
    • has_address_line_1_text/has_value - (string) - The address line text.
    • has_address_line_2_text/has_value - (string) - The address line text, for additional information.
    • has_city_name/has_value - (string) - The address city name.
    • has_state_code/has_value - (string) - The address stat code.
    • has_postal_code/has_value - (string) - The address postal code.
    • has_country_name/has_value - (string) - The address country name.
    Organization
    • @id - (string) - Unique identifier for the organization object.
    • @type - (string) - Label that explains the type of organization. Values: organization
    • has_organization_name/has_value - (string) - The organization name.
    Mortgage Product
    • @id - (string) - Unique identifier for the mortgage product object.
    • @type - (string) - Label that explains the type of mortgage product. Values: mortgage_product
    • has_partner_product_name/has_value - (string) - The partner product name.
    • has_response_datetime/has_value - (string) - The product response datetime.
    • has_request_datetime/has_value - (string) - The product request datetime.
    • has_partner_transaction_identifier/has_value - (string) - The partner product transaction identifier, the verification identifier.
    • has_partner_name/has_value - (string) - The partner name.
    Contact Point
    • @id - (string) - Unique identifier for the contact point object.
    • @type - (string) - Label that explains the type of contact point. Values: contact_point
    • with_contact_point_email - (string) - List of ID's that should connect the contact point with the corresponding contact_point_emails object.
    Contact Point Email
    • @id - (string) - Unique identifier for the contact point email object.
    • @type - (string) - Label that explains the type of contact point email. Values: contact_point_emails
    • has_contact_point_email_value/has_value - (string) - The email address.
    Statuses
    • @id - (string) - Unique identifier for the status object.
    • @type - (string) - Label that explains the type of status. Values: status
    • has_status_code/has_value - (string) - The status code.
    • has_status_name/has_value - (string) - The status name.

    Any warning, errors or unwanted behavior will be shown in the error objects:

    Error Message
    • @id - (string) - Unique identifier for the error message object.
    • @type - (string) - Label that explains the type of error message. Values: error_message
    • has_error_message_text/has_value - (string) - The error message.
    Response
    application/json

    Successfully returned result of the Income Verification.

    {
      "transaction_id": "01GT91JJRFRV60T4TTEMXFZMWE",
      "collection_id": "01GT91JJZRZ5ZNP7Y6V63527T7",
      "metadata": {
        "validation": false,
        "serialise_to_graph": false,
        "created_at": "2023-03-27T11:14:48.118327-04:00",
        "invocation_status": "COMPLETED",
        "last_updated_at": "2023-03-27T11:14:51.943421-04:00",
        "partner_name": "truework-instant",
        "product_invocation_id": "01GWHT5PNPJA3JE0BT1DY3H24H",
        "product_name": "income"
      },
      "data": {
        "income": [
          {
            "has_income_year": {
              "has_value": "2023"
            },
            "has_income_pay_frequency_type": {
              "has_value": "hourly"
            },
            "has_base_income_amount": {
              "has_value": 11700
            },
            "@type": "employment_income",
            "@id": "01H14SCKEG11HTXK6RE0D36QKE",
            "has_income_amount": {
              "has_value": 17349.38
            },
            "has_overtime_income_amount": {
              "has_value": 5649.38
            },
            "has_bonus_income_amount": {
              "has_value": 0
            },
            "earned_from": [
              "01H14SCKEGTTW42HVP124G89Y8"
            ],
            "has_commission_income_amount": {
              "has_value": 0
            }
          },
          {
            "has_income_year": {
              "has_value": "2022"
            },
            "has_income_pay_frequency_type": {
              "has_value": "hourly"
            },
            "has_base_income_amount": {
              "has_value": 31200
            },
            "@type": "employment_income",
            "@id": "01H14SCKEG31158MXP266XHQ69",
            "has_income_amount": {
              "has_value": 44020
            },
            "has_overtime_income_amount": {
              "has_value": 10820
            },
            "has_bonus_income_amount": {
              "has_value": 2000
            },
            "earned_from": [
              "01H14SCKEGTTW42HVP124G89Y8"
            ],
            "has_commission_income_amount": {
              "has_value": 0
            }
          }
        ],
        "contact_point_emails": [
          {
            "@type": "contact_point_email",
            "@id": "01H14SCKEGYK7KM0SD6BHR0TRP",
            "has_contact_point_email_value": {
              "has_value": "test@test.com"
            }
          }
        ],
        "employers": [
          {
            "with_verification": [
              "01H14SCKEGADZWNJ1MN6ARBSK4"
            ],
            "with_employment": [
              "01H14SCKEGTTW42HVP124G89Y8"
            ],
            "@id": "01H14SCKEGTGPTFZEJ1JESD1YG",
            "@type": "employer"
          }
        ],
        "addresses": [
          {
            "@type": "business_address",
            "has_country_name": {
              "has_value": "US"
            },
            "@id": "01H14SCKEX6STTM90HNQEDRVSP"
          }
        ],
        "contact_points": [
          {
            "with_contact_point_email": [
              "01H14SCKEGYK7KM0SD6BHR0TRP"
            ],
            "@type": "contact_point",
            "@id": "01H14SCKEX0H1YDD8X48EMD3P5"
          }
        ],
        "organizations": [
          {
            "has_organization_name": {
              "has_value": "Fake Company"
            },
            "@type": "organization",
            "@id": "01H14SCKEXV76WE03DJBKDDVX7"
          }
        ],
        "mortgage_products": [
          {
            "has_partner_product_name": {
              "has_value": "employment-income"
            },
            "has_response_datetime": {
              "has_value": "2023-05-23 17:09:24.709727+00:00"
            },
            "@type": "mortgage_product",
            "has_request_datetime": {
              "has_value": "2023-05-23 17:09:23.664080+00:00"
            },
            "has_partner_transaction_identifier": {
              "has_value": "AAAAAAAGxL0ABwNlUkhIDmI5qVwPSM5AdbIgWZfzfAsPMkGBHbH83-9T"
            },
            "@id": "01H14SCKEXHGHAH3D1TR1FZ4J2",
            "has_partner_name": {
              "has_value": "Truework-Instant"
            }
          }
        ],
        "employment": [
          {
            "has_current_employment_indicator": {
              "has_value": true
            },
            "has_employment_start_date": {
              "has_value": "2022-05-19"
            },
            "has_employment_type": {
              "has_value": "employed"
            },
            "@type": "employment",
            "earns": [
              "01H14SCKEG11HTXK6RE0D36QKE"
            ],
            "has_employment_position_description": {
              "has_value": "Customer Service Representative"
            },
            "provided_by": [
              "01H14SCKEXV76WE03DJBKDDVX7"
            ],
            "@id": "01H14SCKEGTTW42HVP124G89Y8"
          }
        ],
        "verifications": [
          {
            "has_verification_report_identifier": {
              "has_value": "AAAAAAADh_8AC7bZquqdW-RPCi-iLBVMgEXFNgSm0_kmWpyB2lDGmNGc"
            },
            "@type": "verification",
            "@id": "01H14SCKEGADZWNJ1MN6ARBSK4"
          }
        ],
        "people": [
          {
            "has_taxpayer_identifier_value": {
              "has_value": "***-**-0004"
            },
            "@type": "borrower",
            "earns": [
              "01H14SCKEG31158MXP266XHQ69",
              "01H14SCKEG11HTXK6RE0D36QKE"
            ],
            "has_birth_date": {
              "has_value": "1973-01-01"
            },
            "has_last_name": {
              "has_value": "Jackson"
            },
            "@id": "01H14SCKEX8SWVYQ9GYKNKFGHW",
            "with_contact_point": [
              "01H14SCKEX0H1YDD8X48EMD3P5"
            ],
            "works_for": [
              "01H14SCKEXV76WE03DJBKDDVX7"
            ],
            "has_first_name": {
              "has_value": "John"
            }
          }
        ]
      }
    }
    Parameters
    2
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Environment API Key.
    id required string (Staircase Response Collection Identifier) path 01FFMHWSS346W9V6HZVGSEZPQ Income ID
    Response 200application/json
    4 fields

    Successfully returned result of the Income Verification.

    FieldTypeDescription
    transaction_idstring (ulid)Transaction ID.Example 01EZQ32PJQGKRA6HR8D72Q9FFF
    collection_idstring (ulid)Collection ID.Example 01EZQ32PJQGKRA6HR8D72Q9FFF
    dataobjectIncome Data in Staircase lexicon schema.
    metadataobjectMetadata about collection, f.e version of used Staircase schema.
    product_namestringProduct nameExample income
    partner_namestringPartner nameExample truework-instant
    created_atstringTime of creation
    last_updated_atstringTime of last update
    invocation_statusstringStatus of the Income Verification.COMPLETEDFAILEDRUNNINGSTARTED
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messageone ofMessage
    Response 403application/json
    2 fields

    403 invalid error

    FieldTypeDescription
    messagestringError message.
    urlstringError additional URL.
    Response 404application/json
    1 fields

    Resource not found

    FieldTypeDescription
    messagestringMessage
    Response 500application/json
    1 fields

    Internal server error

    FieldTypeDescription
    messagestringError message.

    Setup

    POST /argyle/credentials

    Set Argyle Credentials

    setArgyleCredentials

    By using Set Argyle Credentials API we allow our customers to configure Argyle in customer environment.

    If you want to use your own Argyle contract for verification , please check Request body Schema example for required values from partner side and run Set Argyle Credentials API

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "client_id": "--------",
      "client_secret": "<redacted>",
      "link_key": "--------",
      "contract": "BYOC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    5 fields
    FieldTypeDescription
    client_idrequiredstringArgyle client ID value
    client_secretrequiredstringArgyle client secret value
    link_keyrequiredstringArgyle link key
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /atomic/credentials

    Set Atomic Credentials

    setAtomicCredentials

    By using Set Atomic Credentials API we allow our customers to configure Atomic partner in customer environment.

    If you want to use your own Atomic contract for verification , please check Request body Schema example for required values from partner side and run Set Atomic Credentials API

    Below is a step-by-step guide on how to add the webhook on partner dashboard.

    Show the rest

    If you don't add webhook on partner dashboard, verification will be triggered, but response of the verification will not be available, and you can be charged for verification.

    Adding webhook workflow:

    1. Login to your Atomic Dashboard using your username and password.

    2. In the navigation menu browse to Settings.

    3. Under Webhooks, click the Add endpoint button.

    4. Add the following URL to the Endpoint URL input field:

    NOTE: Change SUBDOMAIN value with your actual domain name

    1. Add Task status updates to the Events input field.

    2. Click on Add endpoint.

    Please check Request body Schema example for required values from partner side.

    You can check the partner status by calling the Retrieve Partners endpoint

    You are now ready to use the partner integration.

    Request
    application/json
    {
      "client_key": "--------",
      "client_secret": "<redacted>",
      "username": "test@test.com",
      "password": "<redacted>",
      "contract": "SC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    6 fields
    FieldTypeDescription
    client_keystringAtomic client key
    client_secretrequiredstringAtomic client secret
    usernamerequiredstringAtomic username
    passwordrequiredstringAtomic password
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /equifax/credentials

    Set Equifax Credentials

    setEquifaxCredentials

    By using Set Equifax Credentials API we allow our customers to configure Equifax partner in customer environment.

    If you want to use your own Equifax contract for verification , please check Request body Schema example for required values from partner side and run Set Equifax Credentials API.

    To enable partner Equifax for verification you need to:

    Setting credentials

    Show the rest

    Add all key values for your Equifax, TheWorkNumber Account : "twn_username", "twn_password" , "pfx_certificate_password" and "type" in request body.

    Please check request body schema example.

    PFX certificate

    In addition to setting credentials for Equifax you need to upload a PFX certificate. Use Upload Equifax Certificate API to upload certificate to your environment. PFX Certificate needs to be provided by Equifax. If you don't have it, you will not be able to use Equifax as partner for verification.

    If this is the case please contact your Equifax Account Manager, and get PFX certificate and password for certificate.

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "twn_username": "UserNameIntgTEST@5005",
      "twn_password": "I_9087POK",
      "pfx_certificate_password": "9huoiqhiokopj9iu",
      "contract": "SC",
      "type": "production"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    5 fields
    FieldTypeDescription
    twn_usernamerequiredstringEquifax The Work Number username
    twn_passwordrequiredstringEquifax The Work Number password
    pfx_certificate_passwordstringEquifax PFX Certificate password
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /equifax/certificate

    Upload Equifax Certificate

    uploadEquifaxCertificate

    Upload Equifax Certificate For uploading Equifax PFX Certificate you will need to issue a POST request to this endpoint. Upload Equifax Certificate uploads a .pfx document to our services. You can upload the certificate using HTML Request Maker Try It Out. Place your api_key in the request header, please make sure Content-Type is set to application/x-pkcs12. Set the request body to binary and browse to your PFX Certificate. Click Send to upload your certificate. To upload a certificate programmatically, use the upload example below. After you get a successful response, you can start using the Equifax integration.

    import requests
    url = ""
    payload = open("certificate.pfx", "rb")
    headers = {
     'x-api-key': 'API_KEY',
     'Content-Type': 'application/x-pkcs12'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    print(response.text)
    
    Request
    application/json
    Select option 'binary' in order to upload file
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Certificate uploaded and saved successfully"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /truework/credentials

    Set Truework Credentials

    setTrueworkCredentials

    By using Set Truework Credentials API we allow our customers to configure Truework partner in customer environment.

    If you want to use your own Truework contract for verification , please check Request body Schema example for required values from partner side and run Set Truework Credentials API

    Below is a step-by-step guide on how to add the webhook on partner dashboard:

    Show the rest

    If you don't add webhook on partner dashboard, verification will be triggered, but response of the verification will not be available, and you can be charged for verification.

    1. Login to your Truework Dashboard using your username and password.

    2. In the navigation menu browse to Developer.

    3. Under API Settings, Production Webhooks click the Edit button.

    4. Under the Add Production Webhook section click the Event input and select "Verification Request Status Changed"

    5. Select the Target input and add the following URL:

    NOTE: Change SUBDOMAIN value with your actual domain name

    1. Click on Create.

    Please check Request body Schema example for required values from partner side.

    You can check the partner status by calling the Retrieve Partners endpoint

    You are now ready to use the partner integration.

    Request
    application/json
    {
      "token": "<redacted>",
      "username": "test@test.com",
      "password": "<redacted>",
      "contract": "BYOC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    5 fields
    FieldTypeDescription
    tokenrequiredstringTruework token for API
    usernamestringTruework username
    passwordstringTruework password
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /truework-instant/credentials

    Set Truework Instant Credentials

    setTrueworkInstantCredentials

    Set Truework-Instant Credentials

    By using Set Truework-instant Credentials API we allow our customers to configure Truework Instant partner in customer environment for instant verifications.

    If you want to use your own Truework contract for verification, please check Request body Schema example for required values from partner side and run Set Truework Instant Credentials API

    Please check Request body Schema example for required values from partner side.

    You can check the partner status by calling the Retrieve Partners endpoint

    You are now ready to use the partner integration.

    Request
    application/json
    {
      "token": "<redacted>",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    2 fields
    FieldTypeDescription
    tokenrequiredstringTruework-Instant token for API
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /pinwheel/credentials

    Set Pinwheel Credentials

    setPinwheelCredentials

    By using Set Pinwheel Credentials API we allow our customers to configure Pinwheel partner in customer environment.

    If you want to use your own Pinwheel contract for verification , please check Request body Schema example for required values from partner side and run Set Pinwheel Credentials API.

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "x_api_secret": "--------",
      "contract": "SC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    3 fields
    FieldTypeDescription
    x_api_secretrequiredstringPinwheel API secret
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /plaid/credentials

    Set Plaid Credentials

    setPlaidCredentials

    By using Set Plaid Credentials API we allow our customers to configure Plaid partner in customer environment.

    If you want to use your own Plaid contract for verification , please check Request body Schema example for required values from partner side and run Set Plaid Credentials API.

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "client_id": "90876sad58908dsd6890",
      "client_secret": "<redacted>",
      "contract": "BYOC",
      "type": "production"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    4 fields
    FieldTypeDescription
    client_idrequiredstringPlaid client ID
    client_secretrequiredstringPlaid client secret
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /meridian/credentials

    Set Meridian Credentials

    setMeridianCredentials

    By using Set Meridian Credentials API we allow our customers to configure Meridian in customer environment.

    If you want to use your own Meridian contract for verification, please check Request body Schema example for required values from partner side and run Set Meridian Credentials API.

    We currently can't provide Staircase contract for Meridian.

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "client_id": "--------",
      "client_secret": "<redacted>",
      "domain": "example.domain.com",
      "mcl": "--------",
      "contract": "BYOC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    6 fields
    FieldTypeDescription
    client_idrequiredstringMeridian client ID
    client_secretrequiredstringMeridian client secret
    domainrequiredstringMeridian domain
    mclrequiredstringMeridian MCL schema
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typestringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /truv/credentials

    Set Truv Credentials

    setTruvCredentials

    By using Set Truv Credentials API we allow our customers to configure Meridian in customer environment.

    If you want to use your own Truv contract for verification , please check Request body Schema example for required values from partner side and run Set Truv Credentials API.

    We currently can't provide Staircase contract for Truv.

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "client_id": "--------",
      "client_secret": "<redacted>",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    3 fields
    FieldTypeDescription
    client_idrequiredstringTruv client ID
    client_secretrequiredstringTruv client secret
    typerequiredstringType of credentials, can be either test or productionproductiontest
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /experian/credentials

    Set Experian Credentials

    setExperianCredentials

    By using Set Experian Credentials API we allow our customers to configure Experian in customer environment.

    If you want to use your own Experian contract for verification, please check Request body Schema example for required values from partner side and run Set Experian Credentials API.

    You can check the partner status by calling the Retrieve Partners endpoint.

    Request
    application/json
    {
      "client_id": "--------",
      "client_secret": "<redacted>",
      "username": "--------",
      "password": "<redacted>",
      "contract": "BYOC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    6 fields
    FieldTypeDescription
    client_idrequiredstringExperian client ID
    client_secretrequiredstringExperian client secret
    usernamerequiredstringExperian username
    passwordrequiredstringExperian password
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or productionproductiontest
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    POST /finicity/credentials

    Set Finicity Credentials

    setFinicityCredentials

    By using Set Finicity Credentials API we allow our customers to configure Finicity partner in customer environment.

    If you want to use your own Finicity contract for verification , please check Request body Schema example for required values from partner side and run Set Finicity Credentials API.

    You can check the partner status by calling the Retrieve Partners endpoint

    Request
    application/json
    {
      "partnerId": "--------",
      "partnerSecret": "--------",
      "apiKey": "<redacted>",
      "contract": "SC",
      "type": "test"
    }
    Response
    application/json

    Setup API Triggered Successfully

    {
      "message": "Credentials are saved and verified"
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Environment API Key
    Request bodyapplication/json
    5 fields
    FieldTypeDescription
    partnerIdrequiredstringFinicity partner ID
    partnerSecretrequiredstringFinicity partner secret
    apiKeyrequiredstringFinicity API key
    contractstringPartner contract type, Staircase contract (SC) or bring your own contract (BYOC) - if not set default value is BYOC
    typerequiredstringType of credentials, can be either test or production
    Response 200application/json
    1 fields

    Setup API Triggered Successfully

    FieldTypeDescription
    messagestringMessage
    Response 400application/json
    1 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 422application/json
    2 fields

    Request data failed validation

    FieldTypeDescription
    messagestringMessage
    errorstringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error

    FieldTypeDescription
    messagestringError Message
    Other responses

    404

    Platform

    GET /products/income/request-schema

    Retrieve Example Schema

    retrieveSchema

    Retrieve Schema retrieves a JSON schema for the request and the response returned by the product. It can also return an example of a json object defined with schema.

    Testing Income:

    If you want an example collection:

    • In the query parameters set return_examples to true

    You can directly pass an example returned by the /request-schema endpoint into the Create Collection endpoint as a request body.

    Response
    application/json

    Successfully returned the list of elements needed for Income.

    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "properties": {
        "deal_sets": {
          "type": "object",
          "properties": {
            "deal_set": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "deals": {
                    "type": "object",
                    "properties": {
                      "deal": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "parties": {
                              "type": "object",
                              "properties": {
                                "party": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "customer_transaction_ID": {
                                        "type": "string"
                                      },
                                      "individual": {
                                        "type": "object",
                                        "properties": {
                                          "contact_points": {
                                            "type": "object",
                                            "properties": {
                                              "contact_point": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "contact_point_telephone": {
                                                      "type": "object",
                                                      "properties": {
                                                        "value": {
                                                          "type": "string"
                                                        }
                                                      },
                                                      "required": [
                                                        "value"
                                                      ]
                                                    },
                                                    "contact_point_email": {
                                                      "type": "object",
                                                      "properties": {
                                                        "value": {
                                                          "type": "string"
                                                        }
                                                      },
                                                      "required": [
                                                        "value"
                                                      ]
                                                    }
                                                  },
                                                  "required": [
                                                    "contact_point_telephone",
                                                    "contact_point_email"
                                                  ]
                                                }
                                              }
                                            },
                                            "required": [
                                              "contact_point"
                                            ]
                                          },
                                          "name": {
                                            "type": "object",
                                            "properties": {
                                              "first": {
                                                "type": "string"
                                              },
                                              "last": {
                                                "type": "string"
                                              }
                                            },
                                            "required": [
                                              "first",
                                              "last"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "contact_points",
                                          "name"
                                        ]
                                      },
                                      "roles": {
                                        "type": "object",
                                        "properties": {
                                          "role": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "borrower": {
                                                  "type": "object",
                                                  "properties": {
                                                    "birth_date": {
                                                      "type": "string"
                                                    },
                                                    "employers": {
                                                      "type": "object",
                                                      "properties": {
                                                        "employer": {
                                                          "type": "array",
                                                          "items": {
                                                            "type": "object",
                                                            "properties": {
                                                              "legal_entity": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "full_name": {
                                                                    "type": "string"
                                                                  }
                                                                },
                                                                "required": [
                                                                  "full_name"
                                                                ]
                                                              }
                                                            },
                                                            "required": [
                                                              "legal_entity"
                                                            ]
                                                          }
                                                        }
                                                      },
                                                      "required": [
                                                        "employer"
                                                      ]
                                                    },
                                                    "residences": {
                                                      "type": "object",
                                                      "properties": {
                                                        "residence": {
                                                          "type": "array",
                                                          "items": {
                                                            "type": "object",
                                                            "properties": {
                                                              "address": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "additional_line_text": {
                                                                    "type": "string"
                                                                  },
                                                                  "city": {
                                                                    "type": "string"
                                                                  },
                                                                  "country": {
                                                                    "type": "string"
                                                                  },
                                                                  "line_text": {
                                                                    "type": "string"
                                                                  },
                                                                  "postal_code": {
                                                                    "type": "string"
                                                                  },
                                                                  "state_code": {
                                                                    "type": "string"
                                                                  }
                                                                },
                                                                "required": [
                                                                  "additional_line_text",
                                                                  "city",
                                                                  "country",
                                                                  "line_text",
                                                                  "postal_code",
                                                                  "state_code"
                                                                ]
                                                              }
                                                            },
                                                            "required": [
                                                              "address"
                                                            ]
                                                          }
                                                        }
                                                      },
                                                      "required": [
                                                        "residence"
                                                      ]
                                                    }
                                                  },
                                                  "required": [
                                                    "birth_date",
                                                    "employers",
                                                    "residences"
                                                  ]
                                                }
                                              },
                                              "required": [
                                                "borrower"
                                              ]
                                            }
                                          }
                                        },
                                        "required": [
                                          "role"
                                        ]
                                      },
                                      "taxpayer_identifiers": {
                                        "type": "object",
                                        "properties": {
                                          "taxpayer_identifier": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "value": {
                                                  "type": "string"
                                                }
                                              },
                                              "required": [
                                                "value"
                                              ]
                                            }
                                          }
                                        },
                                        "required": [
                                          "taxpayer_identifier"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "customer_transaction_ID",
                                      "individual",
                                      "roles",
                                      "taxpayer_identifiers"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "party"
                              ]
                            }
                          },
                          "required": [
                            "parties"
                          ]
                        }
                      }
                    },
                    "required": [
                      "deal"
                    ]
                  }
                },
                "required": [
                  "deals"
                ]
              }
            }
          },
          "required": [
            "deal_set"
          ]
        },
        "document_sets": {
          "type": "object",
          "properties": {
            "document_set": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "documents": {
                    "type": "object",
                    "properties": {
                      "document": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "document_classification": {
                              "type": "object",
                              "properties": {
                                "document_classes": {
                                  "type": "object",
                                  "properties": {
                                    "document_class": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "staircase_type": {
                                            "type": "string"
                                          },
                                          "type": {
                                            "type": "string"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "foreign_objects": {
                              "type": "object",
                              "properties": {
                                "foreign_object": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "description": {
                                        "type": "string"
                                      },
                                      "mime_type_identifier": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "staircase_blob_id": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "required": [
        "deal_sets"
      ]
    }
    Parameters
    2
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
    return_examples boolean query false If included and set to `true`, returns one or more pre-filled examples that conform to the schema. Default to `false`
    Response 400application/json
    1 fields

    Error

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Other responses

    200

    GET /schema/{data_object}

    Retrieve Example Schema

    retrieveSchema

    Retrieve Schema retrieves a JSON schema for the request and the response returned by the product. It can also return an example of a json object defined with schema.

    Testing Income:

    If you want an example collection:

    • To path parameter data_object add request
    • In the query parameters set return_examples to true
    • Based on the language version you want to use you can set the query parameter version to either v0 or v2. The default value is v2

    You can directly pass an example returned by the /schema endpoint into the Create Collection endpoint as a request body.

    Response
    application/json

    Successfully returned the list of elements needed for Income.

    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "properties": {
        "deal_sets": {
          "type": "object",
          "properties": {
            "deal_set": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "deals": {
                    "type": "object",
                    "properties": {
                      "deal": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "parties": {
                              "type": "object",
                              "properties": {
                                "party": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "customer_transaction_ID": {
                                        "type": "string"
                                      },
                                      "individual": {
                                        "type": "object",
                                        "properties": {
                                          "contact_points": {
                                            "type": "object",
                                            "properties": {
                                              "contact_point": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "contact_point_telephone": {
                                                      "type": "object",
                                                      "properties": {
                                                        "value": {
                                                          "type": "string"
                                                        }
                                                      },
                                                      "required": [
                                                        "value"
                                                      ]
                                                    },
                                                    "contact_point_email": {
                                                      "type": "object",
                                                      "properties": {
                                                        "value": {
                                                          "type": "string"
                                                        }
                                                      },
                                                      "required": [
                                                        "value"
                                                      ]
                                                    }
                                                  },
                                                  "required": [
                                                    "contact_point_telephone",
                                                    "contact_point_email"
                                                  ]
                                                }
                                              }
                                            },
                                            "required": [
                                              "contact_point"
                                            ]
                                          },
                                          "name": {
                                            "type": "object",
                                            "properties": {
                                              "first": {
                                                "type": "string"
                                              },
                                              "last": {
                                                "type": "string"
                                              }
                                            },
                                            "required": [
                                              "first",
                                              "last"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "contact_points",
                                          "name"
                                        ]
                                      },
                                      "roles": {
                                        "type": "object",
                                        "properties": {
                                          "role": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "borrower": {
                                                  "type": "object",
                                                  "properties": {
                                                    "birth_date": {
                                                      "type": "string"
                                                    },
                                                    "employers": {
                                                      "type": "object",
                                                      "properties": {
                                                        "employer": {
                                                          "type": "array",
                                                          "items": {
                                                            "type": "object",
                                                            "properties": {
                                                              "legal_entity": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "full_name": {
                                                                    "type": "string"
                                                                  }
                                                                },
                                                                "required": [
                                                                  "full_name"
                                                                ]
                                                              }
                                                            },
                                                            "required": [
                                                              "legal_entity"
                                                            ]
                                                          }
                                                        }
                                                      },
                                                      "required": [
                                                        "employer"
                                                      ]
                                                    },
                                                    "residences": {
                                                      "type": "object",
                                                      "properties": {
                                                        "residence": {
                                                          "type": "array",
                                                          "items": {
                                                            "type": "object",
                                                            "properties": {
                                                              "address": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "additional_line_text": {
                                                                    "type": "string"
                                                                  },
                                                                  "city": {
                                                                    "type": "string"
                                                                  },
                                                                  "country": {
                                                                    "type": "string"
                                                                  },
                                                                  "line_text": {
                                                                    "type": "string"
                                                                  },
                                                                  "postal_code": {
                                                                    "type": "string"
                                                                  },
                                                                  "state_code": {
                                                                    "type": "string"
                                                                  }
                                                                },
                                                                "required": [
                                                                  "additional_line_text",
                                                                  "city",
                                                                  "country",
                                                                  "line_text",
                                                                  "postal_code",
                                                                  "state_code"
                                                                ]
                                                              }
                                                            },
                                                            "required": [
                                                              "address"
                                                            ]
                                                          }
                                                        }
                                                      },
                                                      "required": [
                                                        "residence"
                                                      ]
                                                    }
                                                  },
                                                  "required": [
                                                    "birth_date",
                                                    "employers",
                                                    "residences"
                                                  ]
                                                }
                                              },
                                              "required": [
                                                "borrower"
                                              ]
                                            }
                                          }
                                        },
                                        "required": [
                                          "role"
                                        ]
                                      },
                                      "taxpayer_identifiers": {
                                        "type": "object",
                                        "properties": {
                                          "taxpayer_identifier": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "value": {
                                                  "type": "string"
                                                }
                                              },
                                              "required": [
                                                "value"
                                              ]
                                            }
                                          }
                                        },
                                        "required": [
                                          "taxpayer_identifier"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "customer_transaction_ID",
                                      "individual",
                                      "roles",
                                      "taxpayer_identifiers"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "party"
                              ]
                            }
                          },
                          "required": [
                            "parties"
                          ]
                        }
                      }
                    },
                    "required": [
                      "deal"
                    ]
                  }
                },
                "required": [
                  "deals"
                ]
              }
            }
          },
          "required": [
            "deal_set"
          ]
        },
        "document_sets": {
          "type": "object",
          "properties": {
            "document_set": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "documents": {
                    "type": "object",
                    "properties": {
                      "document": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "document_classification": {
                              "type": "object",
                              "properties": {
                                "document_classes": {
                                  "type": "object",
                                  "properties": {
                                    "document_class": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "staircase_type": {
                                            "type": "string"
                                          },
                                          "type": {
                                            "type": "string"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "foreign_objects": {
                              "type": "object",
                              "properties": {
                                "foreign_object": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "description": {
                                        "type": "string"
                                      },
                                      "mime_type_identifier": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "staircase_blob_id": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "required": [
        "deal_sets"
      ]
    }
    Parameters
    4
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
    data_object required string path request Describes the particular data object you are getting a schema for. Can be either request or response.
    return_examples boolean query false If included and set to `true`, returns one or more pre-filled examples that conform to the schema. Default to `false`
    version string query v2 Defines the version of the Staircase language you want the JSON to return in. Can be either v0 or v2.
    Response 400application/json
    1 fields

    Error

    FieldTypeDescription
    messagestringMessage
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Other responses

    200

    GET /transactions/{transaction_id}/collections

    Retrieve Transaction Collections

    RetrieveTransactionCollections

    Retrieve Transaction Collections retrieves a list of all collections associated with a transaction.

    Response
    application/json

    Transaction collection retrieved successfully

    {
      "collection_id": "01G4CSWKK6HRABWRZNM0J6BEXK",
      "data": {
        "addresses": [
          {
            "@id": "01G0F11KE743JYDTZK6JSJSZUY",
            "@type": "residential_address",
            "has_address_line_1_text": {
              "has_value": "33 IRVING PLACE"
            },
            "has_city_name": {
              "has_value": "NEW YORK"
            },
            "has_country_name": {
              "has_value": "US"
            },
            "has_postal_code": {
              "has_value": "10003"
            },
            "has_state_code": {
              "has_value": "NY"
            }
          },
          {
            "@id": "01G4CSY8CJ30N1ZWNH3W4TEF9H",
            "@type": "business_address",
            "has_address_line_1_text": {
              "has_value": "1313 Mockingbird Lane"
            },
            "has_city_name": {
              "has_value": "Olympia"
            },
            "has_country_name": {
              "has_value": "US"
            },
            "has_postal_code": {
              "has_value": "82943-9302"
            },
            "has_state_code": {
              "has_value": "NY"
            }
          }
        ],
        "contact_information": [
          {
            "@id": "01G0F11KE743JYDTZK6JSJSYCR",
            "@type": "contact_information",
            "has_email_address": {
              "has_value": "test@test.com"
            },
            "has_phone_number": {
              "has_value": "+123456789"
            }
          }
        ],
        "documents": [
          {
            "@id": "01G4CSYSAREBF6Y4GY2MNPJBEG",
            "@type": "verification_of_income",
            "has_document_description": {
              "has_value": "Income Verification Report prepared by Staircase"
            },
            "has_document_mime_type": {
              "has_value": "application/pdf"
            },
            "has_document_name": {
              "has_value": "01G4CSYKZQKZN4PCRZHQD0XNJB.pdf"
            },
            "has_staircase_blob_identifier": {
              "has_value": "01G4CSYKZQKZN4PCRZHQD0XNJB"
            },
            "has_staircase_document_category_type": {
              "has_value": "staircase"
            }
          },
          {
            "@id": "01G0EX4VT41ZF22QWXH1QBTZPF",
            "@type": "verification_of_income",
            "has_document_description": {
              "has_value": "Income Verification Report prepared by Partner"
            },
            "has_document_mime_type": {
              "has_value": "application/pdf"
            },
            "has_document_name": {
              "has_value": "01G0EX4VT41ZF22QWXH1QBTZPF.pdf"
            },
            "has_staircase_blob_identifier": {
              "has_value": "01G0EX4VT41ZF22QWXH1QBTZPF"
            },
            "has_staircase_document_category_type": {
              "has_value": "partner"
            }
          }
        ],
        "employment": [
          {
            "@id": "01G0F11KE743JYDTZK6JSJSPOQ",
            "@type": "employment",
            "has_current_employment_indicator": {
              "has_value": true
            },
            "has_employment_monthly_income_amount": {
              "has_value": 7000
            },
            "has_employment_position_description": {
              "has_value": "HR ADMININSTRATOR"
            },
            "has_employment_start_date": {
              "has_value": "2014-01-01"
            },
            "provided_by": [
              "01G0F11KE743JYDTZK6JSJSTIY"
            ]
          }
        ],
        "income": [
          {
            "@id": "01G4CSY8CK4K120TWKECZXHGGA",
            "@type": "employment_income",
            "earned_from": [
              "01G4CSY8CJXPA8R5SFVSTEQ188"
            ],
            "has_bonus_income_amount": {
              "has_value": 0
            },
            "has_income_amount": {
              "has_value": 22615.38
            },
            "has_income_pay_frequency_type": {
              "has_value": "monthly"
            },
            "has_income_year": {
              "has_value": "2022"
            },
            "has_other_income_amount": {
              "has_value": 0
            },
            "has_overtime_income_amount": {
              "has_value": 0
            }
          },
          {
            "@id": "01G4CSY8CKKBSYGQXA5D5KY8A9",
            "@type": "employment_income",
            "earned_from": [
              "01G4CSY8CJXPA8R5SFVSTEQ188"
            ],
            "has_bonus_income_amount": {
              "has_value": 0
            },
            "has_income_amount": {
              "has_value": 84000
            },
            "has_income_pay_frequency_type": {
              "has_value": "monthly"
            },
            "has_income_year": {
              "has_value": "2021"
            },
            "has_other_income_amount": {
              "has_value": 0
            },
            "has_overtime_income_amount": {
              "has_value": 0
            }
          },
          {
            "@id": "01G4CSY8CK3RJAF6WP0XQN2JQW",
            "@type": "employment_income",
            "earned_from": [
              "01G4CSY8CJXPA8R5SFVSTEQ188"
            ],
            "has_bonus_income_amount": {
              "has_value": 0
            },
            "has_income_amount": {
              "has_value": 80000
            },
            "has_income_pay_frequency_type": {
              "has_value": "monthly"
            },
            "has_income_year": {
              "has_value": "2020"
            },
            "has_other_income_amount": {
              "has_value": 0
            },
            "has_overtime_income_amount": {
              "has_value": 0
            }
          }
        ],
        "mortgage_products": [
          {
            "@id": "01G4CSYB2B2JZW01E660FHJED5",
            "@type": "income",
            "has_partner_name": {
              "has_value": "Partner"
            },
            "has_service_response_date": {
              "has_value": "2022-05-31"
            }
          }
        ],
        "loans": [
          {
            "@id": "01G3B5DKRT27W61Y3ZK57JSGBE",
            "@type": "loan",
            "has_day_1_certainty_indicator": {
              "has_value": "123456789"
            }
          }
        ],
        "organizations": [
          {
            "@id": "01G0F11KE743JYDTZK6JSJSTIY",
            "@type": "organization",
            "has_organization_name": {
              "has_value": "Amazon"
            },
            "with_address": [
              "01G4CSY8CJ30N1ZWNH3W4TEF9H"
            ]
          }
        ],
        "people": [
          {
            "@id": "01G4CSY8CJ5X9MPA2VR5AH97YB",
            "@type": "borrower",
            "contact_at": [
              "01G0F11KE743JYDTZK6JSJSYCR"
            ],
            "earns": [
              "01G4CSY8CKKBSYGQXA5D5KY8A9",
              "01G4CSY8CK3RJAF6WP0XQN2JQW",
              "01G4CSY8CK4K120TWKECZXHGGA"
            ],
            "employed_as": [
              "01G0F11KE743JYDTZK6JSJSPOQ"
            ],
            "has_birth_date": {
              "has_value": "1973-01-01"
            },
            "has_first_name": {
              "has_value": "Happy"
            },
            "has_last_name": {
              "has_value": "Traveler"
            },
            "has_taxpayer_identifier_value": {
              "has_value": "666991238"
            },
            "with_address": [
              "01G4CSY8CJ30N1ZWNH3W4TEF9H",
              "01G0F11KE743JYDTZK6JSJSZUY"
            ],
            "works_for": [
              "01G0F11KE743JYDTZK6JSJSTIY"
            ]
          }
        ]
      },
      "metadata": {
        "created_at": "2022-05-31T06:16:54.118103-04:00",
        "invocation_status": "COMPLETED",
        "last_updated_at": "2022-05-31T06:18:22.606643-04:00",
        "partner_language": "income-equifax-output",
        "product_name": "income",
        "report_download_urls": {
          "income_report": {
            "blob_id": "01G4CSYKZQKZN4PCRZHQD0XNJB",
            "download_url": "https://dev-data-manager-blobs-bucket-us-east-1-026452950730.s3.amazonaws.com/01G4CSYKZQKZN4PCRZHQD0XNJB.pdf?response-content-type=application%2Fpdf&AWSAccessKeyId=<redacted>&Signature=<redacted>&x-amz-security-token=<redacted>&Expires=1653995880",
            "status": "Succeeded"
          }
        },
        "service_invocation": {
          "Connector": {
            "connector_flow_name": "income",
            "debug_config": {
              "dry_run": true
            },
            "invocation_id": "1f15fe83-7b8a-4123-b645-c62e0d922612",
            "status": "COMPLETED"
          },
          "Language": {
            "input": {
              "from_language": "staircase-graph",
              "invocation_id": "01G4CSX1GYCSCHYYEZCXT1DPYQ",
              "status": "COMPLETED",
              "to_language": "income-input"
            },
            "output": {
              "from_language": "income-equifax-output",
              "invocation_id": "01G4CSY55AZ4TH9X29ZE4YQAB0",
              "status": "COMPLETED",
              "to_language": "staircase-graph"
            }
          },
          "report_mapping": {
            "invocation_id": "01G4CSYMQ5QXV05P70CB6ZH92E",
            "language_name": "income-report-mapping",
            "status": "COMPLETED"
          }
        },
        "staircase_language_version": 2,
        "validation": false,
        "version": 2
      },
      "transaction_id": "01G4CSWCBM2QE3QXTDEM4AEPBK"
    }
    Parameters
    2
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
    transaction_id required string (ulid) path 01F0KHK7DN3H5JZ4QJKMYAM6GB Staircase Transaction Identifier
    Response 200application/json
    5 fields

    Transaction collection retrieved successfully

    FieldTypeDescription
    peoplerequiredobject[]Borrower - People array
    @typerequiredstringPeople type - can be borrower, co-borrower etc.
    @idrequiredstringPeople object ID
    has_first_namerequiredobjectBorrower first name
    has_valuerequiredstringBorrower first name value
    has_last_namerequiredobjectBorrower last name
    has_valuerequiredstringBorrower last name value
    has_birth_daterequiredobjectBorrower birthdate
    has_valuerequiredstringBorrower birthdate value - (yyyy-MM-dd)
    has_taxpayer_identifier_valuerequiredobjectBorrower taxpayer identifier (SSN)
    has_valuerequiredstringBorrower taxpayer identifier (SSN) - (XXXXXXXXX)
    with_addressrequiredstring[]ID referencing the address array
    contact_atrequiredstring[]ID referencing the contact information array
    works_forrequiredstring[]ID referencing the organizations array
    addressesobject[]Borrower address array
    @typestringBorrower address type - can be residential_address, business_address etc.
    @idstringBorrower address object ID
    has_address_line_1_textobjectAddress line text
    has_valuerequiredstringAddress line text value
    has_address_line_2_textobjectAddress line text
    has_valuerequiredstringAddress line text value
    has_city_nameobjectAddress city name
    has_valuerequiredstringAddress city name value
    has_state_codeobjectAddress state code
    has_valuerequiredstringAddress state code value
    has_postal_codeobjectAddress postal code
    has_valuerequiredstringAddress postal code value
    has_country_nameobjectAddress country name
    has_valuerequiredstringAddress country name value
    contact_informationrequiredobject[]Borrower - contact information array
    @typerequiredstringBorrower contact information type
    @idrequiredstringBorrower contact information ID
    has_email_addressrequiredobjectBorrower email address
    has_valuerequiredstringBorrower email address value
    has_phone_numberrequiredobjectBorrower phone number
    has_valuerequiredstringBorrower phone number value
    organizationsrequiredarrayOrganizations information
    loansobject[]Loan information
    @typestringBorrower loan information type
    @idstringBorrower loan information ID
    has_day_1_certainty_indicatorobjectDay-1 Certainty indicator
    has_valuestringDay-1 Certainty indicator value
    Response 403application/json
    2 fields

    Invalid key for service

    FieldTypeDescription
    messagestring
    urlstring
    Response 404application/json
    1 fields

    Resource not found

    FieldTypeDescription
    messagestringMessage
    Response 500application/json
    1 fields

    The product has encountered an internal server error. If possible, please contact Staircase support with the transaction_id you used.

    FieldTypeDescription
    messagestring
    Other responses

    400

    POST /request-elements/complete

    Validate Collection

    post-income-collection-complete

    Validate Collection verifies that a collection contains all the elements needed to invoke a partner for income verification.

    Request
    application/json
    {
      "data": {
        "people": [
          {
            "@type": "borrower",
            "@id": "01FD6ZNGJADZ0RB1H96FSE8ABC",
            "has_first_name": {
              "has_value": "FirstName"
            },
            "has_last_name": {
              "has_value": "LastName"
            },
            "has_birth_date": {
              "has_value": "1993-01-11"
            },
            "has_taxpayer_identifier_value": {
              "has_value": "111223333"
            },
            "with_address": [
              "01FD6ZNGJADZ0RB1H96FSE8BAB"
            ],
            "contact_at": [
              "01FD6ZNGJW9X96WGWX2BD37CFY"
            ],
            "works_for": [
              "01FD6ZNGNFKY3B7CX0YN6NH56E"
            ]
          }
        ],
        "addresses": [
          {
            "@type": "address",
            "@id": "01FD6ZNGJADZ0RB1H96FSE8BAB",
            "has_address_line_1_text": {
              "has_value": "33 IRVING PLACE"
            },
            "has_address_line_2_text": {
              "has_value": ""
            },
            "has_city_name": {
              "has_value": "NEW YORK"
            },
            "has_state_code": {
              "has_value": "NY"
            },
            "has_postal_code": {
              "has_value": "10003"
            },
            "has_country_name": {
              "has_value": "US"
            }
          }
        ],
        "contact_information": [
          {
            "@type": "contact_information",
            "@id": "01FD6ZNGJW9X96WGWX2BD37CFY",
            "has_email_address": {
              "has_value": "test@test.com"
            },
            "has_phone_number": {
              "has_value": "+123456789"
            }
          }
        ],
        "organizations": [
          {
            "@id": "01FD6ZNGNFKY3B7CX0YN6NH56E",
            "has_organization_name": {
              "has_value": "Company Name"
            }
          }
        ],
        "loans": [
          {
            "@id": "01G3B5DKRT27W61Y3ZK57JSGBE",
            "has_day_1_certainty_indicator": {
              "has_value": "123456789"
            }
          }
        ]
      }
    }
    Response
    application/json

    Collection is valid

    {
      "message": "Collection is valid."
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Staircase Documentation Environment API Key
    Response 200application/json
    1 fields

    Collection is valid

    FieldTypeDescription
    messagestringMessage
    Other responses

    400403

    Operations

    POST /income

    Create Income

    post-income

    Create Income creates, for a borrower, a complete profile of the borrower's income.

    Request
    application/json
    {
      "transaction_id": "uhz6t54e-9d74-g17e-99ca-a36b30vdfd35",
      "collection_id": "hg62e49f-9d74-g17e-99ca-a36b30vdfd35",
      "partner_name": "PartnerName"
    }
    Response
    application/json

    Income request created successfully.

    {
      "collection_id": "e4502ed2-8df8-4b8f-84bd-a1097e999a77",
      "message": "When ready, data will be available under the following collection_id. Use this new collection_id to get the execution status."
    }
    Parameters
    1
    ParameterTypeExampleDescription
    x-api-key required string header xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Authorization key
    Request bodyapplication/json
    3 fields
    FieldTypeDescription
    transaction_idrequiredstringTransaction ID
    collection_idrequiredstringCollection ID
    partner_namerequiredstring
    Response 200application/json
    2 fields

    Income request created successfully.

    FieldTypeDescription
    collection_idstringCollection ID
    messagestringMessage

    Providers

    1. Argyle
    2. Atomic
    3. Equifax
    4. Experian
    5. Finicity
    6. MeridianLink
    7. Pinwheel
    8. Plaid
    9. Truework
    10. Truework

    Also integrated for this product, outside the committed ordering:

    Field mapping

    ProviderFlowCanonical inVendor inVendor outCanonical out
    Argyle income staircase-graph income-input income-argyle-output staircase-graph
    Plaid asset staircase-graph asset-input asset-plaid-output staircase-graph

    Errors

    400403404422500502

    Type to search.