{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"841d643c-b27c-413c-8a04-e3375741c317","name":"Plaid API DOC","description":"Plaid API is a financial tool by [Plaid](https://plaid.com), a financial technology company, to enable developers to integrate users' financial data into their applications. The API allows for access to users' account information, transactions, and other financial data from thousands of financial institutions.\n\nWith the Plaid API, developers can build applications such as personal finance tools, budgeting apps, and lending platforms. The API is designed to be secure, scalable, and compliant with relevant regulations, making it a popular choice for developers building financial applications.\n\n## API Endpoints and Webhooks\n\nFor documentation on specific API endpoints and webhooks, use the navigation menu or search.\n\n## API Access\n\nTo gain access to the Plaid API, you will need a `client_id` and `secret key`. Follow the step below to get one:\n\n1. create an account on the [Plaid Dashboard](https://dashboard.plaid.com/).\n    \n2. Click on **Developers** on side bar\n    \n3. Click on **Keys**\n    \n4. Copy your `client_id` and `secret`on the key page as seen below\n    \n\n<img src=\"https://content.pstmn.io/6cfb2ba3-23c5-43cd-8251-64cd870e03cf/aW1hZ2UucG5n\" width=\"2560\" height=\"1252\">\n\n## API Protocols and Headers\n\nThe Plaid API uses JSON over HTTP. All requests are POST requests, and responses are in JSON format. Errors are shown in the response bodies as `error_code` and `error_type`. Use these instead of HTTP status codes to identify application-level errors. All responses are standard JSON, with a few returning binary data when needed. The Plaid API is delivered over HTTPS with TLS v1.2 or higher to ensure data privacy. HTTP and TLS versions below 1.2 are not supported. Clients must use an up-to-date root certificate bundle as the only TLS verification method; certificate pinning should not be used. All requests must include a `Content-Type` of `application/json`, and the body must be valid JSON.\n\nAlmost all Plaid API endpoints require a `client_id` and `secret`. These can be sent either in the request body or in the headers as `PLAID-CLIENT-ID` and `PLAID-SECRET`.\n\nEvery Plaid API response includes a `request_id`, either in the body or, for endpoints that return binary data (such as [<code>/asset_report/pdf/get</code>](https://plaid.com/docs/api/products/assets/#asset_reportpdfget)), in the response headers. For quicker support, include the `request_id` when contacting support about a specific API call.\n\n## API Host\n\n``` bash\nhttps://sandbox.plaid.com (Sandbox)\nhttps://production.plaid.com (Production)\n\n ```\n\nPlaid has two environments: Sandbox and Production. Items cannot be moved between environments. The Sandbox environment supports only test Items. You can [request Production API access](https://dashboard.plaid.com/overview/production) via the Dashboard.\n\n## API Status and Incidents\n\nAPI status is available at [status.plaid.com](https://status.plaid.com/).\n\nAPI status and incidents are also available programmatically via the following endpoints:\n\n- [https://status.plaid.com/api/v2/status.json](https://status.plaid.com/api/v2/status.json) for current status\n    \n- [https://status.plaid.com/api/v2/incidents.json](https://status.plaid.com/api/v2/incidents.json) for current and historical incidents\n    \n\nFor a complete list of all API status information available programmatically, as well as more information on using these endpoints, see the [Atlassian Status API documentation](https://status.atlassian.com/api).\n\nFor information on institution-specific status, see [Troubleshooting institution status](https://plaid.com/docs/account/activity/#troubleshooting-institution-status).\n\n## Storing API Data\n\nAny token returned by the API is sensitive and should be stored securely. Except for the `public_token` and `link_token`, all Plaid tokens are long-lasting and should never be exposed on the client side. Consumer data obtained from the Plaid API is sensitive information and should be managed accordingly. For guidance and best practices on how to store and handle sensitive data, see the [Open Finance Security Data Standard](https://ofdss.org/#documents).\n\n## API Field Format\n\nIdentifiers used by the Plaid API that do not contain consumer data and are not keys or tokens are designed for usage in less sensitive contexts. The most common of these identifiers are the account_id, item_id, link_session_id, and request_id. These identifiers are commonly used for logging and debugging purposes.\n\n### Strings\n\nMany string fields returned by Plaid APIs are reported exactly as returned by the financial institution. For this reason, Plaid does not have maximum length limits or standardized formats for strings returned by the API. In practice, field lengths of 280 characters will generally be adequate for storing returned strings, although Plaid does not guarantee this as a maximum string length.\n\n### Numbers and money\n\nPlaid returns all currency values as decimal values in dollars (or the equivalent for the currency being used), rather than as integers. In some cases, it may be possible for a money value returned by the Plaid API to have more than two digits of precision -- this is common, for example, when reporting crypto balances.\n\n## OpenAPI Definition File\n\nOpenAPI is a standard format for describing RESTful APIs that allow those APIs to be integrated with tools for a wide variety of applications, including testing, client library generation, IDE integration, and more. The Plaid API is specified in our [Plaid OpenAPI GitHub repo](https://github.com/plaid/plaid-openapi).\n\n## Postman collection\n\nThe [Postman collection](https://github.com/plaid/plaid-postman) is a convenient tool for exploring Plaid API endpoints without writing code. The Postman collection provides pre-formatted requests for almost all of Plaid's API endpoints. All you have to do is fill in your API keys and any arguments. To get started, check out the [Plaid Postman Collection Quickstart](https://github.com/plaid/plaid-postman) on GitHub.\n\n## Client Libraries\n\nSee the [client libraries](https://plaid.com/docs/api/libraries/) page for more information on Plaid's client libraries.\n\n# Libraries\n\n_Learn about libraries and SDKs to easily integrate with the Plaid APIs_\n\nAll libraries for Plaid are listed below. If you've built anything you'd be willing to share with the Plaid community, please let us know and we'll link to it here!\n\n## Client Libraries\n\nPlaid offers official API libraries for different programming languages, regularly updated for breaking and non-breaking API changes. These client libraries are generated from our [OpenAPI file](https://github.com/plaid/plaid-openapi).\n\n| **Client Libraries** | **GitHub Repo** |\n| --- | --- |\n| Node | [plaid-node](https://github.com/plaid/plaid-node) |\n| Python | [plaid-python](https://github.com/plaid/plaid-python) |\n| Ruby | [plaid-ruby](https://github.com/plaid/plaid-ruby) |\n| Java | [plaid-java](https://github.com/plaid/plaid-java) |\n| GO | [plaid-go](https://github.com/plaid/plaid-go) |\n\n## Community Libraries\n\nExplore the community-supported libraries available for Plaid listed below. If you have created your library, please contact our [Support team](https://dashboard.plaid.com/support/new) to have it added to this list! The best way to build your library is by using the [Plaid OpenAPI file](https://github.com/plaid/plaid-openapi).\n\n> 📔 **Important Note**  \nThese community libraries are not officially supported by Plaid. As a result, we cannot assist with their usage, nor can we guarantee that they will be updated to accommodate the latest changes in the Plaid API. \n  \n\n| **Community Libraries** | **GitHub Repo** |\n| --- | --- |\n| Elixir | [by @tylerwray](https://github.com/tylerwray/elixir-plaid) |\n| Elixir | [by @wfgilman](https://github.com/wfgilman/plaid-elixir) |\n| .NET | [Going.Plaid, by @viceroypenguin](https://github.com/viceroypenguin/Going.Plaid.NET) |\n| Node | [plaid-fetch, by @heysanil. For Vercel Edge Runtime environments that don't support Axios middleware.](https://github.com/heysanil/plaid-fetch) |\n| PHP | [by @TomorrowIdeas](https://github.com/TomorrowIdeas/plaid-sdk-php) |\n\n## Link Client SDK\n\nFor information on Plaid's front-end SDKs for web and mobile, see [Link](https://plaid.com/docs/link/).\n\nTo learn more about installing and using Link SDKs, check out the docs pages for Link on [JavaScript and React (web)](https://plaid.com/docs/link/web/), [React Native](https://plaid.com/docs/link/react-native/), [iOS](https://plaid.com/docs/link/ios/), [Android](https://plaid.com/docs/link/android/), and [Hosted Link](https://plaid.com/docs/link/hosted-link/).\n\nNote that libraries marked as (community) are not officially supported by Plaid. Plaid cannot assist with using these libraries or guarantee that they will be kept up-to-date with all the changes needed to support the latest modifications to the Plaid API.\n\n| Client SDK | GitHub Repo |\n| --- | --- |\n| iOS | [plaid-link-ios](https://github.com/plaid/plaid-link-ios) |\n| Android | [plaid-link-android](https://github.com/plaid/plaid-link-android) |\n| React | [react-plaid-link](https://github.com/plaid/react-plaid-link) |\n| React Native | [react-native-plaid-link-sdk](https://github.com/plaid/react-native-plaid-link-sdk) |\n| Angular | [by Mike Roberts(community)](https://github.com/mike-roberts/ngx-plaid-link) |\n| Javascript | [web](https://plaid.com/docs/link/web) |\n| Vue | [by Jeroen Claessens (community)](https://github.com/jclaessens97/vue-plaid-link) |\n| Flutter | [by @jorgefspereira (community)](https://github.com/jorgefspereira/plaid_flutter) |\n\n## Quickstart\n\nFor a listing of Plaid sample apps, see the [Resources page](https://plaid.com/docs/resources/#sample-apps).\n\n---\n\n# API versioning and changelog\n\n_Keep track of changes and updates to the Plaid API_\n\n## API Versioning\n\nThis page covers backwards-incompatible, versioned API changes. For a list of all API updates, including non-versioned ones, see the [changelog](https://plaid.com/docs/changelog/).\n\nWhenever we make a backwards-incompatible change to a general availability, non-beta product, we release a new API version to avoid causing breakages for existing developers. You can then continue to use the old API version, or update your application to upgrade to the new Plaid API version. APIs for beta products are subject to breaking changes without versioning, with 30 days notice.\n\nWe consider the following changes to be backwards compatible (non-breaking):\n\n- Adding new API endpoints\n    \n- Adding new optional parameters to existing endpoints\n    \n- Adding new data elements to existing response schemas or webhooks\n    \n- Adding new enum values, including `error_types` and `error_codes`\n    \n- Subdividing existing `error_codes` into more precise errors, and changing the http response code as necessary, as long as the error cannot be resolved via developer action (such as retries) during runtime. For example, changing `PRODUCT_NOT_READY` errors to a different `error_code` would be a breaking change, since that error can be resolved by retrying later, but converting an existing `INTERNAL_SERVER_ERROR` to a more specific error would not be.\n    \n- Changing the behavior for use cases or platforms are explicitly not supported.\n    \n- Adding new `webhook_types` and `webhook_codes`\n    \n- Changing the length or content of any API identifier\n    \n\n### How To Set Up your API version\n\nThe default version of the API used in any requests you make can be configured in the [Dashboard](https://dashboard.plaid.com/developers/api) and will be used when version information is not otherwise specified. You can also manually set the `Plaid-Version` header to use a specific version for a given API request.\n\nIf you're using one of the Plaid client libraries, they should all be pinned to the latest version of the API at the time when they were released. This means that you can change the API version you're using by updating to a newer version of the client library.\n\n- **Current libraries**\n    \n\n``` bash\n//API Version Example\ncurl -X POST https://sandbox.plaid.com/auth/get \\\n  -H 'Content-Type: application/json' \\\n  -H 'Plaid-Version: 2020-09-14'\n\n ```\n\n- **Legacy Libraries**\n    \n\n``` bash\n//API Version Example\ncurl -X POST https://sandbox.plaid.com/auth/get \\\n  -H 'Content-Type: application/json' \\\n  -H 'Plaid-Version: 2019-05-29'\n\n ```\n\n## Version 2020-09-14\n\nThis version includes several changes to improve authentication, streamline and simplify the API, and improve international support.\n\n- To improve authentication, the `public_key` has been fully removed from the API. Endpoints that previously accepted a `public_key` for authentication, namely [<code>/institutions/get_by_id</code>](https://plaid.com/docs/api/institutions/#institutionsget_by_id) and [<code>/institutions/search</code>](https://plaid.com/docs/api/institutions/#institutionssearch), now require a `client_id` and `secret` for authentication instead.\n    \n- [<code>/item/remove</code>](https://plaid.com/docs/api/items/#itemremove) no longer returns a `removed` boolean. This field created developer confusion, because it was never possible for it to return `false`. A failed [<code>/item/remove</code>](https://plaid.com/docs/api/items/#itemremove) call will result in an [error](https://plaid.com/docs/errors/) being returned instead.\n    \n- Several undocumented and unused fields have been removed from the `institution` object returned by the institutions endpoints [<code>/institutions/get</code>](https://plaid.com/docs/api/institutions/#institutionsget), [<code>/institutions/get_by_id</code>](https://plaid.com/docs/api/institutions/#institutionsget_by_id), and [<code>/institutions/search</code>](https://plaid.com/docs/api/institutions/#institutionssearch). The removed fields are: `input_spec`, `credentials`, `include_display_data`, `has_mfa`, `mfa`, and `mfa_code_type`.\n    \n- The institutions endpoints [<code>/institutions/get</code>](https://plaid.com/docs/api/institutions/#institutionsget), [<code>/institutions/get_by_id</code>](https://plaid.com/docs/api/institutions/#institutionsget_by_id), and [<code>/institutions/search</code>](https://plaid.com/docs/api/institutions/#institutionssearch) now require the use of a `country_codes` parameter and no longer use `US` as a default value if `country_codes` is not specified, as this behavior caused confusion and unexpected behavior for non-US developers. As part of this change, the `country_codes` parameter has been moved out of the `options` object and is now a top-level parameter.\n    \n- To support international payments, the response schema for the partner-only [<code>/processor/auth/get</code>](https://plaid.com/docs/api/processor-partners/#processorauthget) endpoint has changed. The 2018-05-22 and 2019-05-29 API releases previously extended the response schema for [<code>/auth/get</code>](https://plaid.com/docs/api/products/auth/#authget) in order to support international accounts, but these changes were never extended to the [<code>/processor/auth/get</code>](https://plaid.com/docs/api/processor-partners/#processorauthget) endpoint. This release brings the response for [<code>/processor/auth/get</code>](https://plaid.com/docs/api/processor-partners/#processorauthget) in line with the [<code>/auth/get</code>](https://plaid.com/docs/api/products/auth/#authget) response, allowing Plaid partners to extend support for using non-ACH payment methods, such as EFT payments (Canada) or SEPA credit and direct debit (Europe). Accommodating this change does not require any code changes from Plaid developers who use partnership integrations, only from the Plaid partners themselves.\n    \n- **Previous /processor/auth/get response**\n    \n\n``` bash\n \"numbers\": [{\n  \"account\": \"9900009606\",\n  \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n  \"routing\": \"011401533\",\n  \"wire_routing\": \"021000021\"\n}]\n\n ```\n\n- **2020-09-14 API version /previous/processor/auth/get response**\n    \n\n``` json\n\"numbers\": {\n  \"ach\": [{\n    \"account\": \"9900009606\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"routing\": \"011401533\",\n    \"wire_routing\": \"021000021\"\n  }],\n  \"eft\":[{\n    \"account\": \"111122223333\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"institution\": \"021\",\n    \"branch\": \"01140\"\n  }],\n  \"international\":[{\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"bic\": \"NWBKGB21\"\n    \"iban\": \"GB29NWBK60161331926819\",\n  }],\n  \"bacs\":[{\n    \"account\": \"31926819\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"sort_code\": \"601613\"\n  }]\n}\n\n ```\n\n## Version 2019-05-29\n\n- The Auth numbers schema has been extended to support BACS (UK) and other international (IBAN and BIC) account numbers used across the EU.\n    \n- Renamed the zip field to postal_code and the state field to region in all Identity and Transactions responses to be more international friendly.\n    \n- Identity objects in Identity responses are now embedded on the owners field of the corresponding account.\n    \n- Address data fields for Identity responses are now nullable and are returned with a null value when they aren’t available rather than an empty string.\n    \n- Added a ISO-3166-1 alpha-2 country field to all Identity and Transactions responses.\n    \n- The account type brokerage has been renamed to investment.\n    \n\nThese changes are meant to enable access to International institutions for Plaid’s launch in Europe and add support for investment accounts. Test in the [Sandbox](https://plaid.com/docs/sandbox/) with the new API version to see the new Schema and enable support for International institutions from the [Dashboard](https://dashboard.plaid.com/developers/api) in order to create Items for these institutions.\n\n### Auth\n\nBefore, `numbers` only had fields for `ach` (US accounts) and `eft` (Canadian accounts) accounts numbers:\n\n- **Previous Auth Response(2018-05-22 version)**\n    \n\n``` json\n\"numbers\": {\n  \"ach\": [{\n    \"account\": \"9900009606\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"routing\": \"011401533\",\n    \"wire_routing\": \"021000021\"\n  }],\n  \"eft\":[{\n    \"account\": \"111122223333\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"institution\": \"021\",\n    \"branch\": \"01140\"\n  }]\n}\n\n ```\n\nNow, the structure of `numbers` hasn’t changed, but it can have `ach`, `eft`, `bacs` (UK accounts), or `international` (currently EU accounts) numbers. Note that the schema for each of these numbers are different from one another. It is possible for multiple networks to be present in the response.\n\n- **New Auth response (2019-05-29 version)**\n    \n\n``` json\n\"numbers\": {\n  \"ach\": [{\n    \"account\": \"9900009606\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"routing\": \"011401533\",\n    \"wire_routing\": \"021000021\"\n  }],\n  \"eft\":[{\n    \"account\": \"111122223333\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"institution\": \"021\",\n    \"branch\": \"01140\"\n  }],\n  \"international\":[{\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"bic\": \"NWBKGB21\"\n    \"iban\": \"GB29NWBK60161331926819\",\n  }],\n  \"bacs\":[{\n    \"account\": \"31926819\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"sort_code\": \"601613\"\n  }]\n}\n\n ```\n\n### Identity\n\nThe previous version of [Identity](https://plaid.com/docs/api/products/identity/) had US specific field names and did not include a country as part of the location. Furthermore, the identity data was not scoped to a specific account.\n\n- **Previous Identity Response (2018-05-22 version)**\n    \n\n``` json\n\"identity\": {\n  \"addresses\": [{\n    \"accounts\": [\n      \"Plaid Checking 0000\",\n      \"Plaid Saving 1111\",\n      \"Plaid CD 2222\"\n    ],\n    \"data\": {\n      \"city\": \"Malakoff\",\n      \"state\": \"NY\",\n      \"street\": \"2992 Cameron Road\",\n      \"zip\": \"14236\"\n    },\n    \"primary\": true\n  }],\n  ...\n}\n\n ```\n\nNow, `identity` has international friendly field names of `region` and `postal_code` instead of `zip` and `state` as well as a ISO-3166-1 alpha-2 `country` field. Address data fields (`city`, `region`, `street`, `postal_code`, and `country`) are now nullable and are returned with a `null` value when they aren’t available rather than as an empty string. The identity object is now available on the \"owners\" key of the account, which represents ownership of specific accounts.\n\n- **New Identity Response (2019-05-29 version)**\n    \n\n``` json\n\"accounts\": [{\n  ...\n  \"owners\": [{\n    \"addresses\": [{\n      \"data\": {\n        \"city\": \"Malakoff\",\n        \"region\": \"NY\",\n        \"street\": \"2992 Cameron Road\",\n        \"postal_code\": \"14236\",\n        \"country\": \"US\",\n      },\n      \"primary\": true\n    }]\n  }],\n  ...\n}]\n\n ```\n\n### Transaction\n\nWhen no transactions are returned from a request, the `transactions` object will now be `null` rather than an empty array.\n\nIn addition, the same changes to [Identity](https://plaid.com/docs/api/products/identity/) were also made to [Transactions](https://plaid.com/docs/api/products/transactions/).\n\n- **Previous Transaction Response (2018-05-22 version)**\n    \n\n``` json\n\"transactions\": [{\n  ...\n  \"location\": {\n    \"address\": \"300 Post St\",\n    \"city\": \"San Francisco\",\n    \"state\": \"CA\",\n    \"zip\": \"94108\",\n    \"lat\": null,\n    \"lon\": null\n  },\n  ...\n]\n\n ```\n\n- **New Transaction Response (2019-05-29 version)**\n    \n\n``` json\n\"transactions\": [{\n  ...\n  \"location\": {\n    \"address\": \"300 Post St\",\n    \"city\": \"San Francisco\",\n    \"region\": \"CA\",\n    \"postal_code\": \"94108\",\n    \"country\": \"US\",\n    \"lat\": null,\n    \"lon\": null\n  },\n  ...\n]}\n\n ```\n\n### Institution\n\nChanges to the institutions schema effects responses from all of the institutions API endpoints:\n\n- POST [<code>/institutions/search</code>](https://plaid.com/docs/api/institutions/#institutionssearch)\n    \n- POST [<code>/institutions/get</code>](https://plaid.com/docs/api/institutions/#institutionsget)\n    \n- POST [<code>/institutions/get_by_id</code>](https://plaid.com/docs/api/institutions/#institutionsget_by_id)\n    \n\nThe previous version of the Institution schema did not include the country of the institution as part of the response.\n\n- **Previous Institution Response (2018-05-22 version)**\n    \n\n``` json\n\"institution\": {\n  \"credentials\": [{\n    \"label\": \"User ID\",\n    \"name\": \"username\",\n    \"type\": \"text\"\n    }, {\n    \"label\": \"Password\",\n    \"name\": \"password\",\n    \"type\": \"password\"\n  }],\n  \"has_mfa\": true,\n  \"institution_id\": \"ins_109512\",\n  \"mfa\": [\n    \"code\",\n    \"list\",\n    \"questions\",\n    \"selections\"\n  ],\n  \"name\": \"Houndstooth Bank\",\n  \"products\": [\n    \"auth\",\n    \"balance\",\n    \"identity\",\n    \"transactions\"\n  ],\n  // included when options.include_status is true\n  \"status\": {object}\n}\n\n ```\n\n- **New Institution response(2019-05-29 version)**\n    \n\n``` json\n\"institution\": {\n  \"country_codes\": [\"US\"],\n  \"credentials\": [{\n    \"label\": \"User ID\",\n    \"name\": \"username\",\n    \"type\": \"text\"\n    }, {\n    \"label\": \"Password\",\n    \"name\": \"password\",\n    \"type\": \"password\"\n  }],\n  \"has_mfa\": true,\n  \"institution_id\": \"ins_109512\",\n  \"mfa\": [\n    \"code\",\n    \"list\",\n    \"questions\",\n    \"selections\"\n  ],\n  \"name\": \"Houndstooth Bank\",\n  \"products\": [\n    \"auth\",\n    \"balance\",\n    \"identity\",\n    \"transactions\"\n  ],\n  // included when options.include_status is true\n  \"status\": {object}\n}\n\n ```\n\n## Version 2018-05-22\n\n- The Auth numbers schema has changed to support ACH (US-based) and EFT (Canadian-based) account numbers\n    \n- Added the iso_currency_code and unofficial_currency_code fields to all [Accounts](https://plaid.com/docs/api/accounts/#accounts-get-response-accounts) and [Transactions](https://plaid.com/docs/api/products/transactions/) responses\n    \n\nEnable support for Canadian institutions from the [Dashboard](https://dashboard.plaid.com/developers/api) and then test in the [Sandbox](https://plaid.com/docs/sandbox/) using the test Canadian institution, Tartan-Dominion Bank of Canada (institution ID ins_43).\n\nBefore, numbers was a list of objects, each one representing the account and routing number for an ACH-eligible US checking or savings account:\n\n- **Previous Auth response (2017-03-08 version)**\n    \n\n``` json\n\"numbers\": [{\n  \"account\": \"9900009606\",\n  \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n  \"routing\": \"011401533\",\n  \"wire_routing\": \"021000021\"\n}]\n\n ```\n\n### New Auth response (2018-05-22 version)\n\nNow, numbers can have either ach (US accounts) or eft (Canadian accounts) numbers. Note that the schema for ach numbers and eft numbers are different from one another.\n\n- **New Auth response (2018-05-22 version) for ACH numbers**\n    \n\n``` json\n\"numbers\": {\n   \"ach\": [{\n    \"account\": \"9900009606\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"routing\": \"011401533\",\n    \"wire_routing\": \"021000021\"\n   }],\n   \"eft\": []\n}\n\n ```\n\n- **New Auth response (2018-05-22 version) for EFT Numbers**\n    \n\n``` json\n\"numbers\": {\n   \"ach\":[],\n   \"eft\":[{\n    \"account\": \"111122223333\",\n    \"account_id\": \"vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D\",\n    \"institution\": \"021\",\n    \"branch\": \"01140\"\n   }]\n}\n\n ```\n\n## Version 2017-03-08\n\nThe `2017-03-08 version` was the first versioned release of the API.\n\n---\n\n# Plaid Postman Collection\n\n_Learn more about the Plaid Postman Collection, which allows you to send API requests without code_\n\n## Introduction\n\nPlaid offers a [Postman Collection](https://github.com/plaid/plaid-postman) as a convenient tool for exploring Plaid API endpoints without writing code. The Postman Collection provides pre-formatted requests for almost all of Plaid's API endpoints that you can call from their desktop application, or a web browser. All you have to do is fill in your API keys and any arguments.\n\n<video src=\"https://youtube.com/embed/f4NhgHpp5aA\" width=\"340\"></video>\n\nTo get started using the Postman collection, you will need a Plaid account with access to the Sandbox environment, an account at [Postman.com](https://www.postman.com/), and (optionally) the Postman [desktop application](https://www.postman.com/downloads/). Once you have all the prerequisites, visit our [GitHub page](https://github.com/plaid/plaid-postman) and click the \"Run in Postman\" button to load up the Plaid collection of endpoints.\n\n<img src=\"https://plaid.com/_next/image?url=/assets/img/docs/quickstart/plaid-postman.png&amp;w=1920&amp;q=75\">\n\n---\n\n# Webhooks\n\n_API reference for webhooks_\n\n---\n\n📹 Prefer to learn by watching? Our [video tutorial](https://www.youtube.com/watch?v=0E0KEAVeDyc) walks you through the basics of incorporating Plaid webhooks into your application.\n\n---\n\n⚠️ Looking for webhook schemas? The reference documentation for specific webhooks ([Transactions](https://plaid.com/docs/api/products/transactions/#webhooks), [Auth](https://plaid.com/docs/api/products/auth/#webhooks), [Assets](https://plaid.com/docs/api/products/assets/#webhooks), [Identity](https://plaid.com/docs/api/products/identity/#webhooks-beta), [Identity Verification](https://plaid.com/docs/api/products/identity-verification/#webhooks), [Monitor](https://plaid.com/docs/api/products/monitor/), [Investments](https://plaid.com/docs/api/products/investments/#webhooks), [Liabilities](https://plaid.com/docs/api/products/liabilities/#webhooks), [Payment Initiation](https://plaid.com/docs/api/products/payment-initiation/#webhooks), [Income](https://plaid.com/docs/api/products/income/#webhooks), [Virtual Accounts](https://plaid.com/docs/api/products/virtual-accounts/#webhooks), [Items](https://plaid.com/docs/api/items/#webhooks), and [Transfer](https://plaid.com/docs/api/products/transfer/)) has moved to its respective API reference pages.\n\n---\n\n## Introdcution to Webhooks\n\nA webhook is an HTTP request used to provide push notifications. Plaid sends webhooks to programmatically inform you about changes to Plaid Items or the status of asynchronous processes. For example, Plaid will send a webhook when an Item is in an error state or has additional data available, or when a non-blocking process (like gathering transaction data or verifying a bank account via micro-deposits) is complete.\n\nTo receive Plaid webhooks, set up a dedicated endpoint on your server as a webhook listener that can receive POST requests, then provide this endpoint URL to Plaid as described in the next section. You can also test webhooks without setting up your own endpoint following the instructions in [Testing webhooks in Sandbox](https://plaid.com/docs/api/webhooks/#testing-webhooks-in-sandbox).\n\n## Configuring Webhooks\n\nWebhooks are typically configured via the `webhook` parameter of [<code>/link/token/create</code>](https://plaid.com/docs/api/link/#linktokencreate), although some webhooks (especially those used in contexts where Link tokens are not always required), such as Identity Verification webhooks, are configured via the [Plaid Dashboard](https://dashboard.plaid.com/developers/webhooks) instead. When specifying a webhook, the URL must be in the standard format of `http(s)://(www.)domain.com/` and, if https, must have a valid SSL certificate.\n\nTo view response codes and debug any issues with webhook setup, see the [Logs section in the Dashboard](https://dashboard.plaid.com/activity/logs).\n\nPlaid sends POST payloads with raw JSON to your webhook URL from one of the following IP addresses:\n\n- 52.21.26.131\n    \n- 52.21.47.157\n    \n- 52.41.247.19\n    \n- 52.88.82.239\n    \n\nNote that these IP addresses are subject to change.\n\nYou can optionally verify webhooks to ensure they are from Plaid. For more information, see [webhook verification](https://plaid.com/docs/api/webhooks/webhook-verification/).\n\n## Webhook Retries\n\nIf there is a non-200 response or no response within 10 seconds from the webhook endpoint, Plaid will keep attempting to send the webhook for up to 24 hours. Each attempt will be tried after a delay that is 4 times longer than the previous delay, starting with 30 seconds.\n\nTo avoid unnecessary retries, Plaid won't retry webhooks if we detect that the webhook receiver endpoint has rejected more than 90% of webhooks sent by Plaid over the last 24 hours.\n\n## Best Practices for Application using Webhooks\n\nYou should design your application to handle duplicate and out-of-order webhooks. Ensure [idempotency](https://martinfowler.com/articles/patterns-of-distributed-systems/idempotent-receiver.html) on actions you take when receiving a webhook. If you drive application state with webhooks, ensure your code doesn't rely on a specific order of webhook receipt.\n\nIf you (or Plaid) experience downtime for longer than Plaid's [retry period](https://plaid.com/docs/api/webhooks/#webhook-retries), you will lose webhooks. Ensure your application can recover by implementing endpoint polling or other appropriate logic if a webhook is not received within an expected window. All data present in webhooks is also present in our other APIs.\n\nIt's best to keep your receiver as simple as possible, such as a receiver whose only job is to write the webhook into a queue or reliable storage. This is important for two reasons. First, if the receiver does not respond within 10 seconds, the delivery is considered failed. Second, because webhooks can arrive at unpredictable rates. Therefore if you do a lot of work in your receiver - e.g. generating and sending an email - spikes are likely to overwhelm your downstream services, or cause you to be rate-limited if the downstream is a third-party.\n\n## Testing Webhooks in Sandbox\n\nWebhooks will fire as normal in the Sandbox environment, with the exception of Transfer webhooks. For testing purposes, you can also use [<code>/sandbox/item/fire_webhook</code>](https://plaid.com/docs/api/sandbox/#sandboxitemfire_webhook), [<code>/sandbox/income/fire_webhook</code>](https://plaid.com/docs/api/sandbox/#sandboxincomefire_webhook), or [<code>/sandbox/transfer/fire_webhook</code>](https://plaid.com/docs/api/sandbox/#sandboxtransferfire_webhook) to fire a webhook on demand. If you don't have a webhook endpoint configured yet, you can also use a tool such as [Webhook.site](https://webhook.site/) or [Request Bin](https://requestbin.com/) to quickly and easily set up a webhook listener endpoint. When directing webhook traffic to third-party tools, make sure you are using Plaid's Sandbox environment and not sending out live data.\n\n## Example in Plaid Pattern\n\nFor real-life examples of handling webhooks that illustrate how to handle sample transactions and Item webhooks, see [handleTransactionsWebhook.js](https://github.com/plaid/pattern/blob/master/server/webhookHandlers/handleTransactionsWebhook.js) and [handleItemWebhook.js](https://github.com/plaid/pattern/blob/master/server/webhookHandlers/handleItemWebhook.js) These files contain webhook handling code for the Node-based [Plaid Pattern](https://github.com/plaid/pattern) sample app.\n\n# Base URL\n\n```\nhttps://sandbox.plaid.com/\n\n ```","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"32923208","team":6626171,"collectionId":"841d643c-b27c-413c-8a04-e3375741c317","publishedId":"2sAYBUDsTy","public":true,"publicUrl":"https://documenter-api.postman.tech/view/32923208/2sAYBUDsTy","privateUrl":"https://go.postman.co/documentation/32923208-841d643c-b27c-413c-8a04-e3375741c317","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":"Plaid Doc"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.12.12","publishDate":"2024-11-24T22:37:24.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"Plaid Doc","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://postman-image-service.postman.com/api/cloudinary-proxy/postman/image/upload/t_team_logo_pubdoc/v1/team/6d5dd1064839c2439939edea4d6f6665b1e27dcf2dafe6ab216d87731176a7d1","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sAYBUDsTy"}