Income
API reference for Income endpoints and webhooks
Verify a user's income via payroll or bank account data.
Endpoints | |
---|---|
/credit/sessions/get | Get Link session metadata and results for the end user |
/credit/bank_income/get | Retrieve information from the bank accounts used for income verification |
/credit/bank_income/pdf/get | Retrieve information from the bank accounts used for income verification in PDF format |
/credit/bank_income/refresh | Refresh a user's bank income information |
/credit/bank_income/webhook/update | Subscribe and unsubscribe to proactive notifications for a user's income profile |
/credit/bank_statements/uploads/get | Retrieve information from the bank statements used for income verification |
/credit/payroll_income/get | Retrieve information from the pay stubs or tax forms used for income verification |
/credit/payroll_income/risk_signals/get | Analyze uploaded income documents for indications of potential fraud |
/credit/payroll_income/parsing_config/update | Update the parsing configuration for a document verification |
/credit/employment/get | (Beta) Retrieve employment information about the end user |
/credit/payroll_income/refresh | (Beta) Retrieve updated payroll income data on a linked account |
See also | |
---|---|
/sandbox/income/fire_webhook | Manually fire an Income webhook (Sandbox only) |
/user/create | Create a user for use with the income verification product |
Webhooks | |
---|---|
INCOME_VERIFICATION | Income verification has completed |
INCOME_VERIFICATION_RISK_SIGNALS | Risk evaluation of user-uploaded documents has completed |
BANK_INCOME_REFRESH_UPDATE | A change to user's income has been detected |
BANK_INCOME_REFRESH_COMPLETE | The refreshed report has finished generating |
INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED | A Payroll Income verification could not be refreshed |
Endpoints
/user/create
Create user
This endpoint should be called for each of your end users before they begin a Plaid Check or Income flow, or a Multi-Item Link flow. This provides you a single token to access all data associated with the user. You should only create one per end user.
The consumer_report_user_identity
object must be present in order to create a Plaid Check Consumer Report for a user. If it is not provided during the /user/create
call, it can be added later by calling /user/update
.
If you call the endpoint multiple times with the same client_user_id
, the first creation call will succeed and the rest will fail with an error message indicating that the user has been created for the given client_user_id
.
Ensure that you store the user_token
along with your user's identifier in your database, as it is not possible to retrieve a previously created user_token
.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.client_user_id
client_user_id
.128
1
consumer_report_user _identity
/user/update
. Once the field has been added to the user, you will be able to call /link/token/create
with a non-empty consumer_report_permissible_purpose
(which will automatically create a Plaid Check Consumer Report), or call /cra/check_report/create
for that user.first_name
last_name
phone_numbers
emails
ssn_last_4
4
4
date_of_birth
date
primary_address
city
region
state
.
Example: "NC"
street
"564 Main Street, APT 15"
postal_code
zip
.country
1const request: UserCreateRequest = {2 client_user_id: 'c0e2c4ee-b763-4af5-cfe9-46a46bce883d',3};4
5try {6 const response = await client.userCreate(request);7} catch (error) {8 // handle error9}
Response fields and example
user_token
user_id
user_id
of the User associated with this webhook, warning, or error.request_id
1{2 "user_token": "user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d",3 "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",4 "request_id": "Aim3b"5}
Was this helpful?
/credit/sessions/get
Retrieve Link sessions for your user
This endpoint can be used for your end users after they complete the Link flow. This endpoint returns a list of Link sessions that your user completed, where each session includes the results from the Link flow.
These results include details about the Item that was created and some product related metadata (showing, for example, whether the user finished the bank income verification step).
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
1const request: CreditSessionsGetRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3};4
5try {6 const response = await client.creditSessionsGet(request);7} catch (error) {8 // handle error9}
Response fields and example
sessions
link_session_id
link_session_id
returned in the onSuccess/onExit callbacks.session_start_time
date-time
results
item_add_results
public_token
item_id
item_id
is always unique; linking the same account at the same institution twice will result in two Items with different item_id
values. Like all Plaid identifiers, the item_id
is case-sensitive.institution_id
bank_income_results
status
APPROVED
: User has approved and verified their incomeNO_DEPOSITS_FOUND
: We attempted, but were unable to find any income in the connected account.USER_REPORTED_NO_INCOME
: The user explicitly indicated that they don't receive income in the connected account.STARTED
: The user began the bank income portion of the link flow.INTERNAL_ERROR
: The user encountered an internal error.APPROVED
, NO_DEPOSITS_FOUND
, USER_REPORTED_NO_INCOME
item_id
item_id
is always unique; linking the same account at the same institution twice will result in two Items with different item_id
values. Like all Plaid identifiers, the item_id
is case-sensitive.institution_id
bank_employment _results
status
APPROVED
: User has approved and verified their employment.NO_EMPLOYMENTS_FOUND
: We attempted, but were unable to find any employment in the connected account.EMPLOYER_NOT_LISTED
: The user explicitly indicated that they did not see their current or previous employer in the list of employer names found.STARTED
: The user began the bank income portion of the link flow.INTERNAL_ERROR
: The user encountered an internal error.APPROVED
, NO_EMPLOYERS_FOUND
, EMPLOYER_NOT_LISTED
item_id
item_id
is always unique; linking the same account at the same institution twice will result in two Items with different item_id
values. Like all Plaid identifiers, the item_id
is case-sensitive.institution_id
payroll_income_results
num_paystubs_retrieved
num_w2s_retrieved
institution_id
institution_name
document_income _results
num_paystubs_uploaded
num_w2s_uploaded
num_bank_statements _uploaded
num_1099s_uploaded
errors
error_type
error_code
error_message
display_message
null
if the error is not related to user action.request_id
1{2 "request_id": "Aim3b",3 "sessions": [4 {5 "link_session_id": "356dbb28-7f98-44d1-8e6d-0cec580f3171",6 "results": {7 "item_add_results": [8 {9 "public_token": "public-sandbox-5c224a01-8314-4491-a06f-39e193d5cddc",10 "item_id": "M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op",11 "institution_id": "ins_56"12 }13 ],14 "bank_income_results": [15 {16 "status": "APPROVED",17 "item_id": "M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op",18 "institution_id": "ins_56"19 }20 ]21 },22 "session_start_time": "2022-09-30T23:40:30.946225Z"23 },24 {25 "link_session_id": "f742cae8-31e4-49cc-a621-6cafbdb26fb9",26 "results": {27 "payroll_income_results": [28 {29 "num_paystubs_retrieved": 2,30 "num_w2s_retrieved": 1,31 "institution_id": "ins_92"32 }33 ]34 },35 "session_start_time": "2022-09-26T23:40:30.946225Z"36 }37 ]38}
Was this helpful?
/credit/bank_income/get
Retrieve information from the bank accounts used for income verification
/credit/bank_income/get
returns the bank income report(s) for a specified user. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use Multi-Item Link. To return older reports, use the options.count
field.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
options
/credit/bank_income/get
request options.count
1
1const request: CreditBankIncomeGetRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3 options: {4 count: 1,5 },6};7
8try {9 const response = await client.creditBankIncomeGet(request);10} catch (error) {11 // handle error12}
Response fields and example
bank_income
bank_income_id
generated_time
date-time
days_requested
items
bank_income_accounts
account_id
mask
name
official_name
subtype
checking
, savings
, hsa
, cd
, money market
, paypal
, prepaid
, cash management
, ebt
, all
type
depository
.depository
owners
names
If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's
names
array.phone_numbers
emails
addresses
data
city
region
state
.
Example: "NC"
street
"564 Main Street, APT 15"
postal_code
zip
.country
primary
true
, identifies the address as the primary address on an account.bank_income_sources
income_source_id
income_description
income_category
BANK_INTEREST
: Interest earned from a bank account.
BENEFIT_OTHER
: Government benefits other than retirement, unemployment, child support, or disability. Currently used only in the UK, to represent benefits such as Cost of Living Payments.
CASH
: Deprecated and used only for existing legacy implementations. Has been replaced by CASH_DEPOSIT
and TRANSFER_FROM_APPLICATION
.
CASH_DEPOSIT
: A cash or check deposit.
CHILD_SUPPORT
: Child support payments received.
GIG_ECONOMY
: Income earned as a gig economy worker, e.g. driving for Uber, Lyft, Postmates, DoorDash, etc.
LONG_TERM_DISABILITY
: Disability payments, including Social Security disability benefits.
OTHER
: Income that could not be categorized as any other income category.
MILITARY
: Veterans benefits. Income earned as salary for serving in the military (e.g. through DFAS) will be classified as SALARY
rather than MILITARY
.
RENTAL
: Income earned from a rental property. Income may be identified as rental when the payment is received through a rental platform, e.g. Airbnb; rent paid directly by the tenant to the property owner (e.g. via cash, check, or ACH) will typically not be classified as rental income.
RETIREMENT
: Payments from private retirement systems, pensions, and government retirement programs, including Social Security retirement benefits.
SALARY
: Payment from an employer to an earner or other form of permanent employment.
TAX_REFUND
: A tax refund.
TRANSFER_FROM_APPLICATION
: Deposits from a money transfer app, such as Venmo, Cash App, or Zelle.
UNEMPLOYMENT
: Unemployment benefits. In the UK, includes certain low-income benefits such as the Universal Credit.SALARY
, UNEMPLOYMENT
, CASH
, GIG_ECONOMY
, RENTAL
, CHILD_SUPPORT
, MILITARY
, RETIREMENT
, LONG_TERM_DISABILITY
, BANK_INTEREST
, CASH_DEPOSIT
, TRANSFER_FROM_APPLICATION
, TAX_REFUND
, BENEFIT_OTHER
, OTHER
account_id
start_date
date
end_date
date
pay_frequency
WEEKLY
, BIWEEKLY
, SEMI_MONTHLY
, MONTHLY
, DAILY
, UNKNOWN
total_amount
transaction_count
historical_summary
total_amount
total_amounts
instead.iso_currency_code
total_amounts
instead.unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
Please use total_amounts
instead.total_amounts
amount
iso_currency_code
unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.start_date
date
end_date
date
transactions
amount
iso_currency_code
or unofficial_currency_code
.
Positive values when money moves out of the account; negative values when money moves in.
For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.date
date
name
original_description
pending
transaction_id
transaction_id
is case sensitive.check_number
iso_currency_code
unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.last_updated_time
date-time
institution_id
institution_name
item_id
bank_income_summary
total_amount
total_amounts
instead.iso_currency_code
total_amounts
instead.unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
Please use total_amounts
instead.total_amounts
amount
iso_currency_code
unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.start_date
date
end_date
date
income_sources_count
income_categories _count
income_transactions _count
historical_summary
total_amount
total_amounts
instead.iso_currency_code
total_amounts
instead.unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
Please use total_amounts
instead.total_amounts
amount
iso_currency_code
unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.start_date
date
end_date
date
transactions
amount
iso_currency_code
or unofficial_currency_code
.
Positive values when money moves out of the account; negative values when money moves in.
For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.date
date
name
original_description
pending
transaction_id
transaction_id
is case sensitive.check_number
iso_currency_code
unofficial_currency _code
null
if iso_currency_code
is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.warnings
warning_type
BANK_INCOME_WARNING
.BANK_INCOME_WARNING
warning_code
IDENTITY_UNAVAILABLE
: Unable to extract identity for the Item
TRANSACTIONS_UNAVAILABLE
: Unable to extract transactions for the Item
ITEM_UNAPPROVED
: User exited flow before giving permission to share data for the Item
REPORT_DELETED
: Report deleted due to customer or consumer request
DATA_UNAVAILABLE
: No relevant data was found for the ItemIDENTITY_UNAVAILABLE
, TRANSACTIONS_UNAVAILABLE
, ITEM_UNAPPROVED
, REPORT_DELETED
, DATA_UNAVAILABLE
cause
item_id
used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items.error_type
INTERNAL_SERVER_ERROR
, INSUFFICIENT_CREDENTIALS
, ITEM_LOCKED
, USER_SETUP_REQUIRED
, COUNTRY_NOT_SUPPORTED
, INSTITUTION_DOWN
, INSTITUTION_NO_LONGER_SUPPORTED
, INSTITUTION_NOT_RESPONDING
, INVALID_CREDENTIALS
, INVALID_MFA
, INVALID_SEND_METHOD
, ITEM_LOGIN_REQUIRED
, MFA_NOT_SUPPORTED
, NO_ACCOUNTS
, ITEM_NOT_SUPPORTED
, ACCESS_NOT_GRANTED
error_code
error_type
. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be null
if no error has occurred.error_message
display_message
item_id
item_id
of the Item associated with this warning.request_id
1{2 "bank_income": [3 {4 "bank_income_id": "dacc92a0-cb59-43a5-ba24-1b1c07a03f28",5 "bank_income_summary": {6 "end_date": "2024-08-21",7 "historical_summary": [8 {9 "end_date": "2024-08-21",10 "iso_currency_code": "USD",11 "start_date": "2024-08-06",12 "total_amount": 4090.14,13 "total_amounts": [14 {15 "amount": 4090.14,16 "iso_currency_code": "USD",17 "unofficial_currency_code": null18 }19 ],20 "transactions": [21 {22 "amount": 120.12,23 "check_number": null,24 "date": "2024-08-07",25 "iso_currency_code": "USD",26 "name": "TEXAS OAG CHILD SUPPORT",27 "original_description": "TEXAS OAG CHILD SUPPORT",28 "transaction_id": "EZMmvwREqlSGmlRam7bzFKyBll3kJjU4xKm1w",29 "unofficial_currency_code": null30 },31 {32 "amount": 1525,33 "check_number": null,34 "date": "2024-08-08",35 "iso_currency_code": "USD",36 "name": "AIRBNB PAYMENTS PPD ID: 1234567890",37 "original_description": "AIRBNB PAYMENTS PPD ID: 1234567890",38 "transaction_id": "Wr6jzLwg1qs6ag9Xa8BrCpBAPPxnEXF6ZmjDR",39 "unofficial_currency_code": null40 },41 {42 "amount": 500,43 "check_number": null,44 "date": "2024-08-12",45 "iso_currency_code": "USD",46 "name": "TWC-BENEFITS/UI BENEFIT",47 "original_description": "TWC-BENEFITS/UI BENEFIT",48 "transaction_id": "Aj7Apx5bDyIA3VRl35yqC18wXXorBgI9rX5dp",49 "unofficial_currency_code": null50 },51 {52 "amount": 1000.7,53 "check_number": null,54 "date": "2024-08-15",55 "iso_currency_code": "USD",56 "name": "PLAID PAYROLL",57 "original_description": "PLAID PAYROLL",58 "transaction_id": "G1L9oybBrKSMPmBdPzXoFN8aGGE7gXC6MeoQB",59 "unofficial_currency_code": null60 },61 {62 "amount": 824.2,63 "check_number": null,64 "date": "2024-08-15",65 "iso_currency_code": "USD",66 "name": "SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890",67 "original_description": "SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890",68 "transaction_id": "nWLlwMm1qxi8DomvDXP3FaGjXX5bm9TAlyQnk",69 "unofficial_currency_code": null70 },71 {72 "amount": 120.12,73 "check_number": null,74 "date": "2024-08-21",75 "iso_currency_code": "USD",76 "name": "TEXAS OAG CHILD SUPPORT",77 "original_description": "TEXAS OAG CHILD SUPPORT",78 "transaction_id": "b7dkg6eQbPFQeRvVeZlxcqxZooa7nWSmb47dj",79 "unofficial_currency_code": null80 }81 ],82 "unofficial_currency_code": null83 }84 ],85 "income_categories_count": 5,86 "income_sources_count": 5,87 "income_transactions_count": 6,88 "iso_currency_code": "USD",89 "start_date": "2024-08-07",90 "total_amount": 4090.14,91 "total_amounts": [92 {93 "amount": 4090.14,94 "iso_currency_code": "USD",95 "unofficial_currency_code": null96 }97 ],98 "unofficial_currency_code": null99 },100 "days_requested": 15,101 "generated_time": "2024-08-21T18:10:46.293199Z",102 "items": [103 {104 "bank_income_accounts": [105 {106 "account_id": "G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5",107 "mask": "9217",108 "name": "Checking",109 "official_name": "Plaid checking",110 "owners": [111 {112 "addresses": [],113 "emails": [],114 "names": [115 "Jane Doe"116 ],117 "phone_numbers": []118 }119 ],120 "subtype": "checking",121 "type": "depository"122 }123 ],124 "bank_income_sources": [125 {126 "account_id": "G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5",127 "end_date": "2024-08-15",128 "historical_summary": [129 {130 "end_date": "2024-08-21",131 "iso_currency_code": "USD",132 "start_date": "2024-08-06",133 "total_amount": 1000.7,134 "total_amounts": [135 {136 "amount": 1000.7,137 "iso_currency_code": "USD",138 "unofficial_currency_code": null139 }140 ],141 "transactions": [142 {143 "amount": 1000.7,144 "check_number": null,145 "date": "2024-08-15",146 "iso_currency_code": "USD",147 "name": "PLAID PAYROLL",148 "original_description": "PLAID PAYROLL",149 "transaction_id": "G1L9oybBrKSMPmBdPzXoFN8aGGE7gXC6MeoQB",150 "unofficial_currency_code": null151 }152 ],153 "unofficial_currency_code": null154 }155 ],156 "income_category": "SALARY",157 "income_description": "PLAID PAYROLL",158 "income_source_id": "0e9d6fbc-29de-4225-9843-2f71e02a54d1",159 "pay_frequency": "UNKNOWN",160 "start_date": "2024-08-15",161 "total_amount": 1000.7,162 "transaction_count": 1163 },164 {165 "account_id": "G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5",166 "end_date": "2024-08-15",167 "historical_summary": [168 {169 "end_date": "2024-08-21",170 "iso_currency_code": "USD",171 "start_date": "2024-08-06",172 "total_amount": 824.2,173 "total_amounts": [174 {175 "amount": 824.2,176 "iso_currency_code": "USD",177 "unofficial_currency_code": null178 }179 ],180 "transactions": [181 {182 "amount": 824.2,183 "check_number": null,184 "date": "2024-08-15",185 "iso_currency_code": "USD",186 "name": "SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890",187 "original_description": "SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890",188 "transaction_id": "nWLlwMm1qxi8DomvDXP3FaGjXX5bm9TAlyQnk",189 "unofficial_currency_code": null190 }191 ],192 "unofficial_currency_code": null193 }194 ],195 "income_category": "LONG_TERM_DISABILITY",196 "income_description": "SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890",197 "income_source_id": "88bc00d8-2bb1-42d0-a054-db3f20948283",198 "pay_frequency": "UNKNOWN",199 "start_date": "2024-08-15",200 "total_amount": 824.2,201 "transaction_count": 1202 },203 {204 "account_id": "G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5",205 "end_date": "2024-08-08",206 "historical_summary": [207 {208 "end_date": "2024-08-21",209 "iso_currency_code": "USD",210 "start_date": "2024-08-06",211 "total_amount": 1525,212 "total_amounts": [213 {214 "amount": 1525,215 "iso_currency_code": "USD",216 "unofficial_currency_code": null217 }218 ],219 "transactions": [220 {221 "amount": 1525,222 "check_number": null,223 "date": "2024-08-08",224 "iso_currency_code": "USD",225 "name": "AIRBNB PAYMENTS PPD ID: 1234567890",226 "original_description": "AIRBNB PAYMENTS PPD ID: 1234567890",227 "transaction_id": "Wr6jzLwg1qs6ag9Xa8BrCpBAPPxnEXF6ZmjDR",228 "unofficial_currency_code": null229 }230 ],231 "unofficial_currency_code": null232 }233 ],234 "income_category": "RENTAL",235 "income_description": "AIRBNB PAYMENTS PPD ID: 1234567890",236 "income_source_id": "063689af-7299-4327-b71f-9d8849a40c0e",237 "pay_frequency": "UNKNOWN",238 "start_date": "2024-08-08",239 "total_amount": 1525,240 "transaction_count": 1241 },242 {243 "account_id": "G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5",244 "end_date": "2024-08-12",245 "historical_summary": [246 {247 "end_date": "2024-08-21",248 "iso_currency_code": "USD",249 "start_date": "2024-08-06",250 "total_amount": 500,251 "total_amounts": [252 {253 "amount": 500,254 "iso_currency_code": "USD",255 "unofficial_currency_code": null256 }257 ],258 "transactions": [259 {260 "amount": 500,261 "check_number": null,262 "date": "2024-08-12",263 "iso_currency_code": "USD",264 "name": "TWC-BENEFITS/UI BENEFIT",265 "original_description": "TWC-BENEFITS/UI BENEFIT",266 "transaction_id": "Aj7Apx5bDyIA3VRl35yqC18wXXorBgI9rX5dp",267 "unofficial_currency_code": null268 }269 ],270 "unofficial_currency_code": null271 }272 ],273 "income_category": "UNEMPLOYMENT",274 "income_description": "TWC-BENEFITS/UI BENEFIT",275 "income_source_id": "ce160170-49d0-4811-b58e-cb4878d05f83",276 "pay_frequency": "UNKNOWN",277 "start_date": "2024-08-12",278 "total_amount": 500,279 "transaction_count": 1280 },281 {282 "account_id": "G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5",283 "end_date": "2024-08-21",284 "historical_summary": [285 {286 "end_date": "2024-08-21",287 "iso_currency_code": "USD",288 "start_date": "2024-08-06",289 "total_amount": 240.24,290 "total_amounts": [291 {292 "amount": 240.24,293 "iso_currency_code": "USD",294 "unofficial_currency_code": null295 }296 ],297 "transactions": [298 {299 "amount": 120.12,300 "check_number": null,301 "date": "2024-08-07",302 "iso_currency_code": "USD",303 "name": "TEXAS OAG CHILD SUPPORT",304 "original_description": "TEXAS OAG CHILD SUPPORT",305 "transaction_id": "EZMmvwREqlSGmlRam7bzFKyBll3kJjU4xKm1w",306 "unofficial_currency_code": null307 },308 {309 "amount": 120.12,310 "check_number": null,311 "date": "2024-08-21",312 "iso_currency_code": "USD",313 "name": "TEXAS OAG CHILD SUPPORT",314 "original_description": "TEXAS OAG CHILD SUPPORT",315 "transaction_id": "b7dkg6eQbPFQeRvVeZlxcqxZooa7nWSmb47dj",316 "unofficial_currency_code": null317 }318 ],319 "unofficial_currency_code": null320 }321 ],322 "income_category": "CHILD_SUPPORT",323 "income_description": "TEXAS OAG CHILD SUPPORT",324 "income_source_id": "c8e1576e-9de4-47b4-ad55-3f7b068cc863",325 "pay_frequency": "UNKNOWN",326 "start_date": "2024-08-07",327 "total_amount": 240.24,328 "transaction_count": 2329 }330 ],331 "institution_id": "ins_20",332 "institution_name": "Citizens Bank",333 "item_id": "L8EKo4GydxSKmJQGmXyPuDkeNn4rg9fP3MKLv",334 "last_updated_time": "2024-08-21T18:10:47.367335Z"335 }336 ]337 }338 ],339 "request_id": "MLM1fFu4fbVg7KR"340}
Was this helpful?
/credit/bank_income/pdf/get
Retrieve information from the bank accounts used for income verification in PDF format
/credit/bank_income/pdf/get
returns the most recent bank income report for a specified user in PDF format. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use Multi-Item Link.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
1const request: CreditBankIncomePDFGetRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3};4
5try {6 const response = await client.creditBankIncomePdfGet(request, {7 responseType: 'arraybuffer',8 });9 const pdf = response.buffer.toString('base64');10} catch (error) {11 // handle error12}
Response
This endpoint returns binary PDF data. View a sample Bank Income PDF.
/credit/bank_income/refresh
Refresh a user's bank income information
/credit/bank_income/refresh
refreshes the most recent bank income report data for a specific user. If the most recent bank income report is no longer valid (i.e. deleted), the endpoint will refresh the most recent valid report instead.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
options
/credit/bank_income/refresh
request options.days_requested
1const request: CreditBankIncomeRefreshRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3 options: {4 days_requested: 120,5 },6};7
8try {9 const response = await client.creditBankIncomeRefresh(request);10} catch (error) {11 // handle error12}
Response fields and example
request_id
1{2 "request_id": "LhQf0THi8SH1yJm"3}
Was this helpful?
/credit/bank_income/webhook/update
Subscribe and unsubscribe to proactive notifications for a user's income profile
/credit/bank_income/webhook/update
allows you to subscribe or unsubscribe a user for income webhook notifications. By default, all users start out unsubscribed.
If a user is subscribed, on significant changes to the user's income profile, you will receive a BANK_INCOME_REFRESH_UPDATE
webhook, prompting you to refresh bank income data for the user.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
enable_webhooks
1const request: CreditBankIncomeWebhookUpdateRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3 enable_webhooks: true,4};5
6try {7 const response = await client.creditBankIncomeWebhookUpdateRequest(request);8} catch (error) {9 // handle error10}
Response fields and example
request_id
1{2 "request_id": "LhQf0THi8SH1yJm"3}
Was this helpful?
/credit/bank_statements/uploads/get
Retrieve data for a user's uploaded bank statements
/credit/bank_statements/uploads/get
returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
options
/credit/bank_statements/uploads/get
request options.item_ids
item_id
s whose bank statements information is returned. Each item_id
should uniquely identify a bank statements uploaded item. If this field is not provided, all item_id
s associated with the user_token
will returned in the response.1const request: CreditBankStatementsUploadsGetRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3};4
5try {6 const response = await client.creditBankStatementsUploadsGet(request);7} catch (error) {8 // handle error9}
Response fields and example
items
item_id
item_id
of the Item associated with this webhook, warning, or errorbank_statements
transactions
amount
date
date
original_description
account_id
document_metadata
name
document_type
PAYSTUB
: A paystub.BANK_STATEMENT
: A bank statement.US_TAX_W2
: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.US_MILITARY_ERAS
: An electronic Retirement Account Statement (eRAS) issued by the US military.US_MILITARY_LES
: A Leave and Earnings Statement (LES) issued by the US military.US_MILITARY_CLES
: A Civilian Leave and Earnings Statement (CLES) issued by the US military.GIG
: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.PLAID_GENERATED_PAYSTUB_PDF
: Used to indicate that the PDF for the paystub was generated by Plaid.NONE
: Used to indicate that there is no underlying document for the data.UNKNOWN
: Document type could not be determined.UNKNOWN
, PAYSTUB
, BANK_STATEMENT
, US_TAX_W2
, US_MILITARY_ERAS
, US_MILITARY_LES
, US_MILITARY_CLES
, GIG
, PLAID_GENERATED_PAYSTUB_PDF
, NONE
download_url
null
. If you would like Plaid to generate a PDF if the original is not available, contact your Account Manager. Example generated pay stub.For Document Income, this field will not be
null
, and the file type will be the original file type uploaded by the user. For more details on available file types, see the Document Income documentation.This download URL can only be used once and expires after two minutes. To generate a new download URL, call
/credit/payroll_income/get
again.status
PROCESSING_COMPLETE
: The document was successfully processed.DOCUMENT_ERROR
: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted.UNKNOWN
or null
: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.UNKNOWN
, PROCESSING_COMPLETE
, DOCUMENT_ERROR
, null
page_count
error_message
document_id
bank_accounts
name
bank_name
account_type
account_number
periods
start_date
date
end_date
date
starting_balance
ending_balance
account_id
status
processing_status
UNKNOWN
: The processing status could not be determined.PROCESSING_COMPLETE
: The processing has completed and the user has approved for sharing. The data is available to be retrieved.PROCESSING
: The verification is still processing. The data is not available yet.FAILED
: The processing failed to complete successfully.APPROVAL_STATUS_PENDING
: The processing has completed but the user has not yet approved the sharing of the data.UNKNOWN
, PROCESSING_COMPLETE
, PROCESSING
, FAILED
, APPROVAL_STATUS_PENDING
updated_at
date-time
request_id
1{2 "items": [3 {4 "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",5 "bank_statements": [6 {7 "transactions": [8 {9 "amount": -1000,10 "date": "2023-01-01",11 "original_description": "PAYCHECK",12 "account_id": "c6778d3f-e44c-4348-874e-71507c1ac12d"13 }14 ],15 "document_metadata": {16 "document_type": "BANK_STATEMENT",17 "name": "statement_01.pdf",18 "status": "PROCESSING_COMPLETE",19 "download_url": null,20 "page_count": 221 },22 "document_id": "2jkflanbd",23 "bank_accounts": [24 {25 "name": "CHASE CHECKING",26 "bank_name": "CHASE",27 "account_type": "CHECKING",28 "account_number": "000009752",29 "account_id": "c6778d3f-e44c-4348-874e-71507c1ac12d",30 "owner": {31 "name": "JANE DOE",32 "address": {33 "postal_code": "94133",34 "country": "US",35 "region": "CA",36 "city": "SAN FRANCISCO",37 "street": "2140 TAYLOR ST"38 }39 },40 "periods": [41 {42 "start_date": "2023-01-01",43 "end_date": "2023-02-01",44 "starting_balance": 2500,45 "ending_balance": 350046 }47 ]48 }49 ]50 }51 ],52 "status": {53 "processing_status": "PROCESSING_COMPLETE"54 },55 "updated_at": "2023-02-01T21:14:54Z"56 }57 ],58 "request_id": "LhQf0THi8SH1yJm"59}
Was this helpful?
/credit/payroll_income/get
Retrieve a user's payroll information
This endpoint gets payroll income information for a specific user, either as a result of the user connecting to their payroll provider or uploading a pay related document.
credit/payroll_income/getclient_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
options
/credit/payroll_income/get
request options.item_ids
item_id
s whose payroll information is returned. Each item_id
should uniquely identify a payroll income item. If this field is not provided, all item_id
s associated with the user_token
will returned in the response.1const request: CreditPayrollIncomeGetRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3};4
5try {6 const response = await client.creditPayrollIncomeGet(request);7} catch (error) {8 // handle error9}
Response fields and example
items
item_id
item_id
of the Item associated with this webhook, warning, or errorinstitution_id
institution_name
accounts
account_id
rate_of_pay
pay_rate
ANNUAL
, HOURLY
, CONTRACT
, WEEKLY
, BI_WEEKLY
, MONTHLY
, SEMI_MONTHLY
, DAILY
, COMMISSION
, OTHER
, null
pay_amount
double
pay_frequency
DAILY
, WEEKLY
, BIWEEKLY
, SEMI_MONTHLY
, MONTHLY
, CONTRACT
, QUARTERLY
, SEMI_ANNUALLY
, ANNUALLY
, OTHER
, null
payroll_income
account_id
pay_stubs
deductions
breakdown
current_amount
double
description
iso_currency_code
null
if unofficial_currency_code
is non-null.unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.ytd_amount
double
total
current_amount
double
iso_currency_code
null
if unofficial_currency_code
is non-null.unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.ytd_amount
double
document_id
document_metadata
name
document_type
PAYSTUB
: A paystub.BANK_STATEMENT
: A bank statement.US_TAX_W2
: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.US_MILITARY_ERAS
: An electronic Retirement Account Statement (eRAS) issued by the US military.US_MILITARY_LES
: A Leave and Earnings Statement (LES) issued by the US military.US_MILITARY_CLES
: A Civilian Leave and Earnings Statement (CLES) issued by the US military.GIG
: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.PLAID_GENERATED_PAYSTUB_PDF
: Used to indicate that the PDF for the paystub was generated by Plaid.NONE
: Used to indicate that there is no underlying document for the data.UNKNOWN
: Document type could not be determined.UNKNOWN
, PAYSTUB
, BANK_STATEMENT
, US_TAX_W2
, US_MILITARY_ERAS
, US_MILITARY_LES
, US_MILITARY_CLES
, GIG
, PLAID_GENERATED_PAYSTUB_PDF
, NONE
download_url
null
. If you would like Plaid to generate a PDF if the original is not available, contact your Account Manager. Example generated pay stub.For Document Income, this field will not be
null
, and the file type will be the original file type uploaded by the user. For more details on available file types, see the Document Income documentation.This download URL can only be used once and expires after two minutes. To generate a new download URL, call
/credit/payroll_income/get
again.status
PROCESSING_COMPLETE
: The document was successfully processed.DOCUMENT_ERROR
: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted.UNKNOWN
or null
: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.UNKNOWN
, PROCESSING_COMPLETE
, DOCUMENT_ERROR
, null
page_count
error_message
earnings
breakdown
canonical_description
BONUS
, COMMISSION
, OVERTIME
, PAID_TIME_OFF
, REGULAR_PAY
, VACATION
, BASIC_ALLOWANCE_HOUSING
, BASIC_ALLOWANCE_SUBSISTENCE
, OTHER
, ALLOWANCE
, BEREAVEMENT
, HOLIDAY_PAY
, JURY_DUTY
, LEAVE
, LONG_TERM_DISABILITY_PAY
, MILITARY_PAY
, PER_DIEM
, REFERRAL_BONUS
, REIMBURSEMENTS
, RETENTION_BONUS
, RETROACTIVE_PAY
, SEVERANCE_PAY
, SHIFT_DIFFERENTIAL
, SHORT_TERM_DISABILITY_PAY
, SICK_PAY
, SIGNING_BONUS
, TIPS_INCOME
, RETIREMENT
, GIG_ECONOMY
, STOCK_COMPENSATION
, null
current_amount
double
description
hours
iso_currency_code
null
if unofficial_currency_code
is non-null.rate
double
unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.ytd_amount
double
total
current_amount
double
hours
iso_currency_code
null
if unofficial_currency_code
is non-null.unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.ytd_amount
double
employee
name
marital_status
SINGLE
or MARRIED
or NOT LISTED
.SINGLE
, MARRIED
, NOT LISTED
, null
taxpayer_id
net_pay
current_amount
double
description
iso_currency_code
null
if unofficial_currency_code
is non-null.unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.ytd_amount
double
pay_period_details
pay_amount
double
distribution_breakdown
account_name
bank_name
current_amount
double
iso_currency_code
null
if unofficial_currency_code
is non-null.mask
type
unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.gross_earnings
double
iso_currency_code
null
if unofficial_currency_code
is non-null.pay_frequency
UNKNOWN
, WEEKLY
, BIWEEKLY
, SEMI_MONTHLY
, MONTHLY
, null
pay_basis
SALARY
, HOURLY
, COMMISSION
start_date
unofficial_currency _code
null
if iso_currency_code
is non-null
. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.See the currency code schema for a full listing of supported
iso_currency_code
s.w2s
document_metadata
name
document_type
PAYSTUB
: A paystub.BANK_STATEMENT
: A bank statement.US_TAX_W2
: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.US_MILITARY_ERAS
: An electronic Retirement Account Statement (eRAS) issued by the US military.US_MILITARY_LES
: A Leave and Earnings Statement (LES) issued by the US military.US_MILITARY_CLES
: A Civilian Leave and Earnings Statement (CLES) issued by the US military.GIG
: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.PLAID_GENERATED_PAYSTUB_PDF
: Used to indicate that the PDF for the paystub was generated by Plaid.NONE
: Used to indicate that there is no underlying document for the data.UNKNOWN
: Document type could not be determined.UNKNOWN
, PAYSTUB
, BANK_STATEMENT
, US_TAX_W2
, US_MILITARY_ERAS
, US_MILITARY_LES
, US_MILITARY_CLES
, GIG
, PLAID_GENERATED_PAYSTUB_PDF
, NONE
download_url
null
. If you would like Plaid to generate a PDF if the original is not available, contact your Account Manager. Example generated pay stub.For Document Income, this field will not be
null
, and the file type will be the original file type uploaded by the user. For more details on available file types, see the Document Income documentation.This download URL can only be used once and expires after two minutes. To generate a new download URL, call
/credit/payroll_income/get
again.status
PROCESSING_COMPLETE
: The document was successfully processed.DOCUMENT_ERROR
: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted.UNKNOWN
or null
: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.UNKNOWN
, PROCESSING_COMPLETE
, DOCUMENT_ERROR
, null
page_count
error_message
document_id
employee
name
marital_status
SINGLE
or MARRIED
or NOT LISTED
.SINGLE
, MARRIED
, NOT LISTED
, null
taxpayer_id
tax_year
employer_id_number
wages_tips_other_comp
federal_income_tax _withheld
social_security_wages
social_security_tax _withheld
medicare_wages_and _tips
medicare_tax_withheld
social_security_tips
allocated_tips
box_9
dependent_care _benefits
nonqualified_plans
statutory_employee
retirement_plan
third_party_sick_pay
other
state_and_local_wages
state
employer_state_id _number
state_wages_tips
state_income_tax
local_wages_tips
local_income_tax
locality_name
form1099s
document_id
document_metadata
name
document_type
PAYSTUB
: A paystub.BANK_STATEMENT
: A bank statement.US_TAX_W2
: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.US_MILITARY_ERAS
: An electronic Retirement Account Statement (eRAS) issued by the US military.US_MILITARY_LES
: A Leave and Earnings Statement (LES) issued by the US military.US_MILITARY_CLES
: A Civilian Leave and Earnings Statement (CLES) issued by the US military.GIG
: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.PLAID_GENERATED_PAYSTUB_PDF
: Used to indicate that the PDF for the paystub was generated by Plaid.NONE
: Used to indicate that there is no underlying document for the data.UNKNOWN
: Document type could not be determined.UNKNOWN
, PAYSTUB
, BANK_STATEMENT
, US_TAX_W2
, US_MILITARY_ERAS
, US_MILITARY_LES
, US_MILITARY_CLES
, GIG
, PLAID_GENERATED_PAYSTUB_PDF
, NONE
download_url
null
. If you would like Plaid to generate a PDF if the original is not available, contact your Account Manager. Example generated pay stub.For Document Income, this field will not be
null
, and the file type will be the original file type uploaded by the user. For more details on available file types, see the Document Income documentation.This download URL can only be used once and expires after two minutes. To generate a new download URL, call
/credit/payroll_income/get
again.status
PROCESSING_COMPLETE
: The document was successfully processed.DOCUMENT_ERROR
: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted.UNKNOWN
or null
: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.UNKNOWN
, PROCESSING_COMPLETE
, DOCUMENT_ERROR
, null
page_count
error_message
form_1099_type
FORM_1099_TYPE_UNKNOWN
, FORM_1099_TYPE_MISC
, FORM_1099_TYPE_K
recipient
name
tin
account_number
facta_filing _requirement
CHECKED
, NOT CHECKED
second_tin_exists
CHECKED
, NOT CHECKED
payer
name
tin
telephone_number
filer
name
tin
type
Payment Settlement Entity (PSE)
, Electronic Payment Facilitator (EPF)
, Other Third Party
tax_year
rents
double
royalties
double
other_income
double
federal_income_tax _withheld
double
fishing_boat_proceeds
double
medical_and _healthcare_payments
double
nonemployee _compensation
double
substitute_payments _in_lieu_of_dividends _or_interest
double
payer_made_direct _sales_of_5000_or _more_of_consumer _products_to_buyer
crop_insurance _proceeds
double
excess_golden _parachute_payments
double
gross_proceeds_paid _to_an_attorney
double
section_409a_deferrals
double
section_409a_income
double
state_tax_withheld
double
state_tax_withheld _lower
double
payer_state_number
payer_state_number _lower
state_income
double
state_income_lower
double
transactions_reported
Payment card
, Third party network
pse_name
pse_telephone_number
gross_amount
double
card_not_present _transaction
double
merchant_category_code
number_of_payment _transactions
january_amount
double
february_amount
double
march_amount
double
april_amount
double
may_amount
double
june_amount
double
july_amount
double
august_amount
double
september_amount
double
october_amount
double
november_amount
double
december_amount
double
primary_state
secondary_state
primary_state_id
secondary_state_id
primary_state_income _tax
double
secondary_state _income_tax
double
status
processing_status
UNKNOWN
: The processing status could not be determined.PROCESSING_COMPLETE
: The processing has completed and the user has approved for sharing. The data is available to be retrieved.PROCESSING
: The verification is still processing. The data is not available yet.FAILED
: The processing failed to complete successfully.APPROVAL_STATUS_PENDING
: The processing has completed but the user has not yet approved the sharing of the data.UNKNOWN
, PROCESSING_COMPLETE
, PROCESSING
, FAILED
, APPROVAL_STATUS_PENDING
updated_at
date-time
error
error_code
and categorized by error_type
. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null
error object will only be part of an API response when calling /item/get
to view Item status. Otherwise, error fields will be null
if no error has occurred; if an error has occurred, an error code will be returned instead.error_type
INVALID_REQUEST
, INVALID_RESULT
, INVALID_INPUT
, INSTITUTION_ERROR
, RATE_LIMIT_EXCEEDED
, API_ERROR
, ITEM_ERROR
, ASSET_REPORT_ERROR
, RECAPTCHA_ERROR
, OAUTH_ERROR
, PAYMENT_ERROR
, BANK_TRANSFER_ERROR
, INCOME_VERIFICATION_ERROR
, MICRODEPOSITS_ERROR
, SANDBOX_ERROR
, PARTNER_ERROR
, TRANSACTIONS_ERROR
, TRANSACTION_ERROR
, TRANSFER_ERROR
error_code
error_code_reason
null
will be returned otherwise. Safe for programmatic use.Possible values:
OAUTH_INVALID_TOKEN
: The user’s OAuth connection to this institution has been invalidated.OAUTH_CONSENT_EXPIRED
: The user's access consent for this OAuth connection to this institution has expired.OAUTH_USER_REVOKED
: The user’s OAuth connection to this institution is invalid because the user revoked their connection.error_message
display_message
null
if the error is not related to user action.This may change over time and is not safe for programmatic use.
request_id
causes
causes
will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.causes
will only be provided for the error_type
ASSET_REPORT_ERROR
. causes
will also not be populated inside an error nested within a warning
object.status
documentation_url
suggested_action
request_id
1{2 "items": [3 {4 "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",5 "institution_id": "ins_92",6 "institution_name": "ADP",7 "accounts": [8 {9 "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9",10 "rate_of_pay": {11 "pay_amount": 100000,12 "pay_rate": "ANNUAL"13 },14 "pay_frequency": "BIWEEKLY"15 }16 ],17 "payroll_income": [18 {19 "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9",20 "pay_stubs": [21 {22 "deductions": {23 "breakdown": [24 {25 "current_amount": 123.45,26 "description": "taxes",27 "iso_currency_code": "USD",28 "unofficial_currency_code": null,29 "ytd_amount": 246.930 }31 ],32 "total": {33 "current_amount": 123.45,34 "iso_currency_code": "USD",35 "unofficial_currency_code": null,36 "ytd_amount": 246.937 }38 },39 "document_metadata": {40 "document_type": "PAYSTUB",41 "name": "paystub.pdf",42 "status": "PROCESSING_COMPLETE",43 "download_url": null44 },45 "document_id": "2jkflanbd",46 "earnings": {47 "breakdown": [48 {49 "canonical_description": "REGULAR_PAY",50 "current_amount": 200.22,51 "description": "salary earned",52 "hours": 80,53 "iso_currency_code": "USD",54 "rate": null,55 "unofficial_currency_code": null,56 "ytd_amount": 400.4457 },58 {59 "canonical_description": "BONUS",60 "current_amount": 100,61 "description": "bonus earned",62 "hours": null,63 "iso_currency_code": "USD",64 "rate": null,65 "unofficial_currency_code": null,66 "ytd_amount": 10067 }68 ],69 "total": {70 "current_amount": 300.22,71 "hours": 160,72 "iso_currency_code": "USD",73 "unofficial_currency_code": null,74 "ytd_amount": 500.4475 }76 },77 "employee": {78 "address": {79 "city": "SAN FRANCISCO",80 "country": "US",81 "postal_code": "94133",82 "region": "CA",83 "street": "2140 TAYLOR ST"84 },85 "name": "ANNA CHARLESTON",86 "marital_status": "SINGLE",87 "taxpayer_id": {88 "id_type": "SSN",89 "id_mask": "3333"90 }91 },92 "employer": {93 "name": "PLAID INC",94 "address": {95 "city": "SAN FRANCISCO",96 "country": "US",97 "postal_code": "94111",98 "region": "CA",99 "street": "1098 HARRISON ST"100 }101 },102 "net_pay": {103 "current_amount": 123.34,104 "description": "TOTAL NET PAY",105 "iso_currency_code": "USD",106 "unofficial_currency_code": null,107 "ytd_amount": 253.54108 },109 "pay_period_details": {110 "distribution_breakdown": [111 {112 "account_name": "Big time checking",113 "bank_name": "bank of plaid",114 "current_amount": 176.77,115 "iso_currency_code": "USD",116 "mask": "1223",117 "type": "checking",118 "unofficial_currency_code": null119 }120 ],121 "end_date": "2020-12-15",122 "gross_earnings": 4500,123 "iso_currency_code": "USD",124 "pay_amount": 1490.21,125 "pay_date": "2020-12-15",126 "pay_frequency": "BIWEEKLY",127 "start_date": "2020-12-01",128 "unofficial_currency_code": null129 }130 }131 ],132 "w2s": [133 {134 "allocated_tips": "1000",135 "box_12": [136 {137 "amount": "200",138 "code": "AA"139 }140 ],141 "box_9": "box9",142 "dependent_care_benefits": "1000",143 "document_metadata": {144 "document_type": "US_TAX_W2",145 "download_url": null,146 "name": "w_2.pdf",147 "status": "PROCESSING_COMPLETE"148 },149 "document_id": "1pkflebk4",150 "employee": {151 "address": {152 "city": "San Francisco",153 "country": "US",154 "postal_code": "94103",155 "region": "CA",156 "street": "1234 Grand St"157 },158 "name": "Josie Georgia Harrison",159 "marital_status": "SINGLE",160 "taxpayer_id": {161 "id_type": "SSN",162 "id_mask": "1234"163 }164 },165 "employer": {166 "address": {167 "city": "New York",168 "country": "US",169 "postal_code": "10010",170 "region": "NY",171 "street": "456 Main St"172 },173 "name": "Acme Inc"174 },175 "employer_id_number": "12-1234567",176 "federal_income_tax_withheld": "1000",177 "medicare_tax_withheld": "1000",178 "medicare_wages_and_tips": "1000",179 "nonqualified_plans": "1000",180 "other": "other",181 "retirement_plan": "CHECKED",182 "social_security_tax_withheld": "1000",183 "social_security_tips": "1000",184 "social_security_wages": "1000",185 "state_and_local_wages": [186 {187 "employer_state_id_number": "11111111111AAA",188 "local_income_tax": "200",189 "local_wages_and_tips": "200",190 "locality_name": "local",191 "state": "UT",192 "state_income_tax": "200",193 "state_wages_tips": "200"194 }195 ],196 "statutory_employee": "CHECKED",197 "tax_year": "2020",198 "third_party_sick_pay": "CHECKED",199 "wages_tips_other_comp": "1000"200 }201 ],202 "form1099s": [203 {204 "april_amount": null,205 "august_amount": null,206 "card_not_present_transaction": null,207 "crop_insurance_proceeds": 1000,208 "december_amount": null,209 "document_id": "mvMZ59Z2a5",210 "document_metadata": {211 "document_type": "US_TAX_1099_MISC",212 "download_url": null,213 "name": "form_1099_misc.pdf",214 "status": "PROCESSING_COMPLETE"215 },216 "excess_golden_parachute_payments": 1000,217 "february_amount": null,218 "federal_income_tax_withheld": 1000,219 "filer": {220 "address": {221 "city": null,222 "country": null,223 "postal_code": null,224 "region": null,225 "street": null226 },227 "name": null,228 "tin": null,229 "type": null230 },231 "fishing_boat_proceeds": 1000,232 "form_1099_type": "FORM_1099_TYPE_MISC",233 "gross_amount": 1000,234 "gross_proceeds_paid_to_an_attorney": 1000,235 "january_amount": null,236 "july_amount": null,237 "june_amount": null,238 "march_amount": null,239 "may_amount": null,240 "medical_and_healthcare_payments": 1000,241 "merchant_category_code": null,242 "nonemployee_compensation": 1000,243 "november_amount": null,244 "number_of_payment_transactions": null,245 "october_amount": null,246 "other_income": 1000,247 "payer": {248 "address": {249 "city": "SAN FRANCISCO",250 "country": "US",251 "postal_code": "94111",252 "region": "CA",253 "street": "1098 HARRISON ST"254 },255 "name": "PLAID INC",256 "telephone_number": "(123)456-7890",257 "tin": "12-3456789"258 },259 "payer_made_direct_sales_of_500_or_more_of_consumer_products_to_buyer": null,260 "payer_state_number": "CA 12345",261 "payer_state_number_lower": null,262 "primary_state": null,263 "primary_state_id": "CA 12345",264 "primary_state_income_tax": 1000,265 "pse_name": null,266 "pse_telephone_number": null,267 "recipient": {268 "account_number": "45678",269 "address": {270 "city": "SAN FRANCISCO",271 "country": "US",272 "postal_code": "94133",273 "region": "CA",274 "street": "2140 TAYLOR ST"275 },276 "facta_filing_requirement": "CHECKED",277 "name": "Josie Georgia Harrison",278 "second_tin_exists": "NOT CHECKED",279 "tin": "12-3456789"280 },281 "rents": 1000,282 "royalties": 1000,283 "secondary_state": null,284 "secondary_state_id": null,285 "secondary_state_income_tax": null,286 "section_409a_deferrals": 1000,287 "section_409a_income": 1000,288 "september_amount": null,289 "state_income": 1000,290 "state_income_lower": null,291 "state_tax_withheld": 1000,292 "state_tax_withheld_lower": null,293 "substitute_payments_in_lieu_of_dividends_or_interest": null,294 "tax_year": "2022",295 "transactions_reported": null296 }297 ]298 }299 ],300 "status": {301 "processing_status": "PROCESSING_COMPLETE"302 },303 "updated_at": "2022-08-02T21:14:54Z"304 }305 ],306 "request_id": "2pxQ59buGdsHRef"307}
Was this helpful?
/credit/payroll_income/risk_signals/get
Retrieve fraud insights for a user's manually uploaded document(s).
/credit/payroll_income/risk_signals/get
can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering. It returns a risk score for each uploaded document that indicates the likelihood of the document being fraudulent, in addition to details on the individual risk signals contributing to the score.
To trigger risk signal generation for an Item, call /link/token/create
with parsing_config
set to include risk_signals
, or call /credit/payroll_income/parsing_config/update
. Once risk signal generation has been triggered, /credit/payroll_income/risk_signals/get
can be called at any time after the INCOME_VERIFICATION_RISK_SIGNALS
webhook has been fired./credit/payroll_income/risk_signals/get
is offered as an add-on to Document Income and is billed separately. To request access to this endpoint, submit a product access request or contact your Plaid account manager.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
1const request: CreditPayrollIncomeRiskSignalsGetRequest = {2 user_token: 'user-sandbox-dd4c42bd-4a81-4089-8146-40671e81dd12',3};4try {5 const response = await client.creditPayrollIncomeRiskSignalsGet(request);6} catch (error) {7 // handle error8}
Response fields and example
items
item_id
item_id
of the Item associated with this webhook, warning, or errorverification_risk _signals
account_id
single_document_risk _signals
document_reference
document_id
document_name
status
PROCESSING
, PROCESSING_COMPLETE
, PROCESSING_ERROR
, PASSWORD_PROTECTED
, VIRUS_DETECTED
document_type
UNKNOWN
, BANK_STATEMENT
, BENEFITS_STATEMENT
, BUSINESS_FILING
, CHECK
, DRIVING_LICENSE
, FINANCIAL_STATEMENT
, INVOICE
, PAYSLIP
, SOCIAL_SECURITY_CARD
, TAX_FORM
, UTILITY_BILL
file_type
UNKNOWN
, IMAGE_PDF
, SCAN_OCR
, TRUE_PDF
, IMAGE
, MIXED_PAGE_PDF
, EMPTY_PDF
, FLATTENED_PDF
risk_signals
type
FONT
, MASKING
, OVERLAID_TEXT
, EDITED_TEXT
, TEXT_COMPRESSION
, ADDRESS_FORMAT_ANOMALY
, DATE_FORMAT_ANOMALY
, FONT_ANOMALY
, NAME_FORMAT_ANOMALY
, PDF_ALIGNMENT
, BRUSH_DETECTION
, METADATA_DATES_OUTSIDE_WINDOW
, METADATA_DATES_INSIDE_WINDOW
, METADATA_DATES_MISSING
, METADATA_DATES_MATCH
, ADOBE_FONTS
, ANNOTATION_DATES
, ANNOTATIONS
, EDITED_WHILE_SCANNED
, EXIF_DATA_MODIFIED
, HIGH_USER_ACCESS
, MALFORMED_DATE
, QPDF
, TEXT_LAYER_TEXT
, TOUCHUP_TEXT
, FLATTENED_PDF
, BLACKLISTS
, COPYCAT_IMAGE
, COPYCAT_TEXT
, REJECTED_CUSTOMER
, TEMPLATES
, SOFTWARE_BLACKLIST
field
has_fraud_risk
institution_metadata
item_id
item_id
of the Item associated with this webhook, warning, or errorexpected_value
actual_value
signal_description
page_number
risk_summary
risk_score
multi_document_risk _signals
document_references
document_id
document_name
status
PROCESSING
, PROCESSING_COMPLETE
, PROCESSING_ERROR
, PASSWORD_PROTECTED
, VIRUS_DETECTED
document_type
UNKNOWN
, BANK_STATEMENT
, BENEFITS_STATEMENT
, BUSINESS_FILING
, CHECK
, DRIVING_LICENSE
, FINANCIAL_STATEMENT
, INVOICE
, PAYSLIP
, SOCIAL_SECURITY_CARD
, TAX_FORM
, UTILITY_BILL
file_type
UNKNOWN
, IMAGE_PDF
, SCAN_OCR
, TRUE_PDF
, IMAGE
, MIXED_PAGE_PDF
, EMPTY_PDF
, FLATTENED_PDF
risk_signals
type
FONT
, MASKING
, OVERLAID_TEXT
, EDITED_TEXT
, TEXT_COMPRESSION
, ADDRESS_FORMAT_ANOMALY
, DATE_FORMAT_ANOMALY
, FONT_ANOMALY
, NAME_FORMAT_ANOMALY
, PDF_ALIGNMENT
, BRUSH_DETECTION
, METADATA_DATES_OUTSIDE_WINDOW
, METADATA_DATES_INSIDE_WINDOW
, METADATA_DATES_MISSING
, METADATA_DATES_MATCH
, ADOBE_FONTS
, ANNOTATION_DATES
, ANNOTATIONS
, EDITED_WHILE_SCANNED
, EXIF_DATA_MODIFIED
, HIGH_USER_ACCESS
, MALFORMED_DATE
, QPDF
, TEXT_LAYER_TEXT
, TOUCHUP_TEXT
, FLATTENED_PDF
, BLACKLISTS
, COPYCAT_IMAGE
, COPYCAT_TEXT
, REJECTED_CUSTOMER
, TEMPLATES
, SOFTWARE_BLACKLIST
field
has_fraud_risk
institution_metadata
item_id
item_id
of the Item associated with this webhook, warning, or errorexpected_value
actual_value
signal_description
page_number
error
error_code
and categorized by error_type
. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null
error object will only be part of an API response when calling /item/get
to view Item status. Otherwise, error fields will be null
if no error has occurred; if an error has occurred, an error code will be returned instead.error_type
INVALID_REQUEST
, INVALID_RESULT
, INVALID_INPUT
, INSTITUTION_ERROR
, RATE_LIMIT_EXCEEDED
, API_ERROR
, ITEM_ERROR
, ASSET_REPORT_ERROR
, RECAPTCHA_ERROR
, OAUTH_ERROR
, PAYMENT_ERROR
, BANK_TRANSFER_ERROR
, INCOME_VERIFICATION_ERROR
, MICRODEPOSITS_ERROR
, SANDBOX_ERROR
, PARTNER_ERROR
, TRANSACTIONS_ERROR
, TRANSACTION_ERROR
, TRANSFER_ERROR
error_code
error_code_reason
null
will be returned otherwise. Safe for programmatic use.Possible values:
OAUTH_INVALID_TOKEN
: The user’s OAuth connection to this institution has been invalidated.OAUTH_CONSENT_EXPIRED
: The user's access consent for this OAuth connection to this institution has expired.OAUTH_USER_REVOKED
: The user’s OAuth connection to this institution is invalid because the user revoked their connection.error_message
display_message
null
if the error is not related to user action.This may change over time and is not safe for programmatic use.
request_id
causes
causes
will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.causes
will only be provided for the error_type
ASSET_REPORT_ERROR
. causes
will also not be populated inside an error nested within a warning
object.status
documentation_url
suggested_action
request_id
1{2 "items": [3 {4 "item_id": "testItemID",5 "verification_risk_signals": [6 {7 "account_id": null,8 "multi_document_risk_signals": [],9 "single_document_risk_signals": [10 {11 "document_reference": {12 "document_id": "lRepoQjxlJ1nz",13 "document_name": "Paystub.pdf",14 "file_type": "TRUE_PDF"15 },16 "risk_summary": {17 "risk_score": 7018 },19 "risk_signals": [20 {21 "actual_value": "0.00",22 "expected_value": "25.09",23 "field": null,24 "signal_description": null,25 "has_fraud_risk": true,26 "type": "MASKING",27 "page_number": 1,28 "institution_metadata": {29 "item_id": "testItemID"30 }31 },32 {33 "actual_value": null,34 "expected_value": null,35 "field": null,36 "signal_description": "Creation date and modification date do not match",37 "has_fraud_risk": true,38 "institution_metadata": null,39 "type": "METADATA_DATES_OUTSIDE_WINDOW",40 "page_number": 041 }42 ]43 }44 ]45 }46 ]47 }48 ],49 "request_id": "LhQf0THi8SH1yJm"50}
Was this helpful?
/credit/employment/get
Retrieve a summary of an individual's employment information
/credit/employment/get
returns a list of items with employment information from a user's payroll provider that was verified by an end user.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
1const request: CreditEmploymentGetRequest = {2 user_token: 'user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d',3};4
5try {6 const response = await client.creditEmploymentGet(request);7} catch (error) {8 // handle error9}
Response fields and example
items
item_id
item_id
of the Item associated with this webhook, warning, or erroremployments
account_id
status
ACTIVE
, INACTIVE
, null
start_date
date
end_date
date
title
platform_ids
employee_id
payroll_id
position_id
employee_type
"FULL_TIME"
: A full-time employee.
"PART_TIME"
: A part-time employee.
"CONTRACTOR"
: An employee typically hired externally through a contracting group.
"TEMPORARY"
: A temporary employee.
"OTHER"
: The employee type is not one of the above defined types.FULL_TIME
, PART_TIME
, CONTRACTOR
, TEMPORARY
, OTHER
, null
last_paystub_date
date
request_id
1{2 "items": [3 {4 "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",5 "employments": [6 {7 "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9",8 "status": "ACTIVE",9 "start_date": "2020-01-01",10 "end_date": null,11 "employer": {12 "name": "Plaid Inc"13 },14 "title": "Software Engineer",15 "platform_ids": {16 "employee_id": "1234567",17 "position_id": "8888",18 "payroll_id": "1234567"19 },20 "employee_type": "FULL_TIME",21 "last_paystub_date": "2022-01-15"22 }23 ]24 }25 ],26 "request_id": "LhQf0THi8SH1yJm"27}
Was this helpful?
/credit/payroll_income/parsing_config/update
Update the parsing configuration for a document income verification
/credit/payroll_income/parsing_config/update
updates the parsing configuration for a document income verification.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
item_id
item_id
of the Item associated with this webhook, warning, or errorparsing_config
ocr
, risk_signals
1const request: CreditPayrollIncomeParsingConfigUpdateRequest = {2 user_token: 'user-sandbox-dd4c42bd-4a81-4089-8146-40671e81dd12',3 parsing_config: ['fraud_risk'],4};5try {6 const response = await client.creditPayrollIncomeParsingConfigUpdate(request);7} catch (error) {8 // handle error9}
Response fields and example
request_id
1{2 "request_id": "LhQf0THi8SH1yJm"3}
Was this helpful?
/credit/payroll_income/refresh
Refresh a digital payroll income verification
/credit/payroll_income/refresh
refreshes a given digital payroll income verification.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
options
/credit/payroll_income/refresh
request options.1const request: PayrollIncomeRefreshRequest = {2 client_user_id: 'c0e2c4ee-b763-4af5-cfe9-46a46bce883d',3};4
5try {6 const response = await client.userCreate(request);7} catch (error) {8 // handle error9}
Response fields and example
request_id
verification_refresh _status
"USER_PRESENCE_REQUIRED"
User presence is required to refresh an income verification.
"SUCCESSFUL"
The income verification refresh was successful.
"NOT_FOUND"
No new data was found after the income verification refresh.USER_PRESENCE_REQUIRED
, SUCCESSFUL
, NOT_FOUND
1{2 "request_id": "nTkbCH41HYmpbm5",3 "verification_refresh_status": "USER_PRESENCE_REQUIRED"4}
Was this helpful?
Webhooks
Income webhooks are sent to indicate when an income verification or document fraud risk evaluation has finished processing.
INCOME_VERIFICATION
Fired when the status of an income verification instance has changed. This webhook is fired for both the Document and Payroll Income flows, but not the Bank Income flow. It will typically take several minutes for this webhook to fire after the end user has uploaded their documents in the Document Income flow.
webhook_type
"INCOME"
webhook_code
INCOME_VERIFICATION
item_id
user_id
user_id
of the User associated with this webhook, warning, or error.verification_status
VERIFICATION_STATUS_PROCESSING_COMPLETE
: The income verification processing has completed. This indicates that the documents have been parsed successfully or that the documents were not parsable. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the /credit/payroll_income/get
endpoint and check the document metadata to see which documents were successfully parsed.VERIFICATION_STATUS_PROCESSING_FAILED
: An unexpected internal error occurred when attempting to process the verification documentation.VERIFICATION_STATUS_PENDING_APPROVAL
: (deprecated) The income verification has been sent to the user for review.environment
sandbox
, production
1{2 "webhook_type": "INCOME",3 "webhook_code": "INCOME_VERIFICATION",4 "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ",5 "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334",6 "verification_status": "VERIFICATION_STATUS_PROCESSING_COMPLETE",7 "environment": "production"8}
Was this helpful?
INCOME_VERIFICATION_RISK_SIGNALS
Fired when risk signals have been processed for documents uploaded via Document Income. It will typically take a minute or two for this webhook to fire after the end user has uploaded their documents in the Document Income flow. Once this webhook has fired, /credit/payroll_income/risk_signals/get
may then be called to determine whether the documents were successfully processed and to retrieve risk data.
webhook_type
"INCOME"
webhook_code
INCOME_VERIFICATION_RISK_SIGNALS
item_id
user_id
user_id
of the User associated with this webhook, warning, or error.risk_signals_status
RISK_SIGNALS_PROCESSING_COMPLETE
: The income verification fraud detection processing has completed. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the /credit/payroll_income/risk_signals/get
endpoint to get all risk signal data.environment
sandbox
, production
1{2 "webhook_type": "INCOME",3 "webhook_code": "INCOME_VERIFICATION_RISK_SIGNALS",4 "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ",5 "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334",6 "status": "RISK_SIGNALS_PROCESSING_COMPLETE",7 "environment": "production"8}
Was this helpful?
BANK_INCOME_REFRESH_UPDATE
Fired when a change to the user's income is detected. You should call /credit/bank_income/refresh
to get updated income data for the user. To receive this webhook, subscribe in the Dashboard.
webhook_type
INCOME
webhook_code
BANK_INCOME_REFRESH_UPDATE
user_id
user_id
corresponding to the user the webhook has fired for.environment
sandbox
, production
1{2 "webhook_type": "INCOME",3 "webhook_code": "BANK_INCOME_REFRESH_UPDATE",4 "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "environment": "production"6}
Was this helpful?
BANK_INCOME_REFRESH_COMPLETE
Fired when a refreshed bank income report has finished generating or failed to generate, triggered by calling /credit/bank_income/refresh
. To get this webhook, subscribe via the Dashboard.
webhook_type
INCOME
webhook_code
BANK_INCOME_REFRESH_COMPLETE
user_id
user_id
corresponding to the user the webhook has fired for.result
SUCCESS
: The refreshed report was successfully generated and can be retrieved via /credit/bank_income/get
.FAILURE
: The refreshed report failed to be generatedSUCCESS
, FAILURE
environment
sandbox
, production
1{2 "webhook_type": "INCOME",3 "webhook_code": "BANK_INCOME_REFRESH_COMPLETE",4 "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "result": "SUCCESS",6 "environment": "production"7}
Was this helpful?
INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED
Fired when the attempt to refresh Payroll Income data for a user via /credit/payroll_income/refresh
failed because the user must re-connect their payroll account.
webhook_type
INCOME
webhook_code
INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED
user_id
user_id
corresponding to the user the webhook has fired for.environment
sandbox
, production
1{2 "webhook_type": "INCOME",3 "webhook_code": "INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED",4 "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb",5 "environment": "production"6}