"asset_report_id": "fdc09207-0cef-4d88-b5eb-0d970758ebd9",
"request_id": "qEg07"
}
http code 200
{
"asset_report_token": "assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c",
"asset_report_id": "fdc09207-0cef-4d88-b5eb-0d970758ebd9",
"request_id": "qEg07"
}
http code 200
{
"asset_report_token": "assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c",
"asset_report_id": "fdc09207-0cef-4d88-b5eb-0d970758ebd9",
"request_id": "qEg07"
}
http code 200
{
"asset_report_token": "assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c",
"asset_report_id": "fdc09207-0cef-4d88-b5eb-0d970758ebd9",
"request_id": "qEg07"
}
3. Retrieve an Asset Report
You can retrieve your Asset Report in multiple formats, determined by the endpoint you call.
POST /asset_report/get
POST /asset_report/pdf/get
Retrieve JSON Report request
To retrieve the Asset Report in JSON format, simply call the
/asset_report/get
endpoint. By default, an Asset Report includes
transaction descriptions as returned by the bank, as opposed to parsed and categorized
by Plaid.
You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. You can read more about our categories here.
To retrieve an Asset Report with Insights, call the
/asset_report/get
endpoint with
include_insights
set to true
. Note that you will need
to
contact us to get access to this
feature.
| Field | Description |
|---|---|
client_id String |
Your client_id |
secret String |
Your secret |
asset_report_token String |
The Asset Report token from the
/asset_report/create response |
include_insights Boolean, optional |
true if you would like to retrieve the Asset Report with
Insights, false otherwise. This field defaults to
false if omitted.
Contact us to get access
to this feature. |
Retrieve JSON Report request
// ASSET_REPORT_TOKEN is the token from the createAssetReport response.
client.getAssetReport(ASSET_REPORT_TOKEN, false, (error, getResponse) => {
if (error != null) {
if (error.status_code === 400 &&
error.error_code === 'PRODUCT_NOT_READY') {
// Asset report is not ready yet. Try again later.
} else {
// Handle error.
}
}
const report = getResponse.report;
});
curl -X POST https://sandbox.plaid.com/asset_report/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"asset_report_token": String,
"include_insights": Boolean
}'
# asset_report_token is the token from the AssetReport.create response.
response = @client.asset_report.get(asset_report_token)
report = response.report
// assetReportToken is the token from the AssetReportCreateRequest response.
AssetReportGetRequest assetReportGet =
new AssetReportGetRequest(assetReportToken);
Response<AssetReportGetResponse> response =
client
.service()
.assetReportGet(assetReportGet)
.execute();
AssetReport report = response.body().getReport();
# asset_report_token is the token from the AssetReport.create response.
try:
response = client.AssetReport.get(asset_report_token)
report = response['report']
except PlaidError as e:
if e.code == 'PRODUCT_NOT_READY':
# Asset report is not ready yet. Try again later.
else:
# Handle error.
Retrieve JSON Report response
http code 200
{
"report": {
"asset_report_id": "c5b638f9-02b8-45c6-9093-552195149b0c",
"client_report_id": "123456",
"date_generated": "2018-04-12T03:32:11Z",
"days_requested": 730,
"items": [
{
"accounts": [
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"balances": {
"available": 100,
"current": 110
},
"days_available": 730,
"historical_balances": [
{
"current": 110,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "0000",
"name": "Plaid Checking",
"official_name": "Plaid Gold Standard 0% Interest Checking",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "checking",
"transactions": [
...
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": -500,
"date": "2018-03-25",
"original_description": "United Airlines **** REFUND ****",
"pending": false,
"transaction_id": "wPkQknvpz9HV8bPK465rC6GnyrnlrXCMr9vgm",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 5.4,
"date": "2018-03-27",
"original_description": "Uber 063015 SFPOOL",
"pending": false,
"transaction_id": "GM4K4LJqGBu5g8yqjkQJuVnry6rz6zh8Qwkv9",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 6.33,
"date": "2018-04-09",
"original_description": "Uber 072515 SFPOOL",
"pending": false,
"transaction_id": "DekykZJWrjf5g7kjRaLvceLZb4avg5CVBDGz5x",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"balances": {
"available": 200,
"current": 210
},
"days_available": 730,
"historical_balances": [
{
"current": 210,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "1111",
"name": "Plaid Saving",
"official_name": "Plaid Silver Standard 0.1% Interest Saving",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "savings",
"transactions": [
...
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-02-25",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "LkexeEJ3Ryf5Vw3evRMMIXlLjkRkawIdzm6Ak",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": -4.22,
"date": "2018-03-22",
"original_description": "INTRST PYMNT",
"pending": false,
"transaction_id": "y7EJEmwgazsjJDVdMZ3QSQBKpaKnQzSjElP71M",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-03-27",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "dLz7z41KlaSWLbmJqpxXiaqPgJPbn5IgMwymJ",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"balances": {
"available": null,
"current": 5000
},
"days_available": 730,
"historical_balances": [
{
"current": 5000,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "2222",
"name": "Plaid CD",
"official_name": "Plaid Bronze Standard 0.2% Interest CD",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "cd",
"transactions": [
...
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-01-25",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "M8QdQWJx1GS51ZymxjNNILQ7GwjwG1I3qr3RwX",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-02-24",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "q3Z4ZgvempFnljLVzqxxhPQ3we7eW9sdJy5jP",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-03-26",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "aZqNqxQAEyHvboB8jazrsbPWNwW6WxU8zRj5kw",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
}
],
"date_last_updated": "2018-04-12T03:32:10Z",
"institution_id": "ins_109511",
"institution_name": "Tartan Bank",
"item_id": "zeWoWyv84xfkGg1w4ox5iQy5k6j75xu8QXMEm"
}
],
"user": {
"client_user_id": "123456789",
"email"<EMAIL_ADDRESS>"first_name": "Alberta",
"last_name": "Charleson",
"middle_name": "Bobbeth",
"phone_number": "111-222-3333",
"ssn": "123-45-6789"
}
},
"request_id": "pdwYD",
"warnings": []
}
http code 200
{
"report": {
"asset_report_id": "c5b638f9-02b8-45c6-9093-552195149b0c",
"client_report_id": "123456",
"date_generated": "2018-04-12T03:32:11Z",
"days_requested": 730,
"items": [
{
"accounts": [
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"balances": {
"available": 100,
"current": 110
},
"days_available": 730,
"historical_balances": [
{
"current": 110,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "0000",
"name": "Plaid Checking",
"official_name": "Plaid Gold Standard 0% Interest Checking",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "checking",
"transactions": [
...
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": -500,
"date": "2018-03-25",
"original_description": "United Airlines **** REFUND ****",
"pending": false,
"transaction_id": "wPkQknvpz9HV8bPK465rC6GnyrnlrXCMr9vgm",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 5.4,
"date": "2018-03-27",
"original_description": "Uber 063015 SFPOOL",
"pending": false,
"transaction_id": "GM4K4LJqGBu5g8yqjkQJuVnry6rz6zh8Qwkv9",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 6.33,
"date": "2018-04-09",
"original_description": "Uber 072515 SFPOOL",
"pending": false,
"transaction_id": "DekykZJWrjf5g7kjRaLvceLZb4avg5CVBDGz5x",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"balances": {
"available": 200,
"current": 210
},
"days_available": 730,
"historical_balances": [
{
"current": 210,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "1111",
"name": "Plaid Saving",
"official_name": "Plaid Silver Standard 0.1% Interest Saving",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "savings",
"transactions": [
...
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-02-25",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "LkexeEJ3Ryf5Vw3evRMMIXlLjkRkawIdzm6Ak",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": -4.22,
"date": "2018-03-22",
"original_description": "INTRST PYMNT",
"pending": false,
"transaction_id": "y7EJEmwgazsjJDVdMZ3QSQBKpaKnQzSjElP71M",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-03-27",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "dLz7z41KlaSWLbmJqpxXiaqPgJPbn5IgMwymJ",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"balances": {
"available": null,
"current": 5000
},
"days_available": 730,
"historical_balances": [
{
"current": 5000,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "2222",
"name": "Plaid CD",
"official_name": "Plaid Bronze Standard 0.2% Interest CD",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "cd",
"transactions": [
...
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-01-25",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "M8QdQWJx1GS51ZymxjNNILQ7GwjwG1I3qr3RwX",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-02-24",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "q3Z4ZgvempFnljLVzqxxhPQ3we7eW9sdJy5jP",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-03-26",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "aZqNqxQAEyHvboB8jazrsbPWNwW6WxU8zRj5kw",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
}
],
"date_last_updated": "2018-04-12T03:32:10Z",
"institution_id": "ins_109511",
"institution_name": "Tartan Bank",
"item_id": "zeWoWyv84xfkGg1w4ox5iQy5k6j75xu8QXMEm"
}
],
"user": {
"client_user_id": "123456789",
"email"<EMAIL_ADDRESS>"first_name": "Alberta",
"last_name": "Charleson",
"middle_name": "Bobbeth",
"phone_number": "111-222-3333",
"ssn": "123-45-6789"
}
},
"request_id": "pdwYD",
"warnings": []
}
http code 200
{
"report": {
"asset_report_id": "c5b638f9-02b8-45c6-9093-552195149b0c",
"client_report_id": "123456",
"date_generated": "2018-04-12T03:32:11Z",
"days_requested": 730,
"items": [
{
"accounts": [
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"balances": {
"available": 100,
"current": 110
},
"days_available": 730,
"historical_balances": [
{
"current": 110,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "0000",
"name": "Plaid Checking",
"official_name": "Plaid Gold Standard 0% Interest Checking",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "checking",
"transactions": [
...
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": -500,
"date": "2018-03-25",
"original_description": "United Airlines **** REFUND ****",
"pending": false,
"transaction_id": "wPkQknvpz9HV8bPK465rC6GnyrnlrXCMr9vgm",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 5.4,
"date": "2018-03-27",
"original_description": "Uber 063015 SFPOOL",
"pending": false,
"transaction_id": "GM4K4LJqGBu5g8yqjkQJuVnry6rz6zh8Qwkv9",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 6.33,
"date": "2018-04-09",
"original_description": "Uber 072515 SFPOOL",
"pending": false,
"transaction_id": "DekykZJWrjf5g7kjRaLvceLZb4avg5CVBDGz5x",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"balances": {
"available": 200,
"current": 210
},
"days_available": 730,
"historical_balances": [
{
"current": 210,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "1111",
"name": "Plaid Saving",
"official_name": "Plaid Silver Standard 0.1% Interest Saving",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "savings",
"transactions": [
...
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-02-25",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "LkexeEJ3Ryf5Vw3evRMMIXlLjkRkawIdzm6Ak",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": -4.22,
"date": "2018-03-22",
"original_description": "INTRST PYMNT",
"pending": false,
"transaction_id": "y7EJEmwgazsjJDVdMZ3QSQBKpaKnQzSjElP71M",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-03-27",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "dLz7z41KlaSWLbmJqpxXiaqPgJPbn5IgMwymJ",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"balances": {
"available": null,
"current": 5000
},
"days_available": 730,
"historical_balances": [
{
"current": 5000,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "2222",
"name": "Plaid CD",
"official_name": "Plaid Bronze Standard 0.2% Interest CD",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "cd",
"transactions": [
...
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-01-25",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "M8QdQWJx1GS51ZymxjNNILQ7GwjwG1I3qr3RwX",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-02-24",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "q3Z4ZgvempFnljLVzqxxhPQ3we7eW9sdJy5jP",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-03-26",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "aZqNqxQAEyHvboB8jazrsbPWNwW6WxU8zRj5kw",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
}
],
"date_last_updated": "2018-04-12T03:32:10Z",
"institution_id": "ins_109511",
"institution_name": "Tartan Bank",
"item_id": "zeWoWyv84xfkGg1w4ox5iQy5k6j75xu8QXMEm"
}
],
"user": {
"client_user_id": "123456789",
"email"<EMAIL_ADDRESS>"first_name": "Alberta",
"last_name": "Charleson",
"middle_name": "Bobbeth",
"phone_number": "111-222-3333",
"ssn": "123-45-6789"
}
},
"request_id": "pdwYD",
"warnings": []
}
http code 200
{
"report": {
"asset_report_id": "c5b638f9-02b8-45c6-9093-552195149b0c",
"client_report_id": "123456",
"date_generated": "2018-04-12T03:32:11Z",
"days_requested": 730,
"items": [
{
"accounts": [
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"balances": {
"available": 100,
"current": 110
},
"days_available": 730,
"historical_balances": [
{
"current": 110,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "0000",
"name": "Plaid Checking",
"official_name": "Plaid Gold Standard 0% Interest Checking",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "checking",
"transactions": [
...
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": -500,
"date": "2018-03-25",
"original_description": "United Airlines **** REFUND ****",
"pending": false,
"transaction_id": "wPkQknvpz9HV8bPK465rC6GnyrnlrXCMr9vgm",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 5.4,
"date": "2018-03-27",
"original_description": "Uber 063015 SFPOOL",
"pending": false,
"transaction_id": "GM4K4LJqGBu5g8yqjkQJuVnry6rz6zh8Qwkv9",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 6.33,
"date": "2018-04-09",
"original_description": "Uber 072515 SFPOOL",
"pending": false,
"transaction_id": "DekykZJWrjf5g7kjRaLvceLZb4avg5CVBDGz5x",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"balances": {
"available": 200,
"current": 210
},
"days_available": 730,
"historical_balances": [
{
"current": 210,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "1111",
"name": "Plaid Saving",
"official_name": "Plaid Silver Standard 0.1% Interest Saving",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "savings",
"transactions": [
...
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-02-25",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "LkexeEJ3Ryf5Vw3evRMMIXlLjkRkawIdzm6Ak",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": -4.22,
"date": "2018-03-22",
"original_description": "INTRST PYMNT",
"pending": false,
"transaction_id": "y7EJEmwgazsjJDVdMZ3QSQBKpaKnQzSjElP71M",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-03-27",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "dLz7z41KlaSWLbmJqpxXiaqPgJPbn5IgMwymJ",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"balances": {
"available": null,
"current": 5000
},
"days_available": 730,
"historical_balances": [
{
"current": 5000,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "2222",
"name": "Plaid CD",
"official_name": "Plaid Bronze Standard 0.2% Interest CD",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "cd",
"transactions": [
...
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-01-25",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "M8QdQWJx1GS51ZymxjNNILQ7GwjwG1I3qr3RwX",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-02-24",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "q3Z4ZgvempFnljLVzqxxhPQ3we7eW9sdJy5jP",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-03-26",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "aZqNqxQAEyHvboB8jazrsbPWNwW6WxU8zRj5kw",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
}
],
"date_last_updated": "2018-04-12T03:32:10Z",
"institution_id": "ins_109511",
"institution_name": "Tartan Bank",
"item_id": "zeWoWyv84xfkGg1w4ox5iQy5k6j75xu8QXMEm"
}
],
"user": {
"client_user_id": "123456789",
"email"<EMAIL_ADDRESS>"first_name": "Alberta",
"last_name": "Charleson",
"middle_name": "Bobbeth",
"phone_number": "111-222-3333",
"ssn": "123-45-6789"
}
},
"request_id": "pdwYD",
"warnings": []
}
http code 200
{
"report": {
"asset_report_id": "c5b638f9-02b8-45c6-9093-552195149b0c",
"client_report_id": "123456",
"date_generated": "2018-04-12T03:32:11Z",
"days_requested": 730,
"items": [
{
"accounts": [
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"balances": {
"available": 100,
"current": 110
},
"days_available": 730,
"historical_balances": [
{
"current": 110,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 110,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "0000",
"name": "Plaid Checking",
"official_name": "Plaid Gold Standard 0% Interest Checking",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "checking",
"transactions": [
...
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": -500,
"date": "2018-03-25",
"original_description": "United Airlines **** REFUND ****",
"pending": false,
"transaction_id": "wPkQknvpz9HV8bPK465rC6GnyrnlrXCMr9vgm",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 5.4,
"date": "2018-03-27",
"original_description": "Uber 063015 SFPOOL",
"pending": false,
"transaction_id": "GM4K4LJqGBu5g8yqjkQJuVnry6rz6zh8Qwkv9",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "jW4r4QvdeXcAZNj8J3Dni68DqxQ3laHZwGyBD",
"amount": 6.33,
"date": "2018-04-09",
"original_description": "Uber 072515 SFPOOL",
"pending": false,
"transaction_id": "DekykZJWrjf5g7kjRaLvceLZb4avg5CVBDGz5x",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"balances": {
"available": 200,
"current": 210
},
"days_available": 730,
"historical_balances": [
{
"current": 210,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 210,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "1111",
"name": "Plaid Saving",
"official_name": "Plaid Silver Standard 0.1% Interest Saving",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "savings",
"transactions": [
...
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-02-25",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "LkexeEJ3Ryf5Vw3evRMMIXlLjkRkawIdzm6Ak",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": -4.22,
"date": "2018-03-22",
"original_description": "INTRST PYMNT",
"pending": false,
"transaction_id": "y7EJEmwgazsjJDVdMZ3QSQBKpaKnQzSjElP71M",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "V3EkERBQXGF5z6Jb9NDkupNeoy1b81cjpWVDe",
"amount": 25,
"date": "2018-03-27",
"original_description": "CREDIT CARD 3333 PAYMENT //",
"pending": false,
"transaction_id": "dLz7z41KlaSWLbmJqpxXiaqPgJPbn5IgMwymJ",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"balances": {
"available": null,
"current": 5000
},
"days_available": 730,
"historical_balances": [
{
"current": 5000,
"date": "2018-04-12",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-11",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"current": 1000,
"date": "2018-04-10",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
...
],
"mask": "2222",
"name": "Plaid CD",
"official_name": "Plaid Bronze Standard 0.2% Interest CD",
"owners": [
{
"addresses": [
{
"data": {
"city": "Malakoff",
"region": "NY",
"street": "2992 Cameron Road",
"postal_code": "14236",
"country": "US"
},
"primary": true
},
{
"data": {
"city": "San Matias",
"region": "CA",
"street": "2493 Leisure Lane",
"postal_code": "93405-2255",
"country": "US"
},
"primary": false
}
],
"emails": [
{
"data"<EMAIL_ADDRESS>"primary": true,
"type": "primary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "secondary"
},
{
"data"<EMAIL_ADDRESS>"primary": false,
"type": "other"
}
],
"names": [
"Alberta Bobbeth Charleson"
],
"phone_numbers": [
{
"data": "1112223333",
"primary": false,
"type": "home"
},
{
"data": "1112224444",
"primary": false,
"type": "work"
},
{
"data": "1112225555",
"primary": false,
"type": "mobile1"
}
]
}
],
"subtype": "cd",
"transactions": [
...
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-01-25",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "M8QdQWJx1GS51ZymxjNNILQ7GwjwG1I3qr3RwX",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-02-24",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "q3Z4ZgvempFnljLVzqxxhPQ3we7eW9sdJy5jP",
"iso_currency_code": "USD",
"unofficial_currency_code": null
},
{
"account_id": "4RWyWq143jIEm7BaqJNKCQyG9Ndnv5iJaENyV",
"amount": 1000,
"date": "2018-03-26",
"original_description": "CD DEPOSIT .INITIAL.",
"pending": false,
"transaction_id": "aZqNqxQAEyHvboB8jazrsbPWNwW6WxU8zRj5kw",
"iso_currency_code": "USD",
"unofficial_currency_code": null
}
],
"type": "depository"
}
],
"date_last_updated": "2018-04-12T03:32:10Z",
"institution_id": "ins_109511",
"institution_name": "Tartan Bank",
"item_id": "zeWoWyv84xfkGg1w4ox5iQy5k6j75xu8QXMEm"
}
],
"user": {
"client_user_id": "123456789",
"email"<EMAIL_ADDRESS>"first_name": "Alberta",
"last_name": "Charleson",
"middle_name": "Bobbeth",
"phone_number": "111-222-3333",
"ssn": "123-45-6789"
}
},
"request_id": "pdwYD",
"warnings": []
}
Retrieve JSON Report response data elements
The /asset_report/get
response combines data Plaid retrieves from financial
institutions (the
items
object) and data that you submitted when you created the
Asset Report (the user
object).
| Field | Description |
|---|---|
report Object |
The data comprising the Asset Report; see Report object below for fields |
request_id String |
A unique identifier included in Plaid success and error responses; this can be shared with Plaid Support to expedite investigation |
warnings [Object] |
See the Warnings object |
Report object
| Field | Description |
|---|---|
asset_report_id String |
Plaid’s unique identifier for this Asset Report |
client_report_id String |
An identifier you determine and submit for the Asset Report |
date_generated Datetime |
The date and time when the Asset Report was created |
days_requested Number |
The duration of transaction history you requested |
user Object |
Data submitted by you about the user whose Asset Report is being compiled; see User object for fields |
items [Object] |
Data returned by Plaid about each of the
Items included in the Asset Report; see
Item object for fields |
Item object
| Field | Description |
|---|---|
| item_id String |
Plaid’s unique identifier for the Item |
| institution_name String |
The full financial institution name associated with the
Item |
| institution_id String |
The financial institution associated with the
Item |
| date_last_updated Datetime |
The date and time when this Item’s data was retrieved from the
financial institution |
| accounts [Object] |
Data about each of the accounts open on the
Item ; see Account object for fields |
Account object
| Field | Description |
|---|---|
account_id String |
Plaid’s unique identifier for the account |
mask String, nullable |
The last 2-4 alphanumeric characters of an account's official account
number. Note that the
mask may be non-unique between an Item's
accounts, it may also not match the mask that the bank displays to the user.
This field is nullable. |
name String |
The name of the account, either assigned by the user or by the financial institution itself |
official_name String, nullable |
The official name of the account as given by the financial institution |
type String |
See Account types |
subtype String |
See Account subtypes |
owners [Object] |
Data returned by the financial institution about the account owner or owners; see Owner object for fields |
balances Object |
Data about the various balances on the account; see Balance object for fields. |
historical_balances [Object] |
Calculated data about the historical balances on the account; see Historical balance object for fields |
transactions [Object] |
Data about the transactions |
days_available Number |
The duration of transaction history available for this
Item , typically defined as the time since the date of
the earliest transaction in that account |
Owner object
The owner
object consists of data returned from the financial institution,
whereas the user
object consists of data you optionally submit
yourself when creating the Asset Report.
| Field | Description |
|---|---|
| names [String] |
A list of names associated with the account by the financial institution |
| phone_numbers [Object] |
A list of phone numbers associated with the account by the financial institution; see Phone number object for fields |
| emails [Object] |
A list of emails associated with the account by the financial institution; see Email object for fields |
| addresses [Object] |
Data about the various addresses associated with the account by the financial institution; see Address object for fields |
Phone number object
| Field | Description |
|---|---|
| data String |
The phone number |
| primary Boolean |
When true, identifies the phone number as the primary number on an account |
| type String |
The type of phone number as described by the financial
institution Example: "mobile" |
Email object
| Field | Description |
|---|---|
| data String |
The email address |
| primary Boolean |
When true, identifies the email address as the primary email address on an account |
| type String |
The type of email Example: "secondary" |
Address object
| Field | Description |
|---|---|
| data Object |
Data about the components comprising an address; see Address data object for fields. |
| primary Boolean |
When true , identifies the address as the primary address on an
account |
Address data object
| Key | Description |
|---|---|
| city String |
The full city name |
| region String |
The region or state Example: "NC" |
| street String |
The full street address Example: "564 Main Street, APT
15" |
| postal_code String |
The postal code |
| country String |
The ISO 3166-1 alpha-2 country code |
Balance object
| Key | Description |
|---|---|
current Number |
The total amount of funds in or owed by the
account. For credit -type accounts, a positive balance
indicates the amount owed; a negative amount indicates the lender owing the
account holder.For loan -type accounts, the
current balance is the principal remaining on the
loan. For investment -type accounts, the
current balance is the total value of assets as
presented by the institution. |
available Number, nullable |
The amount of funds available to be withdrawn from
the account, as determined by the financial institution. For credit -type accounts, the
available balance typically equals the
limit less the current balance,
less any pending outflows plus any pending inflows. For depository -type accounts, the
available balance typically equals the
current balance less any pending outflows plus any
pending inflows. For depository -type accounts, the
available balance does not include the overdraft
limit.For investment -type accounts, the
available balance is the total cash available to
withdraw as presented by the institution.Note that not all institutions calculate the available balance. In the event that
available balance is unavailable, Plaid will return an
available balance value of
null .
|
limit Number, nullable |
For credit -type accounts, this
represents the credit limit. For depository -type accounts, this
represents the pre-arranged overdraft limit, which is common for current
(checking) accounts in Europe. In North America, this field is typically
only available for credit -type accounts. |
iso_currency_code String, nullable |
The ISO currency code of the balance. Always
null if
unofficial_currency_code is non-null. |
unofficial_currency_code String, nullable |
The unofficial currency code associated with the
balance. Always null if
iso_currency_code is non-null. |
Historical balance object
| Field | Description |
|---|---|
| date Date |
The date of the calculated historical balance |
| current Number |
The total amount of funds in the account, calculated from the
current balance in the
balance object by subtracting inflows and adding back
outflows according to the posted date of each transactionIf the account has any pending transactions, historical balance amounts on or after the date of the earliest pending transaction may differ if retrieved in subsequent Asset Reports as a result of those pending transactions posting |
| iso_currency_code String |
The ISO currency code of the balance. Always
null if
unofficial_currency_code is non-null. |
| unofficial_currency_code String |
The unofficial currency code associated with the balance. Always
null if
iso_currency_code is non-null. |
Transaction object
| Field | Description |
|---|---|
| account_id String |
Plaid’s unique identifier for the account |
| transaction_id String |
Plaid’s unique identifier for the transaction |
| date Date |
For pending transactions, Plaid returns the date the transaction occurred; for posted transactions, Plaid returns the date the transaction posts; both dates are returned in an ISO 8601 format (YYYY-MM-DD). |
| original_description String |
The string returned by the financial institution to describe the transaction |
| pending Boolean |
When true, identifies the transaction as pending or unsettled; pending transaction details (description, amount) may change before they are settled |
| amount Number |
The settled dollar value; positive values when money moves out of the
account, negative values when money moves in For example, purchases are positive, while credit card payments, direct deposits, and refunds are negative |
| iso_currency_code String |
The ISO currency code of the transaction. Always
null if
unofficial_currency_code is non-null. |
| unofficial_currency_code String, nullable |
The unofficial currency code associated with the transaction. Always
null if
iso_currency_code is non-null. |
| account_owner String, nullable |
The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts. This field only appears in an Asset Report with Insights. |
| category [String], nullable |
A hierarchical array of the categories to which this transaction belongs. See Categories. This field only appears in an Asset Report with Insights. |
| category_id String, nullable |
The ID of the category to which this transaction belongs. See Categories. This field only appears in an Asset Report with Insights. |
| date_transacted String, nullable |
The date of the transaction. This field will only exist if it is non-null. This field only appears in an Asset Report with Insights. |
| location Object, nullable |
Information about where the transaction occurred. The
location key will always be an
Object , but no
location data elements
are guaranteed. This field only appears in an Asset Report with
Insights. |
| name String, nullable |
The merchant name or transaction description. This field only appears in an Asset Report with Insights. |
| payment_meta Object, nullable |
Information about where the transaction occurred. The
payment_meta key will always be an
Object , but no
payment_meta data
elements are guaranteed. This field only appears in an Asset
Report with Insights. |
| pending_transaction_id String, nullable |
The ID of a posted transaction's associated pending transaction—where applicable. This field only appears in an Asset Report with Insights. |
| transaction_type String, nullable |
digital : transactions that took place online. place : transactions that were made at a physical location.
special : transactions that relate to banks, e.g. fees or
deposits. unresolved : transactions that do not fit into
the other three types. This field only appears in an Asset Report with
Insights. |
Transaction location schema
| Key | Description |
|---|---|
address String, nullable |
The street address where the transaction occurred. |
city String, nullable |
The city where the transaction occurred. |
region String, nullable |
The region or state where the transaction occurred. |
postal_code String, nullable |
The postal code where the transaction occurred. |
country String, nullable |
The ISO 3166-1 alpha-2 country code where the transaction occurred. |
lat Number, nullable |
The latitude where the transaction occurred. |
lon Number, nullable |
The longitude where the transaction occurred. |
Transaction payment_meta schema
| Key | Description |
|---|---|
reference_number String, nullable |
The transaction reference number supplied by the financial institution. |
ppd_id String, nullable |
The ACH PPD ID for the payer. |
payee String, nullable |
For transfers, the party that is receiving the transaction. |
Warning object
| Field | Description |
|---|---|
| warning_type String |
The warning type, which will always be
"ASSET_REPORT_WARNING" .
|
| warning_code String |
The warning code identifies a specific kind of warning. Currently, the only
possible warning code is
"OWNERS_UNAVAILABLE" , which indicates that
account-owner information is not available. |
| cause Object |
The underlying cause of this warning. See Cause object |
Cause object
| Field | Description |
|---|---|
| error Object |
The underlying error. See Error schema. |
| item_id String |
The item ID. |
To retrieve the Asset Report as a pre-formatted PDF, call the
/asset_report/pdf/get
endpoint. On success, the request id for
/asset_report/pdf/get
is returned in the Plaid-Request-ID header.
Retrieve PDF Report request
client.getAssetReportPdf(ASSET_REPORT_TOKEN, (error, pdfResponse) => {
if (error != null) {
// Handle error.
}
// The PDF is binary data.
const pdf = pdfResponse;
});
curl -X POST https://sandbox.plaid.com/asset_report/pdf/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"asset_report_token": String
}' \
-o 'asset_report.pdf'
pdf = @client.asset_report.get_pdf(asset_report_token)
Response<AssetReportGetPdfResponse> response =
client
.service()
.assetReportPdfGet(new AssetReportPdfGetRequest(assetReportToken);)
.execute();
byte[] pdf = response.body().bytes();
pdf = client.AssetReport.get_pdf(asset_report_token)
4. Share an Audit Copy
Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid will supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program.
An Audit Copy contains the same underlying data as the Asset Report. To grant access to
an Audit Copy, you’ll create an
audit_copy_token
for it and then pass that token to the third
party who needs access. Each third party has its own auditor_id
, for
example
fannie_mae
. You’ll need to create a separate Audit Copy for each
third party to whom you want to grant access to the Report.
Simply call the /asset_report/audit_copy/create
endpoint as follows:
Create Audit Copy request
// The auditor ID corresponds to the third party with which you want to share
// the asset report. For example, Fannie Mae's auditor ID is 'fannie_mae'.
const auditorId = 'fannie_mae';
client.createAuditCopy(ASSET_REPORT_TOKEN, auditorId, (error, createResponse) => {
if (error != null) {
// Handle error.
}
const auditCopyToken = createResponse.audit_copy_token;
});
curl -X POST https://sandbox.plaid.com/asset_report/audit_copy/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"asset_report_token": String,
"auditor_id": String
}'
# The auditor ID corresponds to the third party with which you want to share
# the asset report. For example, Fannie Mae's auditor ID is 'fannie_mae'.
auditor_id = 'fannie_mae'
response = @client.asset_report.create_audit_copy(asset_report_token, auditor_id)
audit_copy_token = response.audit_copy_token
// The auditor ID corresponds to the third party with which you want to share
// the asset report. For example, Fannie Mae's auditor ID is "fannie_mae".
String auditorId = "fannie_mae";
AssetReportAuditCopyCreateRequest request =
new AssetReportAuditCopyCreateRequest(assetReportToken, auditorId);
Response<AssetReportAuditCopyCreateResponse> response =
client
.service()
.assetReportAuditCopyCreate(request)
.execute();
String auditCopyToken = response.body().getAuditCopyToken();
# The auditor ID corresponds to the third party with which you want to share
# the asset report. For example, Fannie Mae's auditor ID is 'fannie_mae'.
auditor_id = 'fannie_mae'
response = client.AssetReport.audit_copy.create(asset_report_token, auditor_id)
audit_copy_token = response['audit_copy_token']
Create Audit Copy response
http code 200
{
"audit_copy_token": "a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4",
"request_id": "Iam3b"
}
http code 200
{
"audit_copy_token": "a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4",
"request_id": "Iam3b"
}
http code 200
{
"audit_copy_token": "a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4",
"request_id": "Iam3b"
}
http code 200
{
"audit_copy_token": "a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4",
"request_id": "Iam3b"
}
http code 200
{
"audit_copy_token": "a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4",
"request_id": "Iam3b"
}
Store the audit_copy_token
in a secure datastore.
Next pass the audit_copy_token
to the third party you want to have access to
the Audit Copy. The third party will then be able to access the Audit Copy directly from
Plaid using the token along with its client_id
and
secret
.
Additional Fannie Mae Day 1 Certainty™ considerations
To be eligible for Day 1 Certainty™, three otherwise optional fields are required when
creating an Asset Report. Fannie Mae requires the first_name
,
last_name
and ssn
fields within the User object. You
can omit these if you do not plan to pass an audit_copy_token
to Fannie
Mae. Additionally, days_requested
must be at least 61 for new originations
or at least 31 for refinancings.
Only Asset Reports created within the
production
environment are compatible with Day 1 Certainty™. Asset
Reports created in the
sandbox
or development
environments cannot be
accessed by Fannie Mae.
Remove Asset Reports and Audit Copies
The /item/remove
endpoint allows you to invalidate an
access_token
, meaning you will not be able to create new Asset Reports with
it. Removing an
Item
does not affect any Asset Reports or Audit Copies you have
already created, which will remain accessible until you remove them specifically. In
other words, removing an
Item
does not cascade-remove any Asset Reports.
The /asset_report/remove
endpoint allows you to remove an Asset Report.
Removing an Asset Report invalidates its
asset_report_token
, meaning you will no longer be able to use it
to access Report data or create new Audit Copies. Removing an Asset Report does not
affect the underlying
Items
, but does also invalidate any
audit_copy_tokens
associated with the Asset Report. In other words,
removing an Asset Report also cascade-removes its Audit Copies.
Remove Asset Report request
client.removeAssetReport(ASSET_REPORT_TOKEN, (error, removeResponse) => {
if (error != null) {
// Handle error.
}
const removed = removeResponse.removed;
});
curl -X POST https://sandbox.plaid.com/asset_report/remove \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"asset_report_token": String
}'
response = @client.asset_report.remove_asset_report(asset_report_token)
removed = response.removed
Response<AssetReportRemoveResponse> response =
client
.service()
.assetReportRemove(new AssetReportRemoveRequest(assetReportToken))
.execute();
boolean removed = response.body().getRemoved();
response = client.AssetReport.remove(asset_report_token)
removed = response['removed']
Remove Asset Report response
http code 200
{
"removed": true,
"request_id": "I6zHN"
}
http code 200
{
"removed": true,
"request_id": "I6zHN"
}
http code 200
{
"removed": true,
"request_id": "I6zHN"
}
http code 200
{
"removed": true,
"request_id": "I6zHN"
}
http code 200
{
"removed": true,
"request_id": "I6zHN"
}
The /asset_report/audit_copy/remove
endpoint allows you to remove an Audit
Copy. Removing an Audit Copy invalidates the audit_copy_token
associated
with it, meaning both you and any third parties holding the token will no longer be able
to use it to access Report data.
Items
associated with the Asset Report, the Asset Report itself
and other Audit Copies of it are not affected and will remain accessible after removing
the given Audit Copy.
Remove Audit Copy request
// AUDIT_COPY_TOKEN is the token from the createAuditCopy response.
client.removeAuditCopy(AUDIT_COPY_TOKEN, (error, removeResponse) => {
if (error != null) {
// Handle error.
}
const removed = removeResponse.removed;
});
curl -X POST https://sandbox.plaid.com/asset_report/audit_copy/remove \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"audit_copy_token": String
}'
# audit_copy_token is the token from the create_audit_copy response.
response = @client.asset_report.remove_audit_copy(audit_copy_token)
removed = response.removed
// auditCopyToken is the token from the AssetReportCreateAuditCopyRequest
// response.
Response<AssetReportAuditCopyRemoveResponse> response =
client
.service()
.assetReportAuditCopyRemove(new AssetReportAuditCopyRemoveRequest(auditCopyToken))
.execute();
boolean removed = response.body().getRemoved();
# audit_copy_token is the token from the AssetReport.audit_copy.create response.
response = client.AssetReport.audit_copy.remove(audit_copy_token)
removed = response['removed']
Remove Audit Copy response
http code 200
{
"removed": true,
"request_id": "m8MDnv9okwxFNBV"
}
Was this section helpful?
Thank you for the feedback!
Thanks! Your thoughts are appreciated
Investments
The /investments/holdings/get
and
/investments/transactions/get
endpoints allow developers to
retrieve user-authorized Holding
,
Security
, and
InvestmentTransactions
data for a wide array of investment account
and security types. Both Investments endpoints are only compatible with Items having
Accounts
of type investment
.
Holdings
represent the different types of securities that can be held in
investment accounts and have quantity, value, cost basis, as well as other ownership
details. Each security held in an account is represented by a corresponding
Holding
. For example, a brokerage account containing shares of the equity
“AAPL” and mutual fund “VTSAX” would be represented with two holdings.
InvestmentTransactions
represent the different types of activity in an
investment account, including buying and selling securities, earning dividends, cash
contributions, and more. Transactions are described by quantity, price, amount and other
descriptive fields.
Securities
are descriptive features of a security, including identifiers
that reconcile assets across institutions and account types. Publicly traded securities
are provided with the ISO-6166 ISIN identifier when possible. Private securities,
alternatives, or asset types where no ISIN is available (e.g. cryptocurrencies,
real estate, etc.) are normalized with an internally generated, unique identifier. In
all cases, we will return the identifiers—typically a trading symbol—offered by the
institution. Other
Securities
fields include security naming and pricing details.
Retrieve Holdings request
The /investments/holdings/get
endpoint allows developers to receive
user-authorized stock position data for investment-type Accounts
. Holding
data is standardized across financial institutions, and
Holdings
are linked to
Securities
which conform to the schema provided below.
Every /investments/holdings/get
response will contain a list of
Securities
, providing definitions for all security_id
references in the response.
POST /investments/holdings/get
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | |
secret String |
yes | |
access_token String |
yes | |
options Object |
no | If provided, must be non-null. |
The following options are available:
| Field | Description |
|---|---|
account_ids [String] |
A list of account_id s to retrieve for the
Item .Note: An error will be returned if a provided account_id is not associated with the
Item .
|
Retrieve Investment Holdings request
// Pull Holdings for an Item
client.getHoldings(accessToken, (err, result) => {
// Handle err
const holdings = result.holdings;
const securities = result.securities;
});
curl -X POST https://sandbox.plaid.com/investments/holdings/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": string,
"secret": string,
"access_token": string
}'
# Pull Holdings for an Item
response = @client.investments.holdings.get(@access_token)
# Handle Holdings response
holdings = response['holdings']
# Handle Securities response
securities = response['securities']
// Pull Holdings for an Item
Response<InvestmentsHoldingsGetResponse> response =
client().service().investmentsHoldingsGet(
new InvestmentsHoldingsGetRequest(accessToken))
.execute();
// Handle Holdings response
List<InvestmentsHoldingsGetResponse.Holding> holdings =
response.body().getHoldings();
// Handle Securities response
List<InvestmentsHoldingsGetResponse.Security> securities =
response.body().getSecurities();
# Pull Holdings for an Item
response = client.Holdings.get(access_token)
# Handle Holdings response
holdings = response['holdings']
# Handle Securities response
securities = response['securities']
Retrieve Investment Holdings response
http code 200
{
"item": {...},
"request_id": "...",
"accounts": [...],
"securities": [{
"security_id": "8jJwoCrH3nXNsk5OMSGLAf3hjoAv7fkSAXb5K",
"isin": "US31617H1023",
"sedol": null,
"cusip": "31617H102",
"ticker_symbol": "SPAXX",
"name": "Fidelity Government Money Market Fund",
"is_cash_equivalent": true,
"type": "money market",
"close_price": 1.00,
"close_price_as_of": "2018-12-20",
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},{
"security_id": "pvVE25eHesoPtl46qGk0T98dodkAd6jNuAmeO",
"isin": "US17275R1023",
"sedol": null,
"cusip": "17275R102",
"ticker_symbol": "CSCO",
"name": "CISCO SYSTEMS INC",
"is_cash_equivalent": false,
"type": "equity",
"close_price": 42.438,
"close_price_as_of": "2018-12-20",
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},{
"security_id": "WuQDPY287v21GuokVScQTffuAEM2ppXiq4VwI",
"isin": null,
"sedol": null,
"cusip": null,
"institution_security_id": "bitcoin",
"institution_id": "ins_18014",
"ticker_symbol": "BTC",
"name": "Bitcoin",
"is_cash_equivalent": false,
"type": "equity",
"close_price": 6485.39,
"close_price_as_of": "2018-12-20",
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},{
"security_id": "xeAuh4GUzAYuGaqwhZE3Fspih2K4AMOvtHQve",
"isin": "US46625H1005",
"sedol": null,
"cusip": "46625H100",
"ticker_symbol": "JPM",
"name": "JPMorgan Chase & Co",
"is_cash_equivalent": false,
"type": "equity",
"close_price": 96.450,
"close_price_as_of": "2018-12-20",
"iso_currency_code": "USD",
"unofficial_currency_code": null,
}],
"holdings": [{
"account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D",
"security_id": "8jJwoCrH3nXNsk5OMSGLAf3hjoAv7fkSAXb5K",
"institution_price": 1.00,
"institution_price_as_of": "2018-12-20",
"institution_value": 2107.07,
"cost_basis": 2107.07,
"quantity": 2107.07
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},{
"account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D",
"security_id": "pvVE25eHesoPtl46qGk0T98dodkAd6jNuAmeO",
"institution_price": 42.490,
"institution_price_as_of": "2018-12-20",
"institution_value": 6373.50,
"cost_basis": 6247.73,
"quantity": 150.00
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},{
"account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D",
"security_id": "xeAuh4GUzAYuGaqwhZE3Fspih2K4AMOvtHQve",
"institution_price": 96.450,
"institution_price_as_of": "2018-12-20",
"institution_value": 5015.40,
"cost_basis": 3680.14,
"quantity": 52.00
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},{
"account_id": "QPO8Jo8vdDHMepg41PBwckXm4KdK1yUdmXOwK",
"security_id": "WuQDPY287v21GuokVScQTffuAEM2ppXiq4VwI",
"institution_price": 4005.38,
"institution_price_as_of": "2018-12-20",
"institution_value": 6481.51,
"cost_basis": 6112.09,
"quantity": 1.6182
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},
...]
}
Security schema
| Key | Description |
|---|---|
security_id String |
A unique Plaid identifier for the holding. |
isin String, nullable |
12-character ISIN, a globally unique securities identifier. Will be present when either CUSIP or SEDOL are present. |
cusip String, nullable |
9-character CUSIP, an identifier assigned to North American securities. |
sedol String, nullable |
7-character SEDOL, an identifier assigned to securities in the UK. |
institution_security_id String, nullable |
An identifier that is meaningful within the institution’s own schema. |
institution_id String, nullable |
If institution_security_id is present,
this field indicates the Plaid
institution_id of the institution referenced. |
proxy_security_id String, nullable |
In certain cases, Plaid will provide the ID of another security whose performance resembles this security—typically when the original security has low volume, or when a private security can be modeled with a publicly traded security. |
name String, nullable |
A descriptive name for the security, suitable for display. |
ticker_symbol String, nullable |
The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available. |
is_cash_equivalent boolean |
Indicates that a security is a highly liquid asset, and can be treated as cash. |
type String |
The security type of the holding. See Security Types |
close_price float, nullable |
Price of the security at the close of the previous
trading session. null for non-public securities. |
close_price_as_of string, nullable |
Date for which close_price is accurate.
Always null if
close_price_as_of is
null .
|
iso_currency_code String, nullable |
The ISO-4217 currency code of the price given.
Always
null if
unofficial_currency_code is non-null. |
unofficial_currency_code String, nullable |
The unofficial currency of the given price. Always
null if
iso_currency_code is non-null. This is present if the
price is denominated in an unrecognized currency e.g. Bitcoin,
rewards points. |
Holding schema
| Key | Description |
|---|---|
account_id String |
The Plaid Account ID associated with the holding. |
security_id String |
The Plaid Security ID of the security associated with the holding. |
institution_price float |
The last price given by the institution for this security. |
institution_price_as_of String, nullable |
The date at which institution_price was
current. |
institution_value float |
The value of the holding, as stated by the institution. |
cost_basis float, nullable |
The total cost of acquiring the holding. |
quantity float |
The total quantity of the asset held, as reported by the financial institution. |
iso_currency_code String, nullable |
The ISO-4217 currency code of the holding. Always
null if
unofficial_currency_code is non-null. |
unofficial_currency_code String, nullable |
The unofficial currency of the holding. Always
null if
iso_currency_code is non-null. This is present if the
price is denominated in an unrecognized currency e.g. Bitcoin,
rewards points. |
Security types
Security types classify assets held within an account. The table below displays the value returned from the Plaid API and the corresponding description and grouping of securities that have a similar structure in the marketplace.
| Type | Name & Description |
|---|---|
cash |
Cash & Cash Equivalent Cash, currency, and money market funds. |
derivative |
Derivatives Options, warrants, and other derivative instruments. |
equity |
Equities Domestic and foreign equities. |
etf |
Exchange-Traded Funds Multi-asset investment funds traded on exchanges. |
fixed income |
Fixed Income Bonds and CDs. |
loan |
Loans Loans and loan receivables. |
mutual fund |
Mutual Funds Open- and closed-end vehicles pooling funds of multiple investors. |
other |
Other/Alternative Any unknown or unclassified investment vehicle. |
Retrieve Investment Transactions request
The /investments/transactions/get
endpoint allows developers to retrieve
user-authorized transaction data for investment accounts. Transaction data is
standardized across financial institutions, and
InvestmentTransactions
are related to
Securities
, which are included in the response and conform to the
Security
schema.
Due to the potentially large number of
InvestmentTransactions
associated with an
Item
, results are paginated. Manipulate the
count
and offset
parameters in conjunction with the
total_transactions
response body field to fetch all available
InvestmentTransactions
.
POST /investments/transactions/get
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | |
secret String |
yes | |
access_token String |
yes | |
start_date Date |
yes | Dates should be formatted as
YYYY-MM-DD .
|
end_date Date |
yes | Dates should be formatted as
YYYY-MM-DD .
|
options Object |
no | If provided, must be non-null. |
The following options are available:
| Field | Default | Description |
|---|---|---|
account_ids [String] |
null |
A list of account_id s to retrieve for
the
Item .Note: An error will be returned if a provided account_id is not associated with the
Item |
count Number |
100 |
The number of transactions to fetch, where 0 less than count less than or equal to 500. |
offset Number |
0 |
The number of transactions to skip, where offset >= 0. |
Retrieve Investment Transactions request
client.getInvestmentTransactions(
accessToken,
'2019-03-01',
'2019-04-30',
{ count: 250, offset: 0 },
(err, result) => {
// Handle err
const investmentTransactions = result.investment_transactions;
});
curl -X POST https://sandbox.plaid.com/investments/transactions/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": string,
"secret": string,
"access_token": string,
"start_date": "2018-03-01",
"end_date": "2018-04-30",
"options": {
"count": 250,
"offset": 100
}
}'
# Pull investment transactions for a date range
response = @client.investments.transactions.get(@access_token,
'2019-03-01',
'2019-04-30')
# Manipulate the count and offset parameters to paginate
# transactions and retrieve all available data
response = @client.investments.transactions.get(@access_token,
'2019-03-01',
'2019-04-30',
count: 250,
offset: 0)
total = response['total_investment_transactions']
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyyy-MM-dd");
startDate = simpleDateFormat.parse("2019-03-01");
endDate = simpleDateFormat.parse("2019-04-30");
// Pull transactions for a date range
Response<InvesmentTransactionsGetResponse> response = client().service().investmentsTransactionsGet(
new InvestmentsTransactionsGetRequest(
accessToken,
startDate,
endDate))
.execute();
// Manipulate the count and offset parameters to paginate
// transactions and retrieve all available data
Response<InvestmentTransactionsGetResponse> response = client().service().investmentsTransactionsGet(
new InvestmentsTransactionsGetRequest(
accessToken,
startDate,
endDate)
.withAccountIds(Arrays.asList(someAccountId))
.withCount(numTxns)
.withOffset(1)).execute();
for (InvestmentsTransactionsGetResponse.InvestmentTransaction txn :
response.body().getInvestmentTransactions()) { ... }
response = client.InvestmentTransactions.get(
access_token,
start_date='2019-03-01',
end_date='2010-04-30')
investment_transactions = response['investment_transactions']
# Manipulate the count and offset parameters to paginate
# transactions and retrieve all available data
while len(investment_transactions) < response['total_investment_transactions']:
response = client.InvestmentTransactions.get(
access_token,
start_date='2019-03-01',
end_date='2019-04-30',
offset=len(transactions))
transactions.extend(response['transactions'])
Retrieve Investment Transactions response
http code 200
{
"item": {...},
"request_id": "...",
"accounts": [...],
"securities": [...],
"investment_transactions": [
{
"investment_transaction_id": "VaYBeiw3H9AhAHw53vQYkmkn2s2qJOGcY9hhs",
"account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D",
"security_id": "8jJwoCrH3nXNsk5OMSGLAf3hjoAv7fkSAXb5K",
"cancel_transaction_id": "yNLYVbYWyAuzVnOnV6aOh0Qz1nzOr3I0A1w5X",
"date": "2018-10-18",
"name": "Buy CSCO",
"quantity": 12,
"amount": 551.28,
"price": 45.94,
"fees": 5.95,
"type": "buy",
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},
...
],
"total_investment_transactions": 28
}
Investment Transaction schema
| Key | Description |
|---|---|
investment_transaction_id String |
The ID of the Investment transaction, unique across all Plaid transactions. |
account_id String |
The ID of the account against which this transaction posted. |
security_id String, nullable |
The ID of the security to which this transaction is related. |
date Date |
The ISO-8601 posting date for the transaction, or transacted date for pending transactions. |
name String |
The Institution’s description of the transaction. |
quantity float |
The Amount of the security involved in this transaction. |
amount float |
The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. |
price float |
The price of the security at which this transaction occurred. |
fees float, nullable |
The combined value of all fees applied to this transaction. |
type String |
See Investment Transaction Types. |
subtype String |
See Investment Transaction Subtypes. |
iso_currency_code String, nullable |
The ISO-4217 currency code of the transaction.
Always
null if
unofficial_currency_code is non-null. |
unofficial_currency_code String, nullable |
The unofficial currency of the transaction. Always
null if
iso_currency_code is non-null. This is present if the
price is denominated in an unrecognized currency e.g. Bitcoin,
rewards points. |
cancel_transaction_id String, nullable |
Present only when the transaction type is
cancel , and indicates the
investment_transaction_id of the transaction which was
cancelled. |
Investment Transaction types
The type
property encodes information that informs users how to treat an
InvestmentTransaction
. The definitions here explain how to
interpret a transaction's effect on the value of an account.
| Type | Description |
|---|---|
buy |
Activity that increases the quantity of a holding. |
cancel |
Transaction cancels a previous transaction. |
cash |
Activity which modifies the cash position. |
fee |
Fees on the account, e.g. commission, bookkeeping, options-related. |
sell |
Activity that decreases the quantity of a holding. |
transfer |
Activity which modifies a position, not through buy/sell activity e.g. options exercise, portfolio transfer |
Investment Transaction subtypes
The subtype
property encodes information that informs users how to treat an
InvestmentTransaction
. The definitions here explain how to
interpret a transaction's effect on outcomes like investment performance, tax
impact, fee categorization etc.
| Subtype | Description |
|---|---|
account fee |
Fees paid for account maintenance. |
assignment |
Assignment of short option holding. |
buy |
Purchase to open or increase a position. |
buy to cover |
Purchase to close a short position. |
contribution |
Inflow of assets into a tax-advantaged account. |
deposit |
Inflow of cash into an account. |
distribution |
Outflow of assets from a tax-advantaged account. |
dividend |
Inflow of cash from a dividend. |
dividend reinvestment |
Purchase using proceeds from a cash dividend. |
exercise |
Exercise of an option or warrant contract. |
expire |
Expiration of an option or warrant contract. |
fund fee |
Fees paid for administration of a mutual fund or other pooled investment vehicle. |
interest |
Inflow of cash from interest. |
interest receivable |
Inflow of cash from interest receivable. |
interest reinvestment |
Purchase using proceeds from a cash interest payment. |
legal fee |
Fees paid for legal charges or services. |
loan payment |
Inflow of cash related to payment on a loan. |
long-term capital gain |
Long-term capital gain received as cash. |
long-term capital gain reinvestment
|
Purchase using long-term capital gain cash proceeds. |
management fee |
Fees paid for investment management of a mutual fund or other pooled investment vehicle. |
margin expense |
Fees paid for maintaining margin debt. |
merger |
Stock exchanged at a pre-defined ratio as part of a merger between companies. |
miscellaneous fee |
Fees associated with various account or holding actions. |
non-qualified dividend |
Inflow of cash from a non-qualified dividend. |
non-resident tax |
Taxes paid on behalf of the investor for non-residency in investment jurisdiction. |
pending credit |
Pending inflow of cash. |
pending debit |
Pending outflow of cash. |
qualified dividend |
Inflow of cash from a qualified dividend. |
rebalance |
Rebalancing transaction (buy or sell) with no net impact to value in the account. |
return of principal |
Repayment of loan principal. |
sell |
Sell to close or decrease an existing holding. |
sell short |
Sell to open a short position. |
short-term capital gain |
Short-term capital gain received as cash. |
short-term capital gain reinvestment
|
Purchase using short-term capital gain cash proceeds. |
spin off |
Inflow of stock from spin-off transaction of an existing holding. |
split |
Inflow of stock from a forward split of an existing holding. |
stock distribution |
Inflow of stock from a distribution. |
tax |
Taxes paid on behalf of the investor. |
tax withheld |
Taxes withheld on behalf of the customer. |
transfer |
Movement of assets into or out of an account. |
transfer fee |
Fees incurred for transfer of a holding or account. |
trust fee |
Fees related to adminstration of a trust account. |
unqualified gain |
Unqualified capital gain received as cash. |
withdrawal |
Outflow of cash from an account. |
Was this section helpful?
Thank you for the feedback!
Thanks! Your thoughts are appreciated
Liabilities
The /liabilities/get
endpoint returns various details about an
Item
with loan or credit accounts. The currently supported Account types are
available
here.
The types of information returned by Liabilities can include:
- Balances: how much is owed and over what pay period
- Payment timing: last payment date and next payment due date
- Current loan terms: interest rate, maturity, limits
- Account details: original loan amount, guarantor, and more
Note: A liabilities
request may take some time to complete
if liabilities
was not specified as an initial product when
creating the
Item
. This is because Plaid must communicate directly with the
institution to retrieve the additional data.
Liabilities Quick Links
- Creating Liabilities Items with Link
- Retrieve Liabilities Request
- Retrieve Student Loans Response
- Retrieve Credit Card Response
Creating Liabilities Items with Link
To access any Plaid product, including Liabilities, you need an
Item
.
Create new Item
s with Liabilities by initializing Link with the
product
parameter set to
liabilities
. This configuration will filter the queryable
institutions to display those institutions currently supported for Liabilities, across
all account types. Today, that means both student loan servicers and credit cards
issuers.
Create Liabilities items
plaidClient.createLinkToken({
user: {
client_user_id: UNIQUE__USER_ID,
},
client_name: 'My App',
products: ['liabilities'],
country_codes: ['US'],
language: 'en',
...
}, (err, res) => {
// Send link_token to your app to initialize Link
const link_token = res.link_token;
});
The table below shows all currently supported Account types and subtypes in Liabilities. For all possible Account types and subtypes, see here.
Supported Liabilities Account Types
| Account type | Subtypes |
|---|---|
| credit | credit card, paypal |
| loan | student |
Filtering Accounts and Institutions by Account Subtype
You can configure Link to display only the institutions that support a specific
Liabilities Account subtype. Use the
account_filters
configuration when creating
alink_token
. This generated token can then be passed into Link to filter
institutions, keeping only the student loan servicers or only credit card issuers.
(Please note: this filtering capability is only supported for the Liabilities product.)
Create Liabilities items with Subtypes
plaidClient.createLinkToken({
user: {
client_user_id: "UNIQUE_USER_ID",
},
client_name: 'My App',
// if we are using account subtype filtering,
// make sure we set country_codes to US
country_codes: ['US'],
// include liabilities in the list of products
products: ['liabilities'],
language: 'en',
// set account_filters to show only institutions with these
// following account subtypes and returns accounts of the following
// account subtypes
account_filters: {
loan: {
account_subtypes: ['student'],
}
},
...
}, (err, res) => {
// Send link_token to your app to initialize Link
const link_token = res.link_token;
});
Updating Liabilities Items
Plaid regularly updates an Item
’s liabilities data, typically on a daily
basis. To retrieve the most up-to-date liabilities information available, make a call to
the
/liabilities/get
endpoint.
Liabilities Payment History
If you are interested in retrieving payment history for a Liabilities item, you can use
the
/transactions/get
endpoint.
Note: Transactions are returned per account number. For some of our
student loan providers, multiple loans that share the same account_id
can
share a common history. Calling /transactions/get
with an
account_id
that corresponds to multiple loans will return the same
transaction history for all loans. This behavior applies only to the following
institutions: Nelnet ( ins_116528
), EdFinancial Services
(ins_116304
), Granite State (ins_116308
), and Oklahoma Student
Loan Authority (ins_116945
).
Retrieve Liabilities Request
POST /liabilities/get
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | |
secret String |
yes | |
access_token String |
yes | |
options Object |
no | If provided, must be non-null. |
The following options are available:
| Field | Default | Description |
|---|---|---|
account_ids [String] |
null |
A list of account_id s to retrieve for
the
Item .Note: An error will be returned if a provided account_id is not associated with the
Item |
Retrieve Liabilities request
// Retrieve Liabilities data for an Item
client.getLiabilities(accessToken, (err, result) => {
// Handle err
var liabilities = result.liabilities;
});
curl -X POST https://sandbox.plaid.com/liabilities/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"access_token": String
}'
# retrieve Liabilities data for an item
response = client.liabilities.get(access_token)
liabilities = response[:liabilities]
// Retrieve Liabilities data for an Item
Response<LiabilitiesGetResponse> response =
client().service().liabilitiesGet(new LiabilitiesGetRequest(ACCESS_TOKEN)).execute();
Liabilities liabilities = response.getLiabilities();
List<LiabilitiesStreams> liabilitiesStreams = liabilities.getLiabilitiesStreams();
# retrieve Liabilities data for an item
response = client.Liabilities.get(access_token)
liabilities = response['liabilities']
Retrieve Student Loans Response
To find the current account balance, check the
balances
field under the
Account schema.
Retrieve student loans response
http code 200
{
"accounts": [...],
"item": {...},
"liabilities": {
"student": [
{
"account_id": "vokyE5Rn6vHKqDLRXEn5fne7LwbKPLIXGK98d",
"account_number": "3735928559",
"disbursement_dates": [
"2017-05-20",
"2017-06-20"
],
"expected_payoff_date": "2030-04-21",
"guarantor": "Gingham Guarantor",
"interest_rate_percentage": 18.25,
"is_overdue": false,
"last_payment_amount": 420.10,
"last_payment_date": "2019-03-15",
"last_statement_balance": 2345.6,
"last_statement_issue_date": "2019-03-01",
"loan_name": "Direct Subsidized Stafford",
"loan_status": {
"end_date": "2019-09-24",
"type": "repayment"
},
"minimum_payment_amount": 123.99,
"next_payment_due_date": "2019-04-01",
"origination_date": "2017-04-21",
"origination_principal_amount": 12345.6,
"outstanding_interest_amount": 1234.5,
"payment_reference_number": "4277009102",
"pslf_status": {
"estimated_eligibility_date": "2021-01-01",
"payments_made": 42,
"payments_remaining": 78
},
"repayment_plan": {
"description": "STANDARD REPAYMENT",
"type": "standard"
},
"sequence_number": "1",
"servicer_address": {
"city": "San Matias",
"country": "US",
"postal_code": "93405-2255",
"region": "CA",
"street": "2493 Leisure Lane"
},
"ytd_interest_paid": 123.4,
"ytd_principal_paid": 1234.5
},
...
]
}
"request_id": "9GMVig"
}
Student Loan liability schema
| Key | Description |
|---|---|
account_id String, nullable |
The ID of the account that this liability belongs to. |
account_number String, nullable |
The account number of the loan. |
disbursement_dates [Date], nullable |
The dates on which loaned funds were disbursed or will be disbursed. These are often in the past. Dates are returned in an ISO 8601 format (YYYY-MM-DD). |
expected_payoff_date Date, nullable |
The date when the student loan is expected to be paid off. Availability for this field is limited. |
guarantor String, nullable |
The guarantor of the student loan. |
interest_rate_percentage Float |
The interest rate on the loan as a percentage. |
is_overdue Boolean, nullable |
true if a payment is currently overdue. Availability for this field is limited. |
last_payment_amount Number, nullable |
The amount of the last payment. |
last_payment_date Date, nullable |
The date of the last payment. |
last_statement_balance Float, nullable |
The outstanding balance on the last statement. This field could also be interpreted as the next payment due. Availability for this field is limited. |
last_statement_issue_date Date, nullable |
The date of the last statement. |
loan_name String, nullable |
The type of loan, e.g., "Consolidation Loans". |
loan_status Object |
The status of the loan. See Student Loan Status schema below. |
minimum_payment_amount Float, nullable |
The minimum payment due for the next billing cycle. There are some
exceptions:
|
next_payment_due_date Date, nullable |
The due date for the next payment. The due date is
null if a payment is not expected. A payment is not
expected if
loan_status.type is
deferment , in_school ,
consolidated ,
paid in full , or
transferred .
|
origination_date Date, nullable |
The date on which the loan was initially lent. |
origination_principal_amount Float, nullable |
The original principal balance of the loan. |
outstanding_interest_amount Float, nullable |
The total dollar amount of the accrued interest balance. For Sallie Mae (
ins_116944 ), this amount is included in the current balance of
the loan, so this field will return as null .
|
payment_reference_number String, nullable |
The relevant account number that should be used to reference this loan for
payments. In the majority of cases, payment_reference_number
will match account_number , but in some institutions like Great
Lakes (ins_116861 ) it will be different. |
pslf_status Object |
Information about the student's eligibility in the Public Service Loan
Forgiveness program. This is only returned if the institution is Fedloan (
ins_116527 ). See
PSLF Status schema below.
|
repayment_plan Object |
The type of repayment plan. See Student Repayment Plan schema below. |
sequence_number String, nullable |
The sequence number of the student loan. Heartland ECSI (
ins_116948 ) does not make this field available. |
servicer_address Object |
The address of the student loan servicer. See Servicer Address schema below. |
ytd_interest_paid Float, nullable |
The year to date (YTD) interest paid. Availability for this field is limited. |
ytd_principal_paid Float, nullable |
The year to date (YTD) principal paid. Availability for this field is limited. |
Student Loan Status schema
| Key | Description |
|---|---|
end_date Date, nullable |
The date until which the loan will be in its current status. |
type String, nullable |
Enumerated response from the following options: "cancelled", "charged off", "claim", "consolidated", "deferment", "delinquent", "discharged", "extension", "forbearance", "in grace", "in military", "in school", "not fully disbursed", "other", "paid in full", "refunded", "repayment", or "transferred". |
Student Repayment Plan schema
| Key | Description |
|---|---|
description String, nullable |
This field will return the description of the repayment plan as provided by the servicer. |
type String, nullable |
Enumerated response from the following options: "extended graduated", "extended standard", "graduated", "income-contingent repayment", "income-based repayment", "interest only", "other", "pay as you earn", "revised pay as you earn", or "standard". |
PSLF Status schema
| Key | Description |
|---|---|
estimated_eligibility_date String, nullable |
The estimated date borrower will have completed 120 qualifying monthly payments. Returned in ISO 8601 format (YYYY-MM-DD). |
payments_made Number, nullable |
The number of qualifying payments that have been made. |
payments_remaining Number, nullable |
The number of qualifying payments that are remaining. |
Servicer Address schema
| Key | Description |
|---|---|
city String, nullable |
The full city name. |
country String, nullable |
The ISO 3166-1 alpha-2 country code |
postal_code String, nullable |
The five or nine digit postal code. |
region String, nullable |
The region or state Example: "NC" |
street String, nullable |
The full street address Example: "564 Main Street, APT 15" |
Retrieve Credit Card Response
Retrieve credit card response
http code 200
{
"accounts": [...],
"item": {...},
"liabilities": {
"credit": [
{
"account_id": "LgDOJbZz7pFKpaPNgRpZU57zY395q1I0Lxpew",
"aprs": [
{
"apr_percentage": 23.99,
"apr_type": "purchase_apr",
"balance_subject_to_apr": 2345.6,
"interest_charge_amount": 27.01
}
],
"is_overdue": false,
"last_payment_amount": 420,
"last_payment_date": "2019-03-15",
"last_statement_balance": 2345.6,
"last_statement_issue_date": "2019-03-01",
"minimum_payment_amount": 123,
"next_payment_due_date": "2019-04-01",
}
]
}
"request_id": "9GMVig"
}
Credit card liability schema
| Key | Description |
|---|---|
account_id String, nullable |
The ID of the account that this liability belongs to. |
aprs Object |
See the APR object schema. |
is_overdue Boolean, nullable |
true if a payment is currently overdue. Availability for this field is limited. |
last_payment_amount Number, nullable |
The amount of the last payment. |
last_payment_date Date, nullable |
The date of the last payment. |
last_statement_balance Float, nullable |
The outstanding balance on the last statement. Availability for this field is limited. |
last_statement_issue_date Date, nullable |
The date of the last statement. |
minimum_payment_amount Float, nullable |
The minimum payment due for the next billing cycle. |
next_payment_due_date Date, nullable |
The due date for the next payment. The due date is
null if a payment is not expected. |
APR schema
| Key | Description |
|---|---|
apr_percentage Number |
Annual Percentage Rate applied. |
apr_type String |
Enumerated response from the following options: “balance_transfer_apr”, “cash_apr”, “purchase_apr”, or “special”. |
balance_subject_to_apr Number, nullable |
Amount of money that is subjected to the APR if a balance was carried beyond payment due date. How it is calculated can vary by card issuer. It is often calculated as an average daily balance. |
interest_charge_amount Number, nullable |
Amount of money charged due to interest from last statement. |
Was this section helpful?
Thank you for the feedback!
Thanks! Your thoughts are appreciated
Payment Initiation (Europe)
The Payment Initiation API enables payment transfers within your app. Right now, the API only supports payments originating from UK bank accounts but we are working to support payment initiation from other geographies in the near future. Plaid supports both domestic payments denominated in pound sterling (typically via the Faster Payments network, although this is up to the institution) and international payments denominated in euro (typically via SEPA Credit Transfer). Each time a client wants to receive a payment, the end user must authorize the payment in Link before the payment can be initiated.
Note: The revised EU Directive on Payment Services ("PSD2") regulations require strong customer authentication ("SCA") for each payment order.
Payment Initiation Quick Links
- High-level flow
- Initializing Link
- Payment Initiation API endpoints
High-level flow
- Register recipient: A client registers themselves as a recipient by
providing a name, IBAN or BACS, and address and receives a new
recipient_id
. - Pay with Plaid: An end user decides to pay the client using Plaid.
- Configure the payment: The client configures the payment by
specifying a
recipient_id
, reference number, amount, and currency to create a Plaid payment resource. The Plaid API returns apayment_id
for the client’s backend. - Create link token: The client calls
link/token/create
with the payment_id configured to create alink_token
for payment initiation. - Initialize Link: The client initializes Link using the
link_token
. - Payment and account details: The end user selects an institution and authenticates with that institution to authorize the payment. Since we only support one-time payments, these steps are necessary for every payment initiation attempt, regardless of any previous payments made by the end user.
- Payment initiation: Plaid initiates the payment on the end user’s behalf. If the payment is successfully initiated, Plaid bills the client. Because Plaid is not in the flow of funds, we cannot provide confirmation when the funds leave the end user account or arrive in the client account.
- Confirmation: The end user is presented with a confirmation or error, along with the reference number.
- Retrieve payment status: The client can use an API endpoint to
retrieve the status of a payment by providing the
payment_id
. - Verify funds: The client verifies that the funds reach the recipient account.
Initializing Link
To initialize Link for Payment Initiation, pass in a link_token
that
is confgured for payment_initiation
. See an example of how to do this below.
Initializing Link
var handler = Plaid.create({
// This link_token should be configured for payment initiation if you
// pass in a payment_id and specify payment_initiation as the only product.
token: 'link-sandbox-6d8fe96f-413f-4104-b224-f1ac58fa6752',
onSuccess: function(public_token, metadata) { /* ... */ },
onExit: function(err, metadata) { /* ... */ },
onEvent: function(eventName, metadata) { /* ... */ }
});
Create recipient request
POST /payment_initiation/recipient/create
The endpoint is idempotent: if a developer has already made a request with the same
payment details, Plaid will return the same recipient_id
. Recipients are
scoped per environment.
In the sandbox environment, you can use the
/payment_initiation/recipient/create
endpoint to generate
recipients. Programmatic recipient creation in the development and production
environments can be done after approval by our compliance team. Please
contact sales when you are ready to
test payment initiation and we will enable you in the relevant environments.
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | Your client_id .
|
secret String |
yes | Your secret .
|
name String |
yes | The name of the recipient. |
iban String |
no | The International Bank Account Number (IBAN) for the recipient. One of IBAN or BACS is required. |
bacs Object |
no | The Bacs Payment Schemes Limited (BACS) for the recipient. One of IBAN or BACS is required. |
address Object |
no | The address for the recipient. |
The following address fields are required:
| Key | Description |
|---|---|
street [String] |
An array of length 1-2 representing the street address where the recipient is located. |
city String |
The city where the recipient is located. |
postal_code String |
The postal code where the recipient is located. |
country String |
The ISO 3166-1 alpha-2 country code where the recipient is located. |
The following bacs fields are required:
| Key | Description |
|---|---|
account String |
The account number of the recipient |
sort_code String |
The sort code of the recipient |
Create recipient request
client.createPaymentRecipient(
name,
iban, // or bacs
address,
(err, response) => {
// Handle err
var recipientID = response.recipient_id;
});
curl -X POST https://sandbox.plaid.com/payment_initiation/recipient/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"name": String,
"iban": String, # or bacs
"address": Object
}'
response = @client.payment_initiation.create_recipient(
@name,
@iban, # or bacs
@address
)
recipient_id = response.recipient_id
Response<PaymentRecipientCreateResponse> response =
client.service().paymentRecipientCreate(
new PaymentRecipientCreateRequest(
name,
iban, // or bacs
address
)).execute();
response = client.PaymentInitiation.create_recipient(
name,
iban, # or bacs
address
)
recipient_id = response["recipient_id"]
Create recipient response
http code 200
{
"recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6",
"request_id": "4zlKapIkTm8p5KM"
}
Get recipient request
POST /payment_initiation/recipient/get
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | Your client_id .
|
secret String |
yes | Your secret .
|
recipient_id String |
yes | The ID of the recipient. |
Get recipient request
client.getPaymentRecipient(recipientID, (err, response) => {
// Handle err
var recipientID = response.recipient_id;
var name = response.name;
var iban = response.iban;
var address = response.address;
});
curl -X POST https://sandbox.plaid.com/payment_initiation/recipient/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"recipient_id": String
}'
response = @client.payment_initiation.get_recipient(@recipient_id)
recipient_id = response.recipient_id
name = response.name
iban = response.iban
address = response.address
Response<PaymentRecipientGetResponse> response =
client.service().paymentRecipientGet(new PaymentRecipientGetRequest(recipientID)).execute();
response = client.PaymentInitiation.get_recipient(recipient_id)
recipient_id = response["recipient_id"]
name = response["name"]
iban = response["iban"]
address = response["address"]
Get recipient response
http code 200
{
"recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6",
"name": "Wonder Wallet",
"iban": "GB29NWBK60161331926819",
"address": {
"street": [
"96 Guild Street",
"9th Floor"
],
"city": "London",
"postal_code": "SE14 8JW",
"country": "GB"
}
"request_id": "4zlKapIkTm8p5KM"
}
Recipient schema
| Field | Description |
|---|---|
recipient_id String |
The ID of the recipient. |
name String |
The name of the recipient. |
iban String |
The International Bank Account Number (IBAN) for the recipient. |
address Object |
The address for the recipient. |
List recipients request
POST /payment_initiation/recipient/list
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | Your client_id .
|
secret String |
yes | Your secret .
|
List recipients request
client.listPaymentRecipients((err, response) => {
// Handle err
var recipients = response.recipients;
});
curl -X POST https://sandbox.plaid.com/payment_initiation/recipient/list \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String
}'
response = @client.payment_initiation.list_recipients()
recipients = response.recipients
Response<PaymentRecipientListResponse> response =
client.service().paymentRecipientList(new PaymentRecipientListRequest()).execute();
response = client.PaymentInitiation.list_recipients()
recipients = response["recipients"]
List recipients response
http code 200
{
"recipients": [
{
"recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6",
"name": "Wonder Wallet",
"iban": "GB29NWBK60161331926819",
"address": {
"street": [
"96 Guild Street",
"9th Floor"
],
"city": "London",
"postal_code": "SE14 8JW",
"country": "GB"
}
}
],
"request_id": "4zlKapIkTm8p5KM"
}
For more information on the recipient schema, see the Get recipient request
Create payment request
POST /payment_initiation/payment/create
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | Your client_id .
|
secret String |
yes | Your secret .
|
recipient_id String |
yes | The ID of the recipient the payment is for. |
reference String |
yes | A reference for the payment. This should not contain special characters (since not all institutions support them). |
amount Object |
yes | The amount of the payment. |
The following amount fields are required:
| Key | Description |
|---|---|
currency String |
The currency of the payment. |
value Float |
The value of the payment. |
Create payment request
client.createPayment(
recipientID,
reference,
amount,
(err, response) => {
// Handle err
var paymentID = response.payment_id;
var status = response.status;
});
curl -X POST https://sandbox.plaid.com/payment_initiation/payment/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"recipient_id": String,
"reference": String,
"amount": Object
}'
response = @client.payment_initiation.create_payment(
@recipient_id,
@reference,
@amount
)
payment_id = response.payment_id
status = response.status
Response<PaymentCreateResponse> response =
client.service().paymentCreate(
new PaymentCreateRequest(
recipientID,
reference,
amount
)).execute();
response = client.PaymentInitiation.create_payment(
recipient_id,
reference,
amount
)
payment_id = response["payment_id"]
status = response["status"]
Create payment response
http code 200
{
"payment_id": "payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3",
"status": "PAYMENT_STATUS_INPUT_NEEDED",
"request_id": "4ciYVmesrySiUAB"
}
Create link token request
POST /link/token/create
You can create a link_token
configured for payment initiation. The
link_token
will allow for at most one payment initiation. If this attempt
fails, the end user aborts the flow, or the token expires, the developer will need to
create a new
link_token
. Creating a new link_token
does not
require end user input. For more info, refer to the
/link/token/create docs.
Create link token request
plaidClient.createLinkToken({
user: {
client_user_id: UNIQUE_USER_ID,
},
client_name: 'My App',
products: ['payment_initiation'],
country_codes: ['GB'],
language: 'en',
payment_initiation: {
payment_id: PAYMENT_ID,
},
// ...
}, (err, res) => {
// Send this to your client-side application to initialize Link
const link_token = res.link_token;
});
curl -X POST https://sandbox.plaid.com/link/token/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": "CLIENT_ID",
"secret": "SECRET",
"client_name": "My App",
"user": { "client_user_id": "UNIQUE_USER_ID" },
"products": ["payment_initiation"],
"country_codes": ["GB"],
"language": "en",
"payment_initiation": {
"payment_id": "PAYMENT_ID",
}
}'
response = client.link_token.create(
user: {
client_user_id: "UNIQUE_CLIENT_USER_ID"
},
client_name: 'My App',
products: ['payment_initiation'],
country_codes: ['GB'],
language: 'en',
payment_initiation: {
payment_id: "PAYMENT_ID"
}
)
link_token = response['link_token']
Response<LinkTokenCreateResponse> response =
plaidClient.service()
.linkTokenCreate(
new LinkTokenCreateRequest(
new LinkTokenCreateRequest.User(UNIQUE_CLIENT_USER_ID),
"My App",
Collections.singletonList("payment_initiation"),
Collections.singletonList("GB"),
"en"
)
.withPaymentInitiation(
new LinkTokenCreateRequest.PaymentInitiation(PAYMENT_ID)
)
).execute();
response = client.LinkToken.create({
'user': {
'client_user_id': UNIQUE_CLIENT_USER_ID,
},
'products': ["payment_initiation"],
'client_name': "My App",
'country_codes': ['GB'],
'language': 'en',
'payment_initiation': {
'payment_id': PAYMENT_ID
}
})
link_token = response['link_token']
Create link token response
http code 200
{
"link_token": "link-sandbox-6d8fe96f-413f-4104-b224-f1ac58fa6752",
"request_id": "pfZjRysTDhlNMty"
"expiration": "2020-07-18T23:09:32Z",
}
If your integration is still using a payment_token
to launch Link for
the Payment Initiation product, view our migration guide to upgrade to
link_tokens
. You can also view our
maintenance
guide to troubleshoot any payment_token
issues.
Get payment request
POST /payment_initiation/payment/get
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | Your client_id .
|
secret String |
yes | Your secret .
|
payment_id String |
yes | The payment_id returned from
/payment_initiation/payment/create .
|
Get payment request
client.getPayment(paymentID, (err, response) => {
// Handle err
var paymentID = response.payment_id;
var paymentToken = response.payment_token;
var reference = response.reference;
var amount = response.amount;
var status = response.status;
var lastStatusUpdate = response.last_status_update;
var paymentTokenExpirationTime = response.payment_token_expiration_time;
var recipientID = response.recipient_id;
});
curl -X POST https://sandbox.plaid.com/payment_initiation/payment/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"payment_id": String,
}'
response = @client.payment_initiation.get_payment(@payment_id)
payment_id = response.payment_id
payment_token = response.payment_token
reference = response.reference
amount = response.amount
status = response.status
last_status_update = response.last_status_update
payment_token_expiration_time = response.payment_token_expiration_time
recipient_id = response.recipient_id
Response<PaymentGetResponse> response =
client.service().paymentGet(new PaymentGetRequest(paymentID)).execute();
response = client.PaymentInitiation.get_payment(payment_id)
payment_id = response["payment_id"]
payment_token = response["payment_token"]
reference = response["reference"]
amount = response["amount"]
status = response["status"]
last_status_update = response["last_status_update"]
payment_token_expiration_time = response["payment_token_expiration_time"]
recipient_id = response["recipient_id"]
Get payment response
http code 200
{
"payment_id": "payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3",
"payment_token": "payment-token-sandbox-c6a26505-42b4-46fe-8ecf-bf9edcafbebb",
"reference": "Account Funding 99744",
"amount": {
"currency": "GBP",
"value": 100.00
},
"status": "PAYMENT_STATUS_INPUT_NEEDED",
"last_status_update": "2019-11-06T21:10:52Z",
"payment_expiration_time": "2019-11-06T21:25:52Z",
"recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6",
"request_id": "aEAQmewMzlVa1k6"
}
Payment schema
| Field | Description |
|---|---|
payment_id String |
The ID of the payment. |
payment_token String |
The token associated with the payment. |
reference String |
A reference for the payment. |
amount Object |
The amount of the payment. See Create payment request for more details. |
status String |
The status of the payment. |
last_status_update Date |
The last time the status was updated. |
payment_token_expiration_time Date |
When the payment token expires. |
recipient_id String |
The ID of the recipient. |
Payment statuses
| Payment status | Description |
|---|---|
PAYMENT_STATUS_INPUT_NEEDED Initial state |
This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed. |
PAYMENT_STATUS_PROCESSING Intermediate state |
The payment is currently being processed by Plaid and the relevant financial institution. The payment will automatically exit this state when processing is complete. |
PAYMENT_STATUS_FAILED Retryable state |
The payment has failed to be initiated due to certain known errors (i.e. the financial institution's internal service was down) and is retryable once the root cause is resolved. |
PAYMENT_STATUS_BLOCKED Retryable state |
The payment has been blocked. |
PAYMENT_STATUS_UNKNOWN Terminal state |
The payment is in an unknown state as the result of a downstream error. This is a catch-all status that is unrecoverable but rare. If a payment is in an unknown state, it is possible that the payment was initiated. |
PAYMENT_STATUS_INITIATED Terminal state |
The payment has been successfully initiated and is considered complete. Please ensure that the payment has been received by the recipient bank account. |
List payments request
POST /payment_initiation/payment/list
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | Your client_id .
|
secret String |
yes | Your secret .
|
options Object |
no | If provided, must be non-null. |
The following options are available:
| Field | Default | Description |
|---|---|---|
count Number, nullable |
null |
Limit for how many payments to return, 0 <
count <= 200. |
cursor String, nullable |
null |
A string in RFC 3339 format (i.e. "2019-12-06T22:35:49Z"). Only payments created before the cursor will be returned. |
List payments request
client.listPayments({count: 10, cursor: "2019-12-06T22:35:49Z"} (err, response) => {
// Handle err
var payments = response.payments;
var nextCursor = response.next_cursor;
});
curl -X POST https://sandbox.plaid.com/payment_initiation/payments/list \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String
}'
response = @client.payment_initiation.list_payments(count: 10, cursor: "2019-12-06T22:35:49Z")
payments = response.payments
next_cursor = response.next_cursor
Response<PaymentListResponse> response =
client.service().paymentList(
new PaymentListRequest()
.withCount(10)
.withCursor("2019-12-06T22:35:49Z")
).execute();
response = client.PaymentInitiation.list_payments({count: 10, cursor: "2019-12-06T22:35:49Z"})
payments = response["payments"]
next_cursor = response["next_cursor"]
List payments response
http code 200
{
"payments": [
"payment_id": "payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3",
"payment_token": "payment-token-sandbox-c6a26505-42b4-46fe-8ecf-bf9edcafbebb",
"reference": "Account Funding 99744",
"amount": {
"currency": "GBP",
"value": 100.00
},
"status": "PAYMENT_STATUS_INPUT_NEEDED"
"last_status_update": "2019-11-06T21:10:52Z",
"payment_expiration_time": "2019-11-06T21:25:52Z",
"recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6"
],
"next_cursor": "2020-01-01T00:00:00Z",
"request_id": "aEAQmewMzlVa1k6"
}
For more information on the payment schema, see the Get payment request
Was this section helpful?
Thank you for the feedback!
Thanks! Your thoughts are appreciated
Item management
Accounts
Retrieve Accounts request
The following endpoint can be used to retrieve information for any linked bank account, note that some information is nullable. Plaid will only return active bank accounts, i.e. accounts that are not closed and are capable of carrying a balance, closed accounts will not be returned in our API.
POST /accounts/get
| Field | Required? |
|---|---|
client_id String |
yes |
secret String |
yes |
access_token String |
yes |
Retrieve Accounts request
// Pull the accounts associated with the Item
client.getAccounts(ACCESS_TOKEN, (err, result) => {
// Handle err
const accounts = result.accounts;
});
curl -X POST https://sandbox.plaid.com/accounts/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"access_token": String
}'
# pull the accounts associated with the item
response = @client.accounts.get(@access_token)
accounts = response[:accounts]
// Pull the accounts associated with the Item
Response<AccountsGetResponse> response = client().service().accountsGet(
new AccountsGetRequest("ACCESS_TOKEN"))
.execute();
List<Account> accounts = response.body().getAccounts();
# pull the accounts associated with the item
response = client.Accounts.get(access_token)
accounts = response['accounts']
Retrieve Accounts response
http code 200
{
"accounts": [{
"account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D",
"balances": {
"available": 100,
"current": 110,
"limit": null,
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},
"mask": "0000",
"name": "Plaid Checking",
"official_name": "Plaid Gold Checking",
"subtype": "checking",
"type": "depository",
"verification_status": null
}, {
"account_id": "6Myq63K1KDSe3lBwp7K1fnEbNGLV4nSxalVdW",
"balances": {
"available": null,
"current": 410,
"limit": 2000,
"iso_currency_code": "USD",
"unofficial_currency_code": null,
},
"mask": "3333",
"name": "Plaid Credit Card",
"official_name": "Plaid Diamond Credit Card",
"subtype": "credit card",
"type": "credit"
}],
"item": {Object},
"request_id": "m8MDnv9okwxFNBV"
}
Account schema
| Key | Description |
|---|---|
account_id String |
The unique ID of the
account. Note: In some instances, account IDs may change. |
item Object |
Information about the Item associated
with the accounts such as the item ID and institution ID. See
POST /item/get
for more information. |
balances Object |
See Balance object for fields. |
name String |
The name of the Account , either
assigned by the user or the financial institution itself. |
mask String, nullable |
The last 2-4 alphanumeric characters of an
account's official account number. Note that the
mask may be non-unique between an Item's
accounts, it may also not match the mask that the bank displays to the user.
This field is nullable. |
official_name String, nullable |
The official name of the Account as
given by the financial institution. |
type String |
See account types below. |
subtype String |
See account subtypes below. |
verification_status String |
The current verification status of an Auth Item initiated through Automated or Manual microdeposits. See account verification statuses below. |
Account balances schema
See Balance object for fields.
Account types
| Account type | Description |
|---|---|
investment |
Investment account |
credit |
Credit card |
depository |
Checking or savings accounts |
loan |
Loan account |
other |
Non-specified account type |
Account subtypes
| Account type | Subtypes | Description |
|---|---|---|
investment |
See Investment account subtypes below. | |
credit |
credit card |
Bank issued credit card |
paypal |
PayPal issued credit card | |
depository |
cash management |
Cash management account |
cd |
Certificate of deposit | |
checking |
Standard checking account | |
hsa |
Health Savings Account that may only hold cash | |
savings |
Standard savings account | |
money market |
Similar to checking accounts | |
paypal |
PayPal held depository account | |
prepaid |
Prepaid debit card | |
loan |
auto |
Automobile loan |
commercial |
Commercial loan | |
construction |
Construction loan | |
consumer |
Consumer loan | |
home equity |
Home Equity Line of Credit (HELOC) | |
loan |
General loan | |
mortgage |
Mortgage loan | |
overdraft |
Pre-approved overdraft account, usually tied to a checking account | |
line of credit |
Pre-approved line of credit | |
student |
Student loan | |
other |
other |
Plaid was unable to properly categorize this account or the account does not fit into our current schema. |
Account subtypes – investment
The following is a list of possible investment
Account subtypes and
their respective description.
| Investment subtype | Description |
|---|---|
401a |
Employer-sponsored money-purchase retirement plan |
401k |
Standard 401k account |
403b |
Tax-advantaged retirement savings plan |
457b |
Tax-advantaged deferred-compensation retirement plan |
529 |
College savings plans and prepaid tuition plans |
brokerage |
Standard Brokerage account |
cash isa |
UK account that pays interest tax-free |
education savings account |
Tax-advantaged Education Savings Account (ESA) |
fixed annuity |
Fixed Annuity |
gic |
Canadian Guaranteed Investment Certificate |
health reimbursement arrangement |
Tax-advantaged health benefit plan |
hsa |
Tax-advantaged medical Health Savings Account |
ira |
Traditional IRA |
isa |
UK 'Individual Savings Account' |
keogh |
Keogh self-employed pension plan |
lif |
Canadian registered Retirement Income Fund |
lira |
Canadian Locked-In Retirement Account |
lrif |
Canadian Locked-in Retirement Income Fund |
lrsp |
Canadian Locked-in Retirement Savings Plan |
mutual fund |
Account that holds mutual fund positions |
non-taxable brokerage account |
A non-taxable brokerage account that is not covered by a more specific subtype |
pension |
Standard Pension account |
prif |
Canadian Prescribed Registered Retirement Income Fund |
profit sharing plan |
Plan gives employees share of company profits |
qshr |
Qualifying share account |
rdsp |
Canadian Registered Disability Savings Plan |
resp |
Canadian Registered Education Savings Plan |
retirement |
A retirement account not covered by other
subtypes |
rlif |
Canadian Restricted Life Income Fund |
roth |
Roth IRA |
roth 401k |
Employer-sponsored investment savings account |
rrif |
Canadian Registered Retirement Income Fund |
rrsp |
Canadian Registered Retirement Savings Plan (equivalent to 401k) |
sarsep |
Salary Reduction Simplified Employee Pension Plan |
sep ira |
Simplified Employee Pension IRA |
simple ira |
Savings Incentive Match Plan for Employees IRA |
sipp |
UK Self-Invested Personal Pension |
stock plan |
Standard Stock Plan account |
tfsa |
Canadian tax-free savings account, equivalent to roth |
thrift savings plan |
Defined contribution plan for US civil servants |
trust |
Account representing funds or assets held by a trustee for the benefit of a beneficiary |
ugma |
'Uniform Gift to Minors Act' (brokerage account for minors) |
utma |
'Uniform Transfers to Minors Act' (brokerage account for minors) |
variable annuity |
Tax-deferred capital accumulation annuity contract |
Account verification statuses
Returned for Auth Items only.
| Account verification status | Description |
|---|---|
| pending_automatic_verification | An Item is pending automated microdeposit verification |
| automatically_verified | An Item was successfully automatically verified |
| verification_expired | An Item failed automatic verification within 7 days. Users may retry by submitting their information again through Link. |
| pending_manual_verification | An Item is pending manual microdeposit verification |
| manually_verified | An Item was successfully manually verified |
Was this section helpful?
Thank you for the feedback!
Thanks! Your thoughts are appreciated
Retrieve Item
The /item/get
endpoint returns information about the status of an
Item
.
Retrieve Item request
POST /item/get
| Field | Required? |
|---|---|
client_id String |
yes |
secret String |
yes |
access_token String |
yes |
Retrieve Item request
// Pull information about the Item
client.getItem(ACCESS_TOKEN, (err, result) => {
// Handle err
// The Item has a list of available products, billed products,
// error status, webhook information, and more.
const item = result.item;
});
curl -X POST https://sandbox.plaid.com/item/get \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"access_token": String
}'
# pull information about the item
response = client.item.get(access_token)
# the item has a list of available products, billed products,
# error status, webhook information, and more.
item = response['item']
// Pull information about the Item
Response<ItemGetResponse> response =
client().service().itemGet(new ItemGetRequest("ACCESS_TOKEN")).execute();
// The Item has a list of available products, billed products,
// error status, webhook information, and more.
Item item = response.body().getItem();
# pull information about the item
response = client.Item.get(access_token)
# the item has a list of available products, billed products,
# error status, webhook information, and more.
item = response['item']
Retrieve Item response
http code 200
{
"item": {
"available_products": [
"balance",
"auth"
],
"billed_products": [
"identity",
"transactions"
],
"error": null,
"institution_id": "ins_109508",
"item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr",
"webhook": "https://plaid.com/example/hook",
"consent_expiration_time": null
},
"status": {
"transactions": {
"last_successful_update": "2019-02-15T15:10:00",
"last_failed_update": "2019-01-22T04:32:00"
},
"last_webhook": {
"sent_at": "2019-02-15T15:53:00",
"code_sent": "DEFAULT_UPDATE"
}
},
"request_id": "m8MDnv9okwxFNBV"
}
Response schema
| Key | Description |
|---|---|
item Object |
Metadata about the item. View schema. |
status Object |
An object with information about the status of the Item. View schema. |
Item schema
| Key | Description |
|---|---|
item_id String |
The Plaid Item ID. |
institution_id
String |
The Plaid Institution ID associated with the
Item . Note: institution_id is
null only for Items created via Same Day Microdeposits
|
webhook String, nullable |
The URL registered to receive webhooks for the
Item .
|
error Object |
An object with information about the error status of
the
Item . If there is no error, all values will be
null .
View schema.
|
available_products
[String] |
A list of products available for the
Item that have not yet been accessed. |
billed_products
[String] |
A list of products that have been billed for the
Item . Note: billed_products is populated in all environments but only
requests in Production are billed. |
consent_expiration_time
String, nullable |
The RFC 3339 timestamp after which the consent
provided by the end user will expire. Upon consent expiration, the item will
enter the ITEM_LOGIN_REQUIRED error state. To
circumvent the
ITEM_LOGIN_REQUIRED error and maintain continuous
consent, the end user can reauthenticate via Link’s update mode in advance of
the consent expiration time. Note: This is only relevant for European institutions subject to PSD2 regulations mandating a 90-day consent window. For all other institutions, this field will be null .
|
Item error schema
| Field | Description | ||
|---|---|---|---|
error_type String |
A broad categorization of the error. One of:
INVALID_REQUEST ,
INVALID_INPUT ,
INSTITUTION_ERROR ,
RATE_LIMIT_EXCEEDED ,
API_ERROR , ITEM_ERROR , or
ASSET_REPORT_ERROR . Safe for programmatic use. |
||
error_code String |
The particular error code. Each
error_type has a specific set of
error_code s. Safe for programmatic use. |
||
error_message String |
A developer-friendly representation of the error
code. This may change over time and is not safe for programmatic use. |
||
display_message String, nullable |
A user-friendly representation of the error code.
null if the error is not related to user action.
This may change over time and is not safe for programmatic use. |
Was this section helpful?
Thank you for the feedback!
Thanks! Your thoughts are appreciated
Update webhook
The POST /item/webhook/update
allows you to update the webhook associated
with an Item
. This request triggers a
WEBHOOK_UPDATE_ACKNOWLEDGED
webhook
to the newly specified webhook.
Update webhook request
POST /item/webhook/update
| Field | Required? | Description |
|---|---|---|
client_id String |
yes | |
secret String |
yes | |
access_token String |
yes | |
webhook String |
Yes | The new webhook to associate with the
Item .
|
Update Webhook request
// Update the webhook associated with an Item
client.updateItemWebhook(ACCESS_TOKEN, "https://plaid.com/updated/webhook", (err, result) => {
// Handle err
// A successful response indicates that the webhook has been
// updated. An acknowledgement webhook will also be fired.
const item = result.item;
});
curl -X POST https://sandbox.plaid.com/item/webhook/update \
-H 'Content-Type: application/json' \
-d '{
"client_id": String,
"secret": String,
"access_token": String,
"webhook": "https://plaid.com/updated/hook"
}'
# update the webhook associated with an item
webhook_response = client.item.webhook.update(
item['access_token'], 'https://plaid.com/updated/webhook')
// Update the webhook associated with an Item
Response<ItemWebhookUpdateResponse> webhookResponse = client().service().itemWebhookUpdate(
new ItemWebhookUpdateRequest(ACCESS_TOKEN, "https://plaid.com/updated/webhook")).execute();
// A successful response indicates that the webhook has been