Aplikasi fintech modern jarang dibangun dari awal. Jika aplikasi Anda meminta pengguna menautkan rekening giro, kemungkinan besar Plaid adalah perantara yang mengubah login bank pengguna menjadi data JSON siap pakai untuk backend Anda. API Plaid mendukung penautan akun, pemeriksaan saldo, riwayat transaksi, dan verifikasi identitas—digunakan oleh ribuan aplikasi seperti Venmo, Robinhood, dan Chime.
Panduan ini mengulas implementasi API Plaid secara teknis: mulai dari mendapatkan kunci, alur token Link secara detail, produk utama yang perlu Anda ketahui, hingga cara menangani error pada produksi. Anda juga akan belajar menguji setiap langkah menggunakan Apidog, agar Anda bisa melihat payload yang sebenarnya tanpa menebak-nebak. Untuk referensi, buka juga dokumentasi resmi Plaid di tab terpisah.
Open banking penuh pilihan, dan Plaid adalah salah satunya. Jika masih membandingkan vendor, baca juga rangkuman API open banking terbaik. Untuk postingan ini, kita langsung praktik dengan Plaid.
TL;DR
- Plaid: agregator data keuangan yang menghubungkan aplikasi ke 12.000+ bank di AS, Kanada, dan Eropa.
- Lingkungan: sandbox (gratis, data palsu), development (100 Item live gratis), production (bayar per panggilan).
-
Alur penautan: 4 langkah—buat
link_token(server), buka Plaid Link (klien), tukarpublic_token(server), panggil endpoint produk. - Produk inti: Auth, Balance, Transactions, Identity, Investments, Liabilities, Income (diaktifkan per Item).
-
Error umum:
ITEM_LOGIN_REQUIRED,INVALID_CREDENTIALS. Gunakan webhook untuk notifikasi masalah. - Rate limit: berlaku per-Item dan klien. Batch request dan gunakan webhook, kurangi polling.
Apa itu Plaid?
Plaid adalah penyedia infrastruktur fintech yang menjadi perantara antara aplikasi Anda dan bank pengguna. Setelah pengguna memasukkan kredensial bank via Plaid Link, Plaid mengambil data (melalui API open banking resmi atau rekayasa balik), menormalkan, dan mengirimkan respons JSON konsisten ke backend Anda.
Kredensial bank tidak pernah tersentuh aplikasi Anda. Koneksi ini disebut Item, dan Anda akan mendapat access_token untuk akses ke data Item tersebut. Satu Item = satu set kredensial pada satu institusi, bisa berisi banyak akun (giro, tabungan, kartu kredit).
Plaid mendukung akun konsumen (giro, tabungan), kartu kredit, pinjaman, investasi, dan data penggajian. Plaid tidak memproses transfer uang—untuk transfer ACH, padukan Plaid Auth dengan payment processor lain. Lihat juga API pembayaran ACH terbaik.
Autentikasi dan Pengaturan
Langkah 1: Buat Akun Pengembang Plaid
- Daftar di plaid.com dan verifikasi email.
- Akses dashboard dengan 3 lingkungan:
-
Sandbox: data dan institusi palsu, gratis. Login:
user_good/pass_good. - Development: koneksi bank asli (maks 100 Item live), gratis.
- Production: koneksi asli tak terbatas, berbayar.
-
Sandbox: data dan institusi palsu, gratis. Login:
Langkah 2: Dapatkan Kunci API
- Di dashboard, buka Team Settings > Keys.
- Catat:
-
client_id(sama untuk semua environment) -
secret(unik per environment)
-
- Simpan di variabel environment, jangan pernah commit ke git.
Langkah 3: Instal SDK Node.js
npm install plaid
Atau cek plaid/plaid-node.
Langkah 4: Inisialisasi Klien
import { Configuration, PlaidApi, PlaidEnvironments } from 'plaid';
const config = new Configuration({
basePath: PlaidEnvironments.sandbox,
baseOptions: {
headers: {
'PLAID-CLIENT-ID': process.env.PLAID_CLIENT_ID,
'PLAID-SECRET': process.env.PLAID_SECRET,
},
},
});
const client = new PlaidApi(config);
Ganti PlaidEnvironments.sandbox ke .development atau .production sesuai kebutuhan.
Endpoint Inti
Alur Token Link (4 Langkah)
1. Buat link_token (server)
const response = await client.linkTokenCreate({
user: { client_user_id: 'user_123' },
client_name: 'Aplikasi Anda',
products: ['auth', 'transactions'],
country_codes: ['US'],
language: 'en',
});
const linkToken = response.data.link_token;
Versi curl:
curl -X POST https://sandbox.plaid.com/link/token/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": "YOUR_CLIENT_ID",
"secret": "YOUR_SANDBOX_SECRET",
"user": { "client_user_id": "user_123" },
"client_name": "Aplikasi Anda",
"products": ["auth", "transactions"],
"country_codes": ["US"],
"language": "en"
}'
2. Buka Plaid Link di Klien
- Kirim
link_tokenke frontend. - Integrasi dengan Plaid Link SDK.
- Pengguna pilih bank, login, dan Anda dapatkan
public_tokendari callbackonSuccess.
3. Tukar public_token (server)
const exchange = await client.itemPublicTokenExchange({
public_token: publicToken,
});
const accessToken = exchange.data.access_token;
const itemId = exchange.data.item_id;
Simpan accessToken di backend (terenkripsi), dikaitkan dengan user.
4. Panggil Endpoint Produk
const accounts = await client.accountsGet({ access_token: accessToken });
const balance = await client.accountsBalanceGet({ access_token: accessToken });
Endpoint Produk Penting
-
Auth: nomor akun/routing untuk ACH (
/auth/get) -
Balance: saldo real-time, bypass cache (
/accounts/balance/get) -
Transactions: histori transaksi hingga 24 bulan (
/transactions/sync) -
Identity: info KYC (nama, email, telp, alamat) (
/identity/get). Lihat juga rangkuman API KYC. -
Investments: portofolio & transaksi investasi (
/investments/holdings/get) -
Liabilities: detail utang (kartu kredit, hipotek, pinjaman) (
/liabilities/get) -
Income: data penggajian (
/credit/payroll_income/get)
Pengujian API Plaid dengan Apidog
Menguji Plaid bisa rumit karena langkah Link butuh browser. Namun, Anda tetap bisa menguji endpoint server-side dan melihat error dengan Apidog.
- Import spesifikasi OpenAPI Plaid ke Apidog.
- Semua endpoint siap dengan tipe data, contoh body, dan header otentikasi.
- Buat variabel environment (
client_id,secret,access_token) untuk sandbox/production. - Jalankan rangkaian request:
linkTokenCreate→sandboxPublicTokenCreate→itemPublicTokenExchange→accountsGettanpa browser. - Apidog Mock Server bisa dipakai frontend sebelum backend siap.
- Jika migrasi dari tool lain, baca panduan pengujian API tanpa Postman 2026.
- Unduh Apidog dan arahkan ke spesifikasi Plaid.
Error Umum & Rate Limit
Plaid mengembalikan error_type, error_code, dan error_message. Tangani error berikut:
-
INVALID_CREDENTIALS: User salah password bank. Tampilkan prompt ulang lewat Link (mode update). -
ITEM_LOGIN_REQUIRED: Sesi bank expired (misal ganti password/MFA). Trigger Link update via webhook. -
RATE_LIMIT_EXCEEDED: Kena limit per-Item/endpoint. Implementasi exponential backoff + jitter. -
PRODUCT_NOT_READY: Data belum siap, tunggu webhookINITIAL_UPDATElalu retry.
Webhook
- Saat membuat
link_token, sertakan URL webhook. - Plaid akan melakukan POST ke endpoint Anda dengan event seperti:
-
SYNC_UPDATES_AVAILABLE: transaksi baru siap. -
ITEM: LOGIN_REQUIRED: user perlu re-authenticate. -
ITEM: ERROR: kegagalan permanen.
-
- Verifikasi signature JWT setiap webhook.
Batas Laju (Rate Limit)
- Plaid menerapkan limit per-Item per-endpoint (misal
/accounts/balance/get= 5x/menit/Item di production). - Ada juga agregat limit per-klien.
- Best practice:
- Konsumsi webhook, jangan polling.
- Cache saldo beberapa menit.
- Jangan panggil Plaid dari jalur request yang menghadap user secara langsung.
Harga Plaid
- Sandbox: gratis, unlimited.
- Development: gratis hingga 100 Item.
-
Production:
- Auth: ±$1.50 per akun (sekali).
- Balance: per call.
- Transactions: bulanan per-Item (±$0.30).
- Identity: per call.
- Investments/Liabilities/Income: biaya terpisah.
- Harga bisa dinegosiasi jika volume tinggi. Lihat produk Plaid untuk update.
FAQ
Berapa lama access_token berlaku?
Tidak terbatas, kecuali user revoke akses atau bank reset sesi. Simpan terenkripsi, tidak perlu expired di sisi Anda.
Bisakah Plaid hanya untuk verifikasi identitas?
Bisa pakai Plaid Identity, tapi untuk KYC murni bisa pertimbangkan provider khusus. Lihat cara pakai Stripe Identity API.
Apakah Plaid support negara selain AS?
Ya. Plaid mendukung AS, Kanada, UK, dan sebagian besar Eropa. Dukungan tergantung produk; cek country_codes saat create link_token.
Apa yang terjadi jika user ganti password bank?
Item berubah status ke ITEM_LOGIN_REQUIRED dan Anda dapat webhook. Trigger Plaid Link (update mode) agar user re-authenticate tanpa kehilangan access_token.
Bisa test alur Link tanpa browser?
Bisa. Endpoint /sandbox/public_token/create bypass semua Link dan langsung kasih public_token untuk di-exchange. Cocok untuk automated integration test.
Bagaimana setup lokal development?
Simpan secret sandbox di .env. Pakai PlaidEnvironments.sandbox untuk development. Untuk webhook, gunakan tunneling (ngrok, Cloudflare Tunnel) agar endpoint lokal dapat menerima webhook dari Plaid.
Top comments (0)