PHPackages                             elminson/plaid-sdk-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. elminson/plaid-sdk-php

ActiveLibrary

elminson/plaid-sdk-php
======================

PHP implementation of Plaid's API as an SDK.

v1.0.1(1y ago)06MITPHPPHP &gt;=7.3|&gt;=8.3

Since Jun 8Pushed 1y agoCompare

[ Source](https://github.com/elminson/plaid-sdk-php)[ Packagist](https://packagist.org/packages/elminson/plaid-sdk-php)[ RSS](/packages/elminson-plaid-sdk-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (5)Versions (4)Used By (0)

Plaid SDK
=========

[](#plaid-sdk)

[![Latest Stable Version](https://camo.githubusercontent.com/357becb97b22396202be592bafb0d06f4f706f258fc79db226bfb9486351ea5e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f746f6d6f72726f772d69646561732f706c6169642d73646b2d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tomorrow-ideas/plaid-sdk-php)[![Build Status](https://camo.githubusercontent.com/577c20941ea97d83ff4ee3d8412d21e6489eb3ef3bbc8f3addc82d891e768224/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f546f6d6f72726f7749646561732f706c6169642d73646b2d7068702e7376673f7374796c653d666c61742d737175617265)](https://travis-ci.com/TomorrowIdeas/plaid-sdk-php)[![Code Coverage](https://camo.githubusercontent.com/e2e8b439b7e14f2c681b6ed6aa497e84618a0c38ec8d0275ffdbfe45bdba8c69/68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f6769746875622f546f6d6f72726f7749646561732f706c6169642d73646b2d7068702e7376673f7374796c653d666c61742d737175617265)](https://coveralls.io/github/TomorrowIdeas/plaid-sdk-php)[![License](https://camo.githubusercontent.com/6601f1668e30ce89e9e3b375ca43bad990984932a3f330db8fc8ab2a345a50fe/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f546f6d6f72726f7749646561732f706c6169642d73646b2d7068702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/tomorrow-ideas/plaid-sdk-php)

Plaid PHP SDK supporting:

- Link tokens
- Auth
- Items
- Accounts
- Institutions
- Webhooks
- Identity
- Income
- Assets
- Balance
- Liabilities
- Investments
- Payment Initiation (UK only)
- Processors (including Stripe &amp; Dwolla)
- Bank Transfers (US only)
- Sandbox

Official Plaid API docs
-----------------------

[](#official-plaid-api-docs)

For full description of request and response payloads and properties, please see the [official Plaid API docs](https://plaid.com/docs/).

Requirements
------------

[](#requirements)

- PHP 7.3+ | PHP 8.0+
- ext-curl
- ext-json

Installation
------------

[](#installation)

```
composer require tomorrow-ideas/plaid-sdk-php
```

Configuration
-------------

[](#configuration)

Instantiate the Plaid client class with your credentials.

```
$client = new \TomorrowIdeas\Plaid\Plaid("your-client-id", "your-secret", "environment");
```

### Environments

[](#environments)

The Plaid client by default uses the **production** Plaid API hostname for all API calls. You can change the environment by using the `setEnvironment` method.

Possible environments:

- production
- development
- sandbox

### Options

[](#options)

Many methods allow the passing of options to the Plaid endpoint. These options should be an associative array of key/value pairs. The exact options supported are dependent on the endpoint being called. Please refer to the official Plaid documentation for more information.

```
$options = [
	"foo" => "bar",
	"baz" => "bat"
];
```

Example
-------

[](#example)

```
use TomorrowIdeas\Plaid\Plaid;

require __DIR__ . "/vendor/autoload.php";

$plaid = new Plaid(
	\getenv("PLAID_CLIENT_ID"),
	\getenv("PLAID_CLIENT_SECRET"),
	\getenv("PLAID_ENVIRONMENT")
);

$item = $plaid->items->get("itm_1234");
```

Resources
---------

[](#resources)

For a full description of the response payload, please see the [official Plaid API docs](https://plaid.com/docs/).

### Accounts

[](#accounts)

Resource: `accounts`

Reference:

Methods:

- `list(string $access_token, array $options = []): object`
- `getBalance(string $access_token, array $options = []): object`
- `getIdentity(string $access_token): object`

Example:

```
$accounts = $plaid->accounts->list($access_token);
```

### Auth

[](#auth)

Resource: `auth`

Reference:

Methods:

- `get(string $access_token, array $options = []): object`

Example:

```
$auth = $plaid->auth->get($access_token);
```

### Bank Transfers (U.S. only)

[](#bank-transfers-us-only)

Resource: `bank_transfers`

Reference:

Methods:

```
create(
	string $access_token,
	string $idempotency_key,
	string $type,
	string $account_id,
	string $network,
	string $amount,
	string $currency_code,
	AccountHolder $account_holder,
	string $description,
	string $ach_class = null,
	string $custom_tag = null,
	array $metadata = [],
	string $origination_account_id = null): object
```

- `cancel(string $bank_transfer_id): object`
- `get(string $bank_transfer_id): object`
- `list( ?DateTime $start_date = null, ?DateTime $end_date = null, ?int $count = null, ?int $offset = null, ?string $direction = null, ?string $origination_account_id = null): object `
- `getEventList( ?DateTime $start_date = null, ?DateTime $end_date = null, ?string $bank_transfer_id = null, ?string $account_id = null, ?string $bank_transfer_type = null, array $event_type = [], ?int $count = null, ?int $offset = null, ?string $direction = null, ?string $origination_account_id = null): object `
- `syncEvents(string $after_id, ?int $count = null): object`
- `migrateAccount(string $account_number, string $routing_number, string $account_type): object`
- `getOriginationAccountBalance(string $origination_account_id = null): object`

Example:

```
$transfers = $plaid->bank_transfers->list();
```

### Categories

[](#categories)

Resource: `categories`

Reference:

Methods:

- `list(): object`

Example:

```
$categories = $plaid->categories->list();
```

### Institutions

[](#institutions)

Resource: `institutions`

Reference:

Methods:

- `get(string $institution_id, array $country_codes, array $options = []): object`
- `list(int $count, int $offset, array $country_codes, array $options = []): object`
- `find(string $query, array $country_codes, array $products = [], array $options = []): object`

Example:

```
$institutions = $plaid->institutions->list(20, 0);
```

### Investments

[](#investments)

Resource: `investments`

Reference:

Methods:

- `listHoldings(string $access_token, array $options = []): object`
- `listTransactions(string $access_token, DateTime $start_date, DateTime $end_date, array $options = []): object`

Example:

```
$holdings = $plaid->investments->listHoldings($access_token);
```

### Tokens

[](#tokens)

Resource: `tokens`

Reference:

Methods:

```
create(string $client_name,
	string $language,
	array $country_codes,
	User $user,
	array $products = [],
	?string $webhook = null,
	?string $link_customization_name = null,
	?AccountFilters $account_filters = null,
	?string $access_token = null,
	?string $redirect_url = null,
	?string $android_package_name = null,
	?string $payment_id = null): object
```

`get(string $link_token): object`

Example:

```
$token = $plaid->tokens->create($client_name, $language, ["US","CA"], $user_id);
```

### Liabilities

[](#liabilities)

Resource: `liabilities`

Reference:

Methods:

- `list(string $access_token, array $options = []): object`

Example:

```
$liabilities = $plaid->liabilities->list($access_token);
```

### Items

[](#items)

Resource: `items`

Reference:

Methods:

- `get(string $access_token): object`
- `remove(string $access_token): object`
- `getIncome(string $access_token): object`
- `createPublicToken(string $access_token): object`
- `exchangeToken(string $public_token): object`
- `rotateAccessToken(string $access_token): object`

```
$item = $plaid->items->get($access_token);
```

### Webhooks

[](#webhooks)

Resource: `webhooks`

Reference:

Methods:

- `getVerificationKey(string $key_id): object`
- `update(string $access_token, string $webhook): object`

Example:

```
$verification_key = $plaid->webhooks->getVerificationKey($key_id);
```

### Transactions

[](#transactions)

Resource: `transactions`

Reference:

Methods:

- `list(string $access_token, DateTime $start_date, DateTime $end_date, array $options = []): object`
- `refresh(string $access_token): object`
- `sync(string $access_token, ?string $cursor = null, ?int $count = null, array $options = []): object`
- `recurring(string $access_token, array $account_ids, array $options = []): object`

Example:

```
$transactions = $plaid->transactions->list($access_token, $start_date, $end_date);
```

### Reports

[](#reports)

Resource: `reports`

Reference:

Methods:

- `createAssetReport(array $access_tokens, int $days_requested, array $options = []): object`
- `refreshAssetReport(string $asset_report_token, int $days_requested, array $options = []): object`
- `filterAssetReport(string $asset_report_token, array $exclude_accounts): object`
- `getAssetReport(string $asset_report_token, bool $include_insights = false): object`
- `getAssetReportPdf(string $asset_report_token): ResponseInterface` **Note:** Because this endpoint returns PDF content in the repsponse body, this method returns an instance of a PSR-7 `ResponseInterface`. You may leverage the `Response` object to stream the PDF back to the requesting client and access response headers
- `removeAssetReport(string $asset_report_token): object`
- `createAssetReportAuditCopy(string $asset_report_token, string $auditor_id): object`
- `removeAssetReportAuditCopy(string $audit_copy_token): object`

### Payment Initiation (UK only)

[](#payment-initiation-uk-only)

Resource: `payments`

Reference:

Methods:

- `createRecipient(string $name, string $iban, RecipientAddress $address): object`
- `getRecipient(string $recipient_id): object`
- `listRecipients(): object`
- `create(string $recipient_id, string $reference, float $amount, string $currency, PaymentSchedule $payment_schedule = null): object`
- `createToken(string $payment_id): object`
- `get(string $payment_id): object`
- `list(array $options = []): object`

Example:

```
$plaid->payments->createRecipient($name, $iban, $address);
```

### Processors

[](#processors)

Resource: `processors`

Reference:

Methods:

- `createToken(string $access_token, string $account_id, string $processor): object`
- `getAuth(string $processor_token): object`
- `getBalance(string $processor_token): object`
- `getIdentity(string $processor_token): object`
- `createStripeToken(string $access_token, string $account_id): object` [\[?\]](https://plaid.com/docs/stripe)
- `createDwollaToken(string $access_token, string $account_id): object` [\[?\]](https://plaid.com/docs/dwolla)

### Sandbox

[](#sandbox)

Resource: `sandbox`

Reference:

Methods:

- `createPublicToken(string $institution_id, array $initial_products, array $options = []): object`
- `resetLogin(string $access_token): object`
- `setVerificationStatus(string $access_token, string $account_id, string $verification_status): object`
- `fireWebhook(string $access_token, string $webhook_code = "DEFAULT_UPDATE"): object`
- `simulateBankTransfer(string $bank_transfer_id, string $event_type, ?string $ach_return_code = null, ?string $failure_description = null): object`

Example:

```
$response = $plaid->sandbox->fireWebhook($access_token);
```

Entities
--------

[](#entities)

### User

[](#user)

The `TomorrowIdeas\Plaid\Entities\User` entity is used to represent your end user when creating a new link token.

Example:

```
$token_user = new User(
	string $id,
	?string $name = null,
	?string $phone_number = null,
	?string $phone_number_verified_time = null,
	?string $email_address = null,
	?string $ssn = null,
	?string $date_of_birth = null
)
```

### RecipientAddress

[](#recipientaddress)

The `TomorrowIdeas\Plaid\Entities\RecipientAddress` entity is used to represent an address object for the recipient of a payment request.

Example:

```
$address = new TomorrowIdeas\Plaid\Entities\RecipientAddress("123 Elm St.", "Apt 1", "Anytown", "ABC 123", "GB");
```

### PaymentSchedule

[](#paymentschedule)

Example:

The `TomorrowIdeas\Plaid\Entities\PaymnentSchedule` entity is used when creating a new payment that will be a recurring charge. See `createPayment` method for more information.

```
$payment_schedule = new TomorrowIdeas\Plaid\Entities\PaymnentSchedule(
    PaymentSchedule::INTERVAL_MONTHLY,
    15,
    new DateTime("2020-10-01")
);
```

Errors
------

[](#errors)

All unsuccessfull (non 2xx) responses will throw a `PlaidRequestException`. The full response object is available via the `getResponse()` method.

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 82.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

701d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e399869d29ffb004ec4652fee201a7a794169cfe1218fa4771a520419bfa02b0?d=identicon)[elminson](/maintainers/elminson)

---

Top Contributors

[![brentscheffler](https://avatars.githubusercontent.com/u/723164?v=4)](https://github.com/brentscheffler "brentscheffler (116 commits)")[![strawbee](https://avatars.githubusercontent.com/u/13226615?v=4)](https://github.com/strawbee "strawbee (7 commits)")[![elminson](https://avatars.githubusercontent.com/u/2476286?v=4)](https://github.com/elminson "elminson (3 commits)")[![webkod3r](https://avatars.githubusercontent.com/u/3235376?v=4)](https://github.com/webkod3r "webkod3r (2 commits)")[![ChrisHawley](https://avatars.githubusercontent.com/u/125178?v=4)](https://github.com/ChrisHawley "ChrisHawley (2 commits)")[![gitmathias](https://avatars.githubusercontent.com/u/365221?v=4)](https://github.com/gitmathias "gitmathias (2 commits)")[![psychob](https://avatars.githubusercontent.com/u/1288577?v=4)](https://github.com/psychob "psychob (2 commits)")[![assertchris](https://avatars.githubusercontent.com/u/200609?v=4)](https://github.com/assertchris "assertchris (2 commits)")[![pavel-mironchik](https://avatars.githubusercontent.com/u/7408605?v=4)](https://github.com/pavel-mironchik "pavel-mironchik (1 commits)")[![stri8ed](https://avatars.githubusercontent.com/u/1766843?v=4)](https://github.com/stri8ed "stri8ed (1 commits)")[![gboudreau](https://avatars.githubusercontent.com/u/370329?v=4)](https://github.com/gboudreau "gboudreau (1 commits)")[![CihanSenturk](https://avatars.githubusercontent.com/u/53110792?v=4)](https://github.com/CihanSenturk "CihanSenturk (1 commits)")[![harisrahman](https://avatars.githubusercontent.com/u/43349180?v=4)](https://github.com/harisrahman "harisrahman (1 commits)")

---

Tags

phpsdkplaid

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/elminson-plaid-sdk-php/health.svg)

```
[![Health](https://phpackages.com/badges/elminson-plaid-sdk-php/health.svg)](https://phpackages.com/packages/elminson-plaid-sdk-php)
```

###  Alternatives

[tomorrow-ideas/plaid-sdk-php

PHP implementation of Plaid's API as an SDK.

1201.6M2](/packages/tomorrow-ideas-plaid-sdk-php)[deepseek-php/deepseek-php-client

deepseek PHP client is a robust and community-driven PHP client library for seamless integration with the Deepseek API, offering efficient access to advanced AI and data processing capabilities.

47073.9k5](/packages/deepseek-php-deepseek-php-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
