Các ứng dụng Fintech ngày nay hiếm khi bắt đầu từ con số không. Khi người dùng liên kết tài khoản ngân hàng vãng lai với ứng dụng của bạn, Plaid có thể sẽ nằm ở giữa, dịch thông tin đăng nhập ngân hàng thành dữ liệu JSON sạch mà backend của bạn có thể sử dụng. API của Plaid hỗ trợ việc liên kết tài khoản, kiểm tra số dư, lịch sử giao dịch và xác minh danh tính cho hàng nghìn ứng dụng bao gồm Venmo, Robinhood và Chime.
Hướng dẫn này sẽ đưa bạn qua API của Plaid từ góc độ nhà phát triển: cách lấy khóa, cách hoạt động của quy trình Link token từ đầu đến cuối, những sản phẩm bạn nên biết và ý nghĩa của các lỗi thường gặp khi có sự cố trong môi trường production. Bạn cũng sẽ thấy cách kiểm tra mọi bước với Apidog để bạn không còn phải đoán mò về payload yêu cầu. Nếu bạn muốn nguồn thông tin chính xác, hãy mở tài liệu chính thức của Plaid trong một tab thứ hai khi đọc.
Ngân hàng mở là một lĩnh vực đông đúc, và Plaid là một trong số nhiều lựa chọn. Nếu bạn vẫn đang so sánh các nhà cung cấp, bài tổng hợp của chúng tôi về các API ngân hàng mở tốt nhất là một tài liệu hữu ích. Đối với bài viết này, giả sử bạn đã chọn Plaid và sẵn sàng triển khai.
Tóm tắt
- Plaid là một nền tảng tổng hợp dữ liệu tài chính kết nối ứng dụng của bạn với hơn 12.000 ngân hàng trên khắp Hoa Kỳ, Canada và Châu Âu.
- Bạn có ba môi trường ngay lập tức: sandbox (miễn phí, dữ liệu giả), development (100 Item thực miễn phí) và production (tính phí theo mỗi cuộc gọi).
- Quy trình liên kết là một "bắt tay" bốn bước: tạo
link_tokenphía máy chủ, mở Plaid Link phía máy khách, đổipublic_tokenlấyaccess_token, sau đó gọi các endpoint sản phẩm. - Các sản phẩm cốt lõi là Auth, Balance, Transactions, Identity, Investments, Liabilities và Income. Bạn bật chúng cho từng Item.
- Các lỗi production phổ biến nhất là
ITEM_LOGIN_REQUIREDvàINVALID_CREDENTIALS. Webhook sẽ thông báo cho bạn khi một Item cần được chú ý. - Giới hạn tỷ lệ là trên mỗi Item và mỗi máy khách. Thực hiện đọc hàng loạt và lắng nghe webhook thay vì thăm dò định kỳ.
Plaid là gì?
Plaid là một công ty hạ tầng fintech có trụ sở tại Hoa Kỳ, nằm giữa ứng dụng của bạn và ngân hàng của người dùng. Khi người dùng nhập thông tin đăng nhập ngân hàng của họ vào Plaid Link, Plaid kết nối với ngân hàng (thông qua các API ngân hàng mở chính thức nếu có, hoặc các trang web ngân hàng được kỹ thuật đảo ngược nếu không có), kéo dữ liệu được yêu cầu, chuẩn hóa nó và đưa cho bạn một phản hồi JSON nhất quán bất kể nó đến từ ngân hàng nào.
Bạn không bao giờ thấy hoặc lưu trữ thông tin đăng nhập ngân hàng của người dùng. Plaid giữ kết nối, mà họ gọi là một Item, và cung cấp cho bạn một access_token đại diện cho quyền truy vấn Item đó. Một Item tương đương với một bộ thông tin đăng nhập tại một tổ chức tài chính, và có thể bao gồm nhiều tài khoản (tiền gửi, tiết kiệm, thẻ tín dụng).
Plaid bao gồm các tài khoản tiền gửi và tiết kiệm của người tiêu dùng, thẻ tín dụng, khoản vay, tài khoản đầu tư và dữ liệu bảng lương. Nó không tự mình chuyển tiền; đối với các khoản chuyển khoản ACH, bạn thường ghép nối Plaid Auth với một bộ xử lý thanh toán riêng biệt. Bài viết của chúng tôi về các API thanh toán ACH tốt nhất giải thích cách ghép nối đó thường trông như thế nào.
Xác thực và thiết lập
Bước 1: Tạo tài khoản nhà phát triển Plaid
Đăng ký tại plaid.com và xác minh email của bạn. Bạn sẽ vào Plaid Dashboard với ba môi trường đã được cấp phép:
- Sandbox: các tổ chức giả, người dùng giả, không tốn phí. Sử dụng
user_good/pass_goodđể đăng nhập. - Development: kết nối ngân hàng thực, giới hạn 100 Item thực, miễn phí.
- Production: kết nối thực, không giới hạn, tính phí theo mức sử dụng.
Bước 2: Lấy khóa của bạn
Từ Dashboard, đi tới Team Settings > Keys. Bạn cần hai giá trị:
client_id: giống nhau trên tất cả các môi trườngsecret: khác nhau cho mỗi môi trường (sandbox, development, production)
Lưu trữ chúng trong các biến môi trường. Không bao giờ commit chúng vào git.
Bước 3: Cài đặt SDK
SDK Node.js chính thức có tại github.com/plaid/plaid-node.
npm install plaid
Bước 4: Khởi tạo máy khách
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);
Thay thế PlaidEnvironments.sandbox bằng .development hoặc .production khi bạn chuyển sang môi trường cao hơn.
Các endpoint cốt lõi
Quy trình Link token
Mọi tích hợp Plaid đều tuân theo cùng một quy trình bốn bước. Bạn thực hiện bước 1 và 3 phía máy chủ; Plaid Link xử lý bước 2 trong trình duyệt hoặc ứng dụng di động của người dùng.
Bước 1: Tạo link_token
const response = await client.linkTokenCreate({
user: { client_user_id: 'user_123' },
client_name: 'Your App',
products: ['auth', 'transactions'],
country_codes: ['US'],
language: 'en',
});
const linkToken = response.data.link_token;
Phiên bản 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": "Your App",
"products": ["auth", "transactions"],
"country_codes": ["US"],
"language": "en"
}'
Bước 2: Mở Plaid Link trên máy khách
Gửi link_token đến frontend của bạn và truyền nó vào Plaid Link SDK. Người dùng chọn ngân hàng của họ, đăng nhập, và Plaid trả về một public_token cho callback onSuccess của bạn.
Bước 3: Đổi public_token
const exchange = await client.itemPublicTokenExchange({
public_token: publicToken,
});
const accessToken = exchange.data.access_token;
const itemId = exchange.data.item_id;
Lưu trữ accessToken phía máy chủ, gắn với người dùng của bạn. Token này có tuổi thọ dài và là thứ bạn sử dụng cho mọi cuộc gọi trong tương lai.
Bước 4: Gọi các endpoint sản phẩm
const accounts = await client.accountsGet({ access_token: accessToken });
const balance = await client.accountsBalanceGet({ access_token: accessToken });
Các endpoint sản phẩm bạn nên biết
- Auth trả về số tài khoản và số định tuyến cho ACH (
/auth/get). - Balance trả về số dư theo thời gian thực, bỏ qua bộ nhớ đệm (
/accounts/balance/get). - Transactions trả về dữ liệu giao dịch đã được làm sạch trong tối đa 24 tháng (
/transactions/sync). - Identity trả về tên chủ tài khoản, email, số điện thoại, địa chỉ (
/identity/get). Nếu trường hợp sử dụng của bạn chỉ là KYC, hãy so sánh nó với các nhà cung cấp chuyên biệt trong danh sách các API KYC tốt nhất của chúng tôi. - Investments trả về tài sản nắm giữ và các giao dịch đầu tư (
/investments/holdings/get). - Liabilities trả về chi tiết khoản vay sinh viên, thẻ tín dụng và thế chấp (
/liabilities/get). - Income trả về dữ liệu bảng lương thông qua Plaid Income (
/credit/payroll_income/get).
Kiểm thử API Plaid với Apidog
Kiểm thử Plaid từ đầu đến cuối rất khó khăn vì bước Link xảy ra trong trình duyệt. Bạn vẫn cần một cách đáng tin cậy để truy cập các endpoint phía máy chủ với các payload hợp lệ, xem cách lỗi xuất hiện và chia sẻ các yêu cầu đang hoạt động với đồng đội. Apidog xử lý điều đó tốt hơn hầu hết các công cụ.
Nhập đặc tả OpenAPI của Plaid vào Apidog và bạn sẽ nhận được mọi endpoint được cấu hình sẵn với các kiểu dữ liệu, các body ví dụ và các tiêu đề xác thực phù hợp. Bạn có thể tạo một bộ biến môi trường sandbox (client_id, secret, access_token) và chuyển sang production chỉ với một cú nhấp chuột. Các yêu cầu theo chuỗi cho phép bạn chạy linkTokenCreate → sandboxPublicTokenCreate → itemPublicTokenExchange → accountsGet trong một luồng duy nhất, để bạn có thể xác minh toàn bộ quá trình bắt tay mà không cần trình duyệt.
Máy chủ mock của Apidog hữu ích khi đội ngũ frontend của bạn cần phản hồi /accounts/get trước khi tích hợp backend của bạn hoàn tất. Nếu bạn đang chuyển từ một công cụ khác, hướng dẫn của chúng tôi về kiểm thử API mà không cần Postman vào năm 2026 bao gồm chi tiết quá trình di chuyển. Tải xuống Apidog và trỏ nó vào đặc tả của Plaid để bắt đầu.
Các lỗi thường gặp và giới hạn tỷ lệ
Các lỗi của Plaid trả về với error_type, error_code và error_message dễ đọc. Xử lý bốn lỗi này trong môi trường production:
INVALID_CREDENTIALS: người dùng đã nhập sai mật khẩu tại ngân hàng. Yêu cầu họ thử lại thông qua chế độ cập nhật Link.ITEM_LOGIN_REQUIRED: ngân hàng đã hủy phiên (thay đổi mật khẩu, xoay MFA). Kích hoạt Link ở chế độ cập nhật để xác thực lại. Bạn sẽ biết về điều này thông qua webhook, không phải một cuộc gọi bị lỗi.RATE_LIMIT_EXCEEDED: bạn đã vượt quá giới hạn trên mỗi Item hoặc mỗi endpoint. Giảm tần suất, sau đó thử lại với độ trễ ngẫu nhiên.PRODUCT_NOT_READY: dữ liệu giao dịch vẫn đang được kéo. Thử lại sau khi webhookINITIAL_UPDATEđược kích hoạt.
Webhooks
Truyền một URL webhook khi bạn tạo link_token và Plaid sẽ POST các bản cập nhật đến đó. Ba loại bạn không thể bỏ qua là SYNC_UPDATES_AVAILABLE (giao dịch mới), ITEM: LOGIN_REQUIRED (cần xác thực lại) và ITEM: ERROR (lỗi vĩnh viễn). Xác minh chữ ký JWT trên mọi webhook trước khi thực hiện hành động.
Giới hạn tỷ lệ
Plaid thực thi giới hạn tỷ lệ trên mỗi Item và mỗi endpoint. Ví dụ, /accounts/balance/get được giới hạn khoảng 5 cuộc gọi mỗi phút cho mỗi Item trong môi trường production. Các giới hạn tổng hợp cấp độ máy khách cũng áp dụng cho các endpoint có tải cao. Quy tắc thực tế: thăm dò webhook, lưu trữ số dư trong vài phút và không bao giờ gọi Plaid từ một đường dẫn yêu cầu hướng người dùng.
Giá của Plaid
Plaid sử dụng mô hình giá bậc thang trả tiền theo mỗi cuộc gọi API trong môi trường production. Khoảng giá:
- Sandbox: miễn phí, không giới hạn.
- Development: miễn phí lên đến 100 Items.
- Production:
- Auth: khoảng 1.50 đô la cho mỗi tài khoản được liên kết, một lần.
- Balance: tính phí theo mỗi cuộc gọi.
- Transactions: phí hàng tháng cho mỗi Item (khoảng 0.30 đô la).
- Identity: tính phí theo mỗi cuộc gọi.
- Investments / Liabilities / Income: phí riêng cho mỗi Item.
Plaid đàm phán giá tùy chỉnh trên một số lượng nhất định, vì vậy bảng giá công khai chỉ là điểm khởi đầu. Kiểm tra trang sản phẩm của Plaid để biết các con số hiện tại.
Câu hỏi thường gặp
access_token tồn tại trong bao lâu?Vô thời hạn, cho đến khi người dùng thu hồi quyền truy cập hoặc ngân hàng hủy phiên. Lưu trữ nó được mã hóa và không hết hạn ở phía bạn.
Tôi có thể sử dụng Plaid chỉ để xác minh danh tính không?Bạn có thể sử dụng Plaid Identity, nhưng nếu nhu cầu chính của bạn là KYC, bạn có thể được phục vụ tốt hơn bởi một sản phẩm xác minh chuyên dụng. Chúng tôi đề cập đến các đánh đổi trong hướng dẫn của chúng tôi về cách sử dụng Stripe Identity API.
Plaid có hỗ trợ các quốc gia ngoài Hoa Kỳ không?Có. Plaid bao gồm Hoa Kỳ, Canada, Vương quốc Anh và hầu hết EU. Hỗ trợ quốc gia khác nhau tùy theo sản phẩm; kiểm tra tham số mã quốc gia trong cuộc gọi /link/token/create.
Điều gì xảy ra nếu người dùng thay đổi mật khẩu ngân hàng của họ?Item chuyển sang trạng thái ITEM_LOGIN_REQUIRED và bạn nhận được một webhook. Kích hoạt Plaid Link ở chế độ cập nhật và người dùng xác thực lại mà không làm mất access_token của họ.
Tôi có thể kiểm thử quy trình Link mà không cần trình duyệt thực không?Có. Endpoint /sandbox/public_token/create bỏ qua hoàn toàn Link và trả về một public_token mà bạn có thể đổi. Sử dụng nó cho các bài kiểm thử tích hợp tự động.
Làm cách nào để xử lý Plaid trong quá trình phát triển cục bộ?Giữ một secret của sandbox trong tệp .env của bạn và kết nối môi trường dev của bạn với PlaidEnvironments.sandbox. Sử dụng tunneling (ngrok, Cloudflare Tunnel) để nhận webhook cục bộ.
