{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4463529a-2bff-4b17-a596-4faf70edb5d5","name":"Plaid API Documentation 📝","description":"Welcome to version 4 (v4) of the Plaid API Documentation. This documentation will help you get started with the Plaid API.\n\nThe Plaid API allows developers to access and interact with banking and other financial data. Some common use cases include:\n\n- **Accessing financial data**: Developers can access financial data from banks, credit card companies, and other financial institutions.\n    \n- **Initiating transactions**: Developers can initiate transactions such as money transfers.\n    \n\nPlaid API uses the HTTP protocol, and requests are made using the appropriate HTTP methods. The data is typically sent and received in JSON format.\n\n_The next few sections of this introductory page will guide you on obtaining the necessary credentials to start experimenting with the PLAID API._\n\n# API Versioning 🔢\n\nThis is the 4th and latest version of the Plaid API, known as version 2020-09-14.\n\nThis version includes several changes to improve authentication, streamline and simplify the API, and improve international support.\n\nBelow are a complete list of changes that have been added to this version.\n\n| **Key Changes** | **Details** |\n| --- | --- |\n| The public_key has been fully removed from the API to improve authentication. | Endpoints that previously accepted a public_key for authentication, namely /institutions/get_by_id and /institutions/search, now require a client_id and secret for authentication instead. |\n| /item/remove no longer returns a removed boolean. | This field created developer confusion, because it was never possible for it to return false. A failed /item/remove call will result in an error being returned instead. |\n| Several undocumented and unused fields have been removed. | from the institution object returned by the institutions endpoints /institutions/get, /institutions/get_by_id, and /institutions/search. The removed fields are: input_spec, credentials, include_display_data, has_mfa, mfa, and mfa_code_type. |\n| The institutions endpoints /institutions/get, /institutions/get_by_id, and /institutions/search now require the use of a country_codes parameter and no longer use US as a default value if country_codes is not specified. | 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| To support international payments, the response schema for the partner-only /processor/auth/get endpoint has changed. | This release brings the response for /processor/auth/get in line with the /auth/get 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\nTo see a complete log of the previous versions, please see the [changelog ](https://plaid.com/docs/changelog/) section of the general Plaid documentation.\n\n# Obtaining credentials 🔑\n\n#### **Client_id and Secret**\n\nBefore using the API, you need to obtain an API key. Plaid has three environments:\n\n- **Sandbox**: Supports only test items.\n    \n- **Development**: Supports up to 100 live items using real data.\n    \n- **Production**: Where all activity is billed.\n    \n\nThis documentation is focused on the Sandbox environment where you can test and experiment with free data.\n\nBelow is a step-by-step guide on how to obtain your Sandbox Credentials\n\n1. Navigate to [sign up on plaid](https://my.plaid.com/sign-up) to create a plaid account\n    \n2. Fill in your data in the required fields, then verify your account to log in to your dashboard.\n    \n3. On your dashboard, navigate to your account at the top-right corner and click to select the \"keys\" option.\n    \n4. You'll be asked to do a 2-factor authentication. You can either authenticate with your mobile number or with an authentication app.\n    \n5. Once you've authenticated successfully, your Sandbox Credentials will be displayed like so:\n    \n\n<img src=\"https://content.pstmn.io/62240e61-4647-496a-888f-cba69d7bcfbd/cGxhaWQtY3JlZGVudGlhbHMtYW5ub3RlZC5wbmc=\">\n\n_Copy your_ `_client_id_` _and_ `_secret_`_, and ensure to keep them safe. You'll always need to authenticate with them to access the Plaid APIs._\n\n#### **account_id**\n\n_To access some part of the APIs, you'll also need an access_token credential. To create an access_token, kindly follow the steps below:_\n\n1. Create a public token using the `/sandbox/public_token/create` endpoint\n    \n2. The endpoint in step one will require your `client_id` and `secret` credentials, with two additional parameters: `institution_id` and `initial_products`\n    \n3. To obtain these parameters above, log in to your dashboard, and navigate to **Activity** on the sidebar.\n    \n4. In the drop-down menu that appears, click on **status.** This will display a list of institutions.\n    \n5. Select any institution of your choice. In the page containing the institution details, copy the **institution_id** and **supported products** for your `institution_id` and `initial_products` parameters.\n    \n6. Once your public token has been created, you'll have to exchange it using the `/item/public_token/exchange` endpoint for an access token. The request requires your client_id, secret, and public_token for authentication.\n    \n7. If your request is successful, it will return an access_token which you will use to make requests to other endpoints.\n    \n\n_The next section will guide you on how to authenticate with your credentials._\n\n# Authentication 🔒\n\nTo Authenticate with your Sandbox credentials, you'll need to include your client_id and secret in your request headers or body, like so:\n\n| **Authentication Method** | **Example** |\n| --- | --- |\n| Header (cURL) | \\-H 'Client_id: your_client_id'  <br>\\-H 'Secret: your_secret_key' |\n| Body (JSON) | {  <br>\"client_id\": \"your_client_id\",  <br>\"secret\": \"your_secret_key\"  <br>} |\n\n_Plaid returns data as JSON, therefore you will also have to set Content-Type to application/json in your request Header._\n\n# Error and Status Codes ⚠️\n\nPlaid API returns standard HTTP status codes to indicate the outcome of a request. Additionally, the response body may include an error object with more details.\n\nHere are some standard error status codes and their meanings:\n\n#### General HTTP Status Codes\n\n| **Status Code** | **Status Name** | **Meaning** |\n| --- | --- | --- |\n| 200 | Request Successful! | The intended action was carried out successfully |\n| 201 | Okay | The resource was successfully created. |\n| 400 | Bad Request | The request contains invalid parameters |\n| 401 | Unauthorized | The request lacks valid credentials. |\n| 404 | Not Found | The requested resource was not found. |\n\n#### Plaid-Specific Status Codes\n\n| **Error Code** | **Error Type** | **Meaning** |\n| --- | --- | --- |\n| INVALID_ACCESS_TOKEN | INVALID_INPUT | Could not find matching access token. |\n| INVALID_PRODUCT | INVALID_INPUT | some products cannot be included in initial_products: |\n| MISSING_FIELDS | INVALID_REQUEST | The following required fields are missing. |\n| INSTITUTION_NOT_AVAILABLE | INSTITUTION_ERROR | The Institution is not currently responding to this request |\n| SANDBOX_PRODUCT_NOT_ENABLED | SANDBOX_ERROR | The product is not enabled on this item |\n\n## Rate Limits ⏳\n\nTo help manage the volume of requests made by thousands of developers daily, Plaid places limits on the number of requests that can be made. These limits help to provide reliable and scalable APIs for developers.\n\nRate limits are applied based on which Plaid environment credentials you use. When these limits are exceeded, an error is returned.\n\nTo learn about these errors please see the table below for an overview of Rate limits for the sandbox environment.\n\n| Endpoint | Max requests per Item | Max requests per client |\n| --- | --- | --- |\n| [<code>/auth/get</code>](https://plaid.com/docs/api/products/auth/#authget) | 15 per minute | 12,000 per minute |\n| [<code>/identity/get</code>](https://plaid.com/docs/api/products/identity/#identityget) | 15 per minute | 2,000 per minute |\n| [<code>/identity_verification/create</code>](https://plaid.com/docs/api/products/identity-verification/#identity_verificationcreate) | N/A | 200 per minute |\n| [<code>/identity_verification/get</code>](https://plaid.com/docs/api/products/identity-verification/#identity_verificationget) | N/A | 500 per minute |\n| [<code>/identity_verification/list</code>](https://plaid.com/docs/api/products/identity-verification/#identity_verificationlist) | N/A | 400 per minute |\n| [<code>/identity_verification/retry</code>](https://plaid.com/docs/api/products/identity-verification/#identity_verificationretry) | N/A | 200 per minute |\n| [<code>/item/get</code>](https://plaid.com/docs/api/items/#itemget) | 15 per minute | 5,000 per minute |\n| [<code>/item/remove</code>](https://plaid.com/docs/api/items/#itemremove) | 30 per minute | 2,000 per minute |\n| [<code>/processor/token/create</code>](https://plaid.com/docs/api/processors/#processortokencreate) | N/A | 500 per minute |\n| [<code>/transactions/recurring/get</code>](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) | 20 per minute | 1,000 per minute |\n| [<code>/transactions/refresh</code>](https://plaid.com/docs/api/products/transactions/#transactionsrefresh) | 2 per minute | 100 per minute |\n| [<code>/transactions/sync</code>](https://plaid.com/docs/api/products/transactions/#transactionssync) | 50 per minute | 2,500 per minute |\n| [<code>/transfer/authorization/create</code>](https://plaid.com/docs/api/products/transfer/initiating-transfers/#transferauthorizationcreate) | 100 per hour | 2,500 per minute |\n| [<code>/transfer/cancel</code>](https://plaid.com/docs/api/products/transfer/initiating-transfers/#transfercancel) | N/A | 250 per minute |\n| [<code>/transfer/create</code>](https://plaid.com/docs/api/products/transfer/initiating-transfers/#transfercreate) | N/A | 2,500 per minute |\n| [<code>/transfer/event/sync</code>](https://plaid.com/docs/api/products/transfer/reading-transfers/#transfereventsync) | N/A | 5,000 per minute |\n| [<code>/transfer/intent/create</code>](https://plaid.com/docs/api/products/transfer/account-linking/#transferintentcreate) | N/A | 5,000 per minute |\n| [<code>/transfer/migrate_account</code>](https://plaid.com/docs/api/products/transfer/account-linking/#transfermigrate_account) | N/A | 250 per minute |\n| [<code>/transfer/recurring/cancel</code>](https://plaid.com/docs/api/products/transfer/recurring-transfers/#transferrecurringcancel) | N/A | 250 per minute |\n| [<code>/transfer/recurring/create</code>](https://plaid.com/docs/api/products/transfer/recurring-transfers/#transferrecurringcreate) | N/A | 5,000 per minute |\n| [<code>/transfer/refund/cancel</code>](https://plaid.com/docs/api/products/transfer/refunds/#transferrefundcancel) | N/A | 250 per minute |\n| [<code>/transfer/refund/create</code>](https://plaid.com/docs/api/products/transfer/refunds/#transferrefundcreate) | N/A | 5,000 per minute |\n| [<code>/payment_initiation/recipient/create</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationrecipientcreate) | N/A | 240 per minute |\n| [<code>/payment_initiation/recipient/get</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationrecipientget) | N/A | 240 per minute |\n| [<code>/payment_initiation/recipient/list</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationrecipientlist) | N/A | 240 per minute |\n| [<code>/payment_initiation/payment/create</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationpaymentcreate) | N/A | 240 per minute |\n| [<code>/payment_initiation/payment/get</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationpaymentget) | N/A | 240 per minute |\n| [<code>/payment_initiation/payment/list</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationpaymentlist) | N/A | 240 per minute |\n| [<code>/payment_initiation/payment/reverse</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationpaymentreverse) | N/A | 240 per minute |\n| [<code>/payment_initiation/consent/create</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationconsentcreate) | N/A | 100 per minute |\n| [<code>/payment_initiation/consent/get</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationconsentget) | N/A | 240 per minute |\n| [<code>/payment_initiation/consent/revoke</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationconsentrevoke) | N/A | 100 per minute |\n| [<code>/payment_initiation/consent/payment/execute</code>](https://plaid.com/docs/api/products/payment-initiation/#payment_initiationconsentpaymentexecute) | N/A | 100 per minute (5 per consent) |\n\n# Endpoints Overview 🌐\n\nYou will make requests to several endpoints on this documentation. The table below gives an overview of the endpoints and their information.\n\n#### Base URL\n\n[<code><b>https://sandbox.plaid.com</b></code>](https://sandbox.plaid.com)\n\n#### **Public Token Endpoints**\n\n| Endpoint | Description |\n| --- | --- |\n| /sandbox/public_token/create | Endpoint to create a valid public_token for an arbitrary institution ID, initial products, and test credentials. |\n| /item/public_token/exchange | Endpoint to exchange public token for an access token. |\n\n#### **Payments and Funding Endpoints**\n\n| Endpoint | Description |\n| --- | --- |\n| /auth/get | Endpoint to retrieve bank account and identification numbers. |\n| /bank_transfer/event/list | Endpoint to get a list of bank transfer events |\n| /bank_transfer/event/sync | Endpoint to request or sync bank transfer events. |\n| /accounts/balance/get | Endpoint to retrieve real-time balance data. |\n| /identity/get | Endpoint to fetch identity data |\n| /identity/match | Endpoint to match client Identity with Bank Identity |\n| /identity/documents/uploads/get | Endpoint to retrieve identity details when using Identity Document Upload. |\n| /signal/evaluate | Endpoint to retrieve Signal scores. |\n| /signal/decision/report | Endpoint to report whether you initiated a transaction. |\n| /signal/return/report | endpoint to report a returned transaction that was previously sent to the /signal/evaluate endpoint. |\n| /signal/prepare | Endpoint to add Signal to a newly linked item. |\n| /transfer/authorization/create | Endpoint to create a transfer authorization |\n| /transfer/authorization/cancel | Endpoint to cancel a transfer authorization |\n| /transfer/create | Endpoint to create a transfer. |\n| /transfer/cancel | Endpoint to cancel a transfer |\n| /transfer/get | Endpoint to retrieve information about a transfer. |\n| /transfer/list | Endpoint to retrieve a list of transfers and their statuses. |\n| /transfer/event/list | Endpoint to retrieve a list of transfer events |\n| /transfer/event/sync | Endpoint to sync transfer events |\n| /transfer/sweep/get | Endpoint to retrieve information about a sweep |\n| /transfer/sweep/list | Endpoint to retrieve a list of sweeps |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"37667361","collectionId":"4463529a-2bff-4b17-a596-4faf70edb5d5","publishedId":"2sAYBUCs2C","public":true,"publicUrl":"https://documenter-api.postman.tech/view/37667361/2sAYBUCs2C","privateUrl":"https://go.postman.co/documentation/37667361-4463529a-2bff-4b17-a596-4faf70edb5d5","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"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.10.1","publishDate":"2024-11-23T13:46:09.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","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://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","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/2sAYBUCs2C"}