DEV Community

Cover image for วิธีใช้ Plaid API ฉบับนักพัฒนาปี 2026
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

วิธีใช้ Plaid API ฉบับนักพัฒนาปี 2026

แอปพลิเคชัน Fintech สมัยใหม่มักไม่เริ่มต้นจากศูนย์อีกต่อไป เมื่อผู้ใช้เชื่อมโยงบัญชีเช็คกับแอปของคุณ Plaid จะเข้ามาเป็นตัวกลาง แปลงการเข้าสู่ระบบธนาคารให้เป็น JSON ที่พร้อมใช้งานสำหรับแบ็กเอนด์ของคุณ Plaid API ขับเคลื่อนการเชื่อมโยงบัญชี ตรวจสอบยอดคงเหลือ ประวัติธุรกรรม และยืนยันตัวตนให้กับแอปชั้นนำ เช่น Venmo, Robinhood, Chime

ทดลองใช้ Apidog วันนี้

คู่มือนี้จะเน้นการใช้งาน Plaid API สำหรับนักพัฒนา: วิธีรับคีย์ วิธีใช้ Link token แบบครบวงจร ผลิตภัณฑ์ที่ควรรู้ และการแก้ปัญหาข้อผิดพลาดที่เกิดขึ้นจริง พร้อมตัวอย่างการทดสอบด้วย Apidog เพื่อให้คุณมั่นใจว่าข้อมูล request ถูกต้อง หากต้องการรายละเอียดเพิ่มเติม ควรเปิด เอกสาร Plaid อย่างเป็นทางการ ควบคู่ไปด้วย

Open banking มีการแข่งขันสูง Plaid เป็นหนึ่งในหลายตัวเลือก หากยังเลือกไม่ได้ คู่มือ API Open banking ที่ดีที่สุด จะช่วยเปรียบเทียบ สำหรับโพสต์นี้ สมมติว่าคุณเลือก Plaid แล้วและพร้อมนำไปใช้งาน

สรุปย่อ (TL;DR)

  • Plaid เป็นตัวกลางรวมข้อมูลการเงิน เชื่อมต่อกับธนาคารกว่า 12,000 แห่งในสหรัฐฯ แคนาดา และยุโรป
  • มี 3 สภาพแวดล้อมพร้อมใช้งาน: Sandbox (ฟรี, ข้อมูลจำลอง), Development (100 รายการจริงแรกฟรี), Production (คิดเงินตามการใช้งาน)
  • โฟลว์เชื่อมโยงประกอบด้วย 4 ขั้นตอน: สร้าง link_token (เซิร์ฟเวอร์), เปิด Plaid Link (ไคลเอนต์), แลก public_token เป็น access_token, เรียก endpoint ผลิตภัณฑ์
  • ผลิตภัณฑ์หลัก: Auth, Balance, Transactions, Identity, Investments, Liabilities, Income เลือกเปิดใช้งานต่อ Item
  • ข้อผิดพลาดที่เจอบ่อย: ITEM_LOGIN_REQUIRED, INVALID_CREDENTIALS ตรวจสอบและแก้ไขด้วย Webhook
  • มี Rate Limit ต่อ Item และต่อไคลเอนต์ แนะนำให้อ่านข้อมูลเป็น batch และฟัง Webhook แทนการ query loop

Plaid คืออะไร?

Plaid เป็นโครงสร้างพื้นฐาน fintech ที่เชื่อมต่อแอปกับธนาคารของผู้ใช้ เมื่อผู้ใช้กรอกข้อมูลเข้าสู่ Plaid Link Plaid จะเชื่อมต่อกับธนาคาร (ผ่าน API หรือ reverse engineering หน้าเว็บ) ดึงข้อมูล ปรับมาตรฐาน และส่ง JSON กลับมาให้แอปของคุณ โดยคุณไม่ต้องจัดการข้อมูล credential โดยตรง Plaid ถือการเชื่อมต่อ (Item) และให้ access_token สำหรับใช้ขอข้อมูลในอนาคต

Item หนึ่งคือการเชื่อมต่อหนึ่งชุดกับสถาบันการเงินหนึ่งแห่ง (แต่รวมหลายบัญชีได้ เช่น เช็ค ออมทรัพย์ เครดิตการ์ด) Plaid ครอบคลุมบัญชีผู้บริโภค บัตรเครดิต เงินกู้ การลงทุน และข้อมูลเงินเดือน แต่ไม่ได้โอนเงินเอง ถ้าต้องการโอนเงิน ACH ให้ใช้ Plaid Auth คู่กับ Payment Processor อื่น (ดู คู่มือ ACH API)

การยืนยันตัวตนและการตั้งค่า

ขั้นตอนที่ 1: สร้างบัญชีนักพัฒนา Plaid

  • ลงทะเบียนที่ plaid.com และยืนยันอีเมล
  • เข้าสู่ Plaid Dashboard จะมี 3 สภาพแวดล้อม:
    • Sandbox: ธนาคารปลอม ใช้ user_good / pass_good ฟรี
    • Development: ธนาคารจริง จำกัด 100 Live Items ฟรี
    • Production: ธนาคารจริง ไม่จำกัด คิดเงินตามปริมาณ

ขั้นตอนที่ 2: ดึงคีย์ของคุณ

  • บน Dashboard ไปที่ Team Settings > Keys
  • คุณจะได้ 2 ค่า:
    • client_id: เหมือนกันทุก environment
    • secret: เฉพาะแต่ละ environment (sandbox, development, production)
  • เก็บใน Environment Variable ห้าม commit ไป git

ขั้นตอนที่ 3: ติดตั้ง SDK

Node.js SDK ทางการ: github.com/plaid/plaid-node

npm install plaid
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 4: เริ่มต้นไคลเอนต์

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);
Enter fullscreen mode Exit fullscreen mode

Core Endpoints

ขั้นตอน Link token

กระบวนการเชื่อม Plaid มี 4 ขั้นตอน (ฝั่งเซิร์ฟเวอร์ทำขั้นที่ 1,3 ฝั่งไคลเอนต์ทำขั้นที่ 2):

ขั้นตอนที่ 1: สร้าง 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;
Enter fullscreen mode Exit fullscreen mode

หรือใช้ 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"
  }'
Enter fullscreen mode Exit fullscreen mode

ขั้นตอนที่ 2: เปิด Plaid Link ในไคลเอนต์

  • ส่ง link_token ไป frontend
  • เรียก Plaid Link SDK ให้ผู้ใช้เลือกธนาคาร กรอกข้อมูล
  • จะได้ public_token กลับมาที่ callback onSuccess

ขั้นตอนที่ 3: แลกเปลี่ยน public_token

const exchange = await client.itemPublicTokenExchange({
  public_token: publicToken,
});

const accessToken = exchange.data.access_token;
const itemId = exchange.data.item_id;
Enter fullscreen mode Exit fullscreen mode
  • เก็บ accessToken ฝั่งเซิร์ฟเวอร์ ผูกกับ user ของคุณ ใช้สำหรับเรียกข้อมูลในอนาคต

ขั้นตอนที่ 4: เรียก endpoint ผลิตภัณฑ์

const accounts = await client.accountsGet({ access_token: accessToken });
const balance = await client.accountsBalanceGet({ access_token: accessToken });
Enter fullscreen mode Exit fullscreen mode

Endpoints ของผลิตภัณฑ์ที่คุณควรรู้

  • Auth: คืนหมายเลขบัญชี/เส้นทางสำหรับ ACH (/auth/get)
  • Balance: คืนยอดคงเหลือเรียลไทม์ (/accounts/balance/get)
  • Transactions: รายการธุรกรรมย้อนหลังสูงสุด 24 เดือน (/transactions/sync)
  • Identity: ข้อมูลเจ้าของบัญชี (ชื่อ, อีเมล, โทรศัพท์, ที่อยู่) (/identity/get) หาก KYC เป็น use case หลัก ดู คู่มือ KYC API
  • Investments: ข้อมูลการถือครองและธุรกรรมลงทุน (/investments/holdings/get)
  • Liabilities: ข้อมูลเงินกู้นักเรียน, บัตรเครดิต, สินเชื่อบ้าน (/liabilities/get)
  • Income: ข้อมูลเงินเดือนผ่าน Plaid Income (/credit/payroll_income/get)

การทดสอบ Plaid API ด้วย Apidog

การทดสอบ Plaid แบบ end-to-end ยุ่งยาก เพราะขั้นตอน Link ต้องใช้เบราว์เซอร์ แต่คุณยังสามารถเทสต์ฝั่งเซิร์ฟเวอร์ได้สะดวกด้วย Apidog

  • Import OpenAPI spec ของ Plaid เข้า Apidog
  • จะได้ endpoint ทั้งหมด พร้อมตัวอย่าง body และ header
  • สร้าง environment variable เช่น client_id, secret, access_token แล้วสลับระหว่าง sandbox/production ง่ายๆ
  • ใช้ chain request ทดสอบ flow เต็ม: linkTokenCreatesandboxPublicTokenCreateitemPublicTokenExchangeaccountsGet ไม่ต้องเปิดเบราว์เซอร์
  • Mock server ของ Apidog มีประโยชน์สำหรับทีม frontend ที่ต้องการ response /accounts/get ก่อน backend เสร็จ
  • หากย้ายจากเครื่องมืออื่น ดู คู่มือย้ายจาก Postman
  • ดาวน์โหลด Apidog แล้ว import spec ของ Plaid เพื่อเริ่มต้น

ข้อผิดพลาดทั่วไปและการจำกัดอัตรา

Plaid คืน error พร้อม error_type, error_code, error_message ควร handle error หลักเหล่านี้:

  • INVALID_CREDENTIALS: ผู้ใช้กรอกรหัสผิด ให้ลองใหม่ผ่าน Plaid Link (โหมดอัปเดต)
  • ITEM_LOGIN_REQUIRED: ธนาคาร revoke session (เช่น เปลี่ยนรหัสผ่าน, MFA) ต้องยืนยันตัวตนใหม่ (Webhook จะแจ้งเตือน)
  • RATE_LIMIT_EXCEEDED: เกิน Rate Limit ต่อ Item/endpoint ให้ backoff และ retry พร้อม jitter
  • PRODUCT_NOT_READY: ข้อมูลยังไม่พร้อม (เช่น ธุรกรรมกำลัง sync) รอ webhook INITIAL_UPDATE แล้วค่อย retry

Webhooks

  • ส่ง webhook URL ตอนสร้าง link_token
  • Plaid จะ POST แจ้ง update ได้แก่:
    • SYNC_UPDATES_AVAILABLE: ธุรกรรมใหม่
    • ITEM: LOGIN_REQUIRED: ต้องยืนยันตัวตนใหม่
    • ITEM: ERROR: ข้อผิดพลาดถาวร
  • ตรวจสอบ JWT signature ทุก webhook ก่อน process

การจำกัดอัตรา

  • Plaid มี rate limit ต่อ Item/endpoint เช่น /accounts/balance/get ~5 ครั้ง/นาที/Item
  • มี rate limit รวมระดับไคลเอนต์สำหรับ endpoint ที่ใช้งานหนัก
  • แนวทาง: ใช้ webhook, แคชข้อมูลยอดคงเหลือ 2-3 นาที, หลีกเลี่ยงการเรียก Plaid ตรงจาก user-facing route

ราคา Plaid

Plaid ใช้ model จ่ายตามการใช้งาน (production):

  • Sandbox: ฟรี
  • Development: ฟรี 100 รายการ (Items)
  • Production:
    • Auth: ~ $1.50 ต่อบัญชีที่เชื่อมโยง (จ่ายครั้งเดียว)
    • Balance: คิดตามการเรียก
    • Transactions: ค่าธรรมเนียมรายเดือนต่อรายการ (~ $0.30)
    • Identity: คิดตามการเรียก
    • Investments / Liabilities / Income: คิดแยกรายการ
  • ปริมาณมากสามารถขอราคาพิเศษ ตรวจสอบ หน้าผลิตภัณฑ์ Plaid สำหรับราคาปัจจุบัน

คำถามที่พบบ่อย (FAQ)

access_token มีอายุการใช้งานนานเท่าใด?

ไม่มีหมดอายุจนกว่าผู้ใช้เพิกถอนหรือธนาคาร revoke session เก็บเข้ารหัสไว้ ไม่ต้องตั้งหมดอายุเอง

ใช้ Plaid เพื่อยืนยันตัวตนอย่างเดียวได้ไหม?

ใช้ Plaid Identity ได้ แต่ถ้า use case คือ KYC จริงๆ บริการเฉพาะทางอาจเหมาะกว่า (ดู คู่มือ Stripe Identity API)

Plaid รองรับประเทศไหนบ้าง?

สหรัฐฯ แคนาดา สหราชอาณาจักร และส่วนใหญ่ของยุโรป การรองรับขึ้นกับแต่ละผลิตภัณฑ์ ดูรหัสประเทศใน /link/token/create

หากผู้ใช้เปลี่ยนรหัสผ่านธนาคาร?

Item จะกลายเป็น ITEM_LOGIN_REQUIRED คุณจะได้รับ webhook ให้ trigger Plaid Link (update mode) ให้ผู้ใช้ยืนยันใหม่ โดยไม่ต้องเปลี่ยน access_token

ทดสอบโฟลว์ Link โดยไม่ต้องใช้เบราว์เซอร์ได้หรือไม่?

ได้ ใช้ endpoint /sandbox/public_token/create เพื่อข้ามขั้นตอน Plaid Link และรับ public_token สำหรับ integration test

จัดการ Plaid ใน local dev อย่างไร?

เก็บ sandbox secret ใน .env แล้วชี้ไปที่ PlaidEnvironments.sandbox ใช้ tunneling (ngrok, Cloudflare Tunnel) เพื่อรับ webhook ในเครื่อง

Top comments (0)