Official Node.js/TypeScript SDK for the Pluggy API.
- API Docs: https://docs.pluggy.ai
- Base URL: https://api.pluggy.ai/
npm install pluggy-sdk- Node.js:
>=12.0.0
import { PluggyClient } from 'pluggy-sdk'
const client = new PluggyClient({
clientId: process.env.PLUGGY_CLIENT_ID!,
clientSecret: process.env.PLUGGY_CLIENT_SECRET!,
})
async function main() {
// Example: list connectors
const connectors = await client.fetchConnectors()
console.log('connectors', connectors.length)
}
main().catch((err) => {
console.error(err)
process.exitCode = 1
})The SDK uses your Pluggy credentials:
PLUGGY_CLIENT_IDPLUGGY_CLIENT_SECRET
If you don’t have credentials yet, generate them in the Pluggy dashboard and refer to the docs for environment setup.
import { PluggyClient } from 'pluggy-sdk'
const client = new PluggyClient({
clientId: process.env.PLUGGY_CLIENT_ID!,
clientSecret: process.env.PLUGGY_CLIENT_SECRET!,
})
const connectToken = await client.createConnectToken({
// Tip: pass the fields required by your integration
// (e.g. options, itemId, connectorId, etc.)
})// Create an item
const item = await client.createItem({
connectorId: 123,
parameters: {
// connector-specific parameters
},
})
// Fetch an item
const fetched = await client.fetchItem(item.id)
// Update item MFA (when required)
await client.updateItemMFA(item.id, {
// mfa payload from Pluggy
})Transactions use cursor-based pagination against GET /v2/transactions. The SDK exposes two helpers:
fetchTransactionsCursor(accountId, options)— fetch a single page and the cursor to the next one.fetchAllTransactions(accountId, options)— iterate through every page and return the full list.
const accounts = await client.fetchAccounts(item.id)
const account = accounts.results[0]
// Single page (returns { results, next })
const page = await client.fetchTransactionsCursor(account.id, {
dateFrom: '2024-01-01',
})
// Manual pagination: follow the cursor until `next` is null
let cursor = page.next
while (cursor) {
const url = new URL(cursor)
const after = url.searchParams.get('after')!
const next = await client.fetchTransactionsCursor(account.id, {
dateFrom: '2024-01-01',
after,
})
// ...do something with next.results
cursor = next.next
}
// Or fetch all transactions in one call
const all = await client.fetchAllTransactions(account.id, {
dateFrom: '2024-01-01',
})Deprecation note: the legacy page-based
fetchTransactions(accountId, options)method (GET /transactions) is@deprecatedand will be removed in a future major release. Migrate tofetchTransactionsCursor/fetchAllTransactions— the cursor endpoint is more stable for long lists and supports the full filter set (dateTo,ids, etc.).
const webhook = await client.createWebhook({
url: 'https://example.com/webhooks/pluggy',
event: 'item.created',
})
const webhooks = await client.fetchWebhooks()
await client.deleteWebhook(webhook.id)Use PluggyPaymentsClient for payment initiation features.
import { PluggyPaymentsClient } from 'pluggy-sdk'
const payments = new PluggyPaymentsClient({
clientId: process.env.PLUGGY_CLIENT_ID!,
clientSecret: process.env.PLUGGY_CLIENT_SECRET!,
})const recipient = await payments.createPaymentRecipient({
// recipient payload (PIX / bank account details, etc.)
})
const fetched = await payments.fetchPaymentRecipient(recipient.id)const request = await payments.createPaymentRequest({
// payment request payload
})The SDK throws on non-2xx responses. Recommended pattern:
try {
const item = await client.fetchItem('item_id')
console.log(item)
} catch (err) {
// Surface the error message and/or response details in your app logs
console.error(err)
}This package is written in TypeScript and ships with types. You can import types from the package directly:
import type { Item, Transaction } from 'pluggy-sdk'- API documentation: https://docs.pluggy.ai
- OpenAPI spec: https://api.pluggy.ai/oas3.json
MIT