Integrations

Plaid

Connect bank accounts with Plaid Link and stream transactions into /v1/bank-transactions.

The snag

Manual bank statement uploads delay reconciliation and hide the current cash position from finance.

How Zivvy helps

Use Plaid Link on the client, exchange the public token, and let Zivvy pull daily via /v1/bank-transactions into the bank reconciliation queue.

What you get

  • Plaid Link on the client, exchange handled by Zivvy
  • Nightly pull into /v1/bank-transactions
  • Auto-match against /v1/payment-entries on amount + date

Workflow stream

Plaid Link → /v1/bank-accounts linked and verified

Common uses

  1. 01

    Plaid Link → /v1/bank-accounts linked and verified

  2. 02

    Daily sync of transactions into /v1/bank-transactions

  3. 03

    Auto-suggest matches to /v1/payment-entries

Integration code

Open API reference

Create a Plaid link token

curl -X POST https://integrate.zivvy.xyz/v1/bank-accounts/link-token \
  -H "Authorization: Bearer $ZIVVY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "user_ref": "user_42",
    "products": ["transactions", "auth"],
    "country_codes": ["US"]
  }'

Complete the link

const { link_token } = await fetch("/api/plaid/link-token", { method: "POST" })
  .then(r => r.json());

Plaid.create({
  token: link_token,
  onSuccess: async (public_token) => {
    await fetch("/api/plaid/exchange", {
      method: "POST",
      body: JSON.stringify({ public_token })
    });
  }
}).open();

API endpoints

POST /v1/bank-accountsGET /v1/bank-transactionsPOST /v1/payment-entries

Events emitted

HMAC-SHA256 signed webhooks, retried for 24 hours.

  • bank-transactions.created
  • bank-accounts.linked
  • bank-accounts.error

0

free seats forever

0

card required to start

1

workspace for the workflow

Questions

Ready to try it?

Free plan. Two seats. No card.