Skip to content

POST /bank-accounts ​

สร้างบัญชีธนาคาร บัญชีจะถูกเชื่อมโยงกับ Branch ที่เรียกใช้โดยอัตโนมัติ จึงมองเห็นได้จาก Branch ของคุณทันที

Endpoint ​

http
POST /bank-accounts

URL เต็ม: https://api.easyslip.com/v2/bank-accounts

การยืนยันตัวตน ​

จำเป็น ดูคู่มือการยืนยันตัวตน

http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Request ​

พารามิเตอร์ ​

พารามิเตอร์ชนิดจำเป็นคำอธิบาย
bankCodestringใช่รหัสที่ถูกต้องจาก GET /banks
bankNumberstringใช่เลขที่บัญชี
nameThstringใช่ชื่อเจ้าของบัญชี (ไทย) ไม่เกิน 255 ตัวอักษร
nameEnstringใช่ชื่อเจ้าของบัญชี (อังกฤษ) ไม่เกิน 255 ตัวอักษร
typestringใช่ประเภทบัญชี — NATURAL หรือ JURISTIC
extraVerifystringไม่ตัวเลือกการตรวจสอบของธนาคาร — ต้องเป็นค่า value ที่ธนาคารนั้นรองรับ (ดู GET /banks)
matchModestringไม่โหมดจับคู่สำหรับ PromptPay — NAME, NUMBER หรือ NAME_NUMBER ใช้ได้กับบัญชี PromptPay เท่านั้น; หากไม่ส่งจะมีผลเป็น NUMBER

Request Body ​

json
{
  "bankCode": "004",
  "bankNumber": "123-4-56789-0",
  "nameTh": "บริษัท ตัวอย่าง จำกัด",
  "nameEn": "EXAMPLE CO., LTD.",
  "type": "JURISTIC"
}

serviceId กำหนดอัตโนมัติ

serviceId ถูกกำหนดจากฝั่งเซิร์ฟเวอร์ตาม API Key ของคุณ — ไม่สามารถกำหนดเองใน Request ได้

Type Definitions ​

typescript
// Request
interface CreateBankAccountRequest {
  bankCode: string;                    // ต้องเป็นรหัสที่ถูกต้องจาก GET /banks
  bankNumber: string;
  nameTh: string;                      // ไม่เกิน 255 ตัวอักษร
  nameEn: string;                      // ไม่เกิน 255 ตัวอักษร
  type: 'NATURAL' | 'JURISTIC';
  extraVerify?: string;                // ต้องเป็นค่า value ที่ธนาคารรองรับ (ดู GET /banks)
  matchMode?: 'NAME' | 'NUMBER' | 'NAME_NUMBER'; // PromptPay เท่านั้น; ไม่ส่ง = มีผลเป็น NUMBER
}

// Response
interface BankAccountResponse {
  success: true;
  data: BankAccount;
}

interface BankAccount {
  id: number;
  bankCode: string;
  bankNumber: string;
  nameTh: string;
  nameEn: string;
  type: 'NATURAL' | 'JURISTIC';
  extraVerify: string | null;
  matchMode: 'NAME' | 'NUMBER' | 'NAME_NUMBER' | null;
  createdAt: string;                   // ISO 8601
  updatedAt: string;                   // ISO 8601
}

// Error Response
interface ErrorResponse {
  success: false;
  error: {
    code: string;
    message: string;
  };
}

ตัวอย่าง ​

bash
curl -X POST https://api.easyslip.com/v2/bank-accounts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "bankCode": "004",
    "bankNumber": "123-4-56789-0",
    "nameTh": "บริษัท ตัวอย่าง จำกัด",
    "nameEn": "EXAMPLE CO., LTD.",
    "type": "JURISTIC"
  }'
javascript
const createBankAccount = async (account) => {
  const response = await fetch('https://api.easyslip.com/v2/bank-accounts', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(account)
  });

  const result = await response.json();

  if (!result.success) {
    throw new Error(result.error.message);
  }

  return result.data;
};

// การใช้งาน
const account = await createBankAccount({
  bankCode: '004',
  bankNumber: '123-4-56789-0',
  nameTh: 'บริษัท ตัวอย่าง จำกัด',
  nameEn: 'EXAMPLE CO., LTD.',
  type: 'JURISTIC'
});

console.log('สร้างบัญชีแล้ว:', account.id);
php
function createBankAccount(array $account): array
{
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'https://api.easyslip.com/v2/bank-accounts',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => [
            'Authorization: Bearer YOUR_API_KEY',
            'Content-Type: application/json'
        ],
        CURLOPT_POSTFIELDS => json_encode($account)
    ]);

    $response = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($response, true);

    if (!$result['success']) {
        throw new Exception($result['error']['message']);
    }

    return $result['data'];
}

// การใช้งาน
$account = createBankAccount([
    'bankCode' => '004',
    'bankNumber' => '123-4-56789-0',
    'nameTh' => 'บริษัท ตัวอย่าง จำกัด',
    'nameEn' => 'EXAMPLE CO., LTD.',
    'type' => 'JURISTIC'
]);

echo "สร้างบัญชีแล้ว: " . $account['id'];
python
import requests

def create_bank_account(account: dict) -> dict:
    response = requests.post(
        'https://api.easyslip.com/v2/bank-accounts',
        headers={
            'Authorization': 'Bearer YOUR_API_KEY',
            'Content-Type': 'application/json'
        },
        json=account
    )

    result = response.json()

    if not result['success']:
        raise Exception(result['error']['message'])

    return result['data']

# การใช้งาน
account = create_bank_account({
    'bankCode': '004',
    'bankNumber': '123-4-56789-0',
    'nameTh': 'บริษัท ตัวอย่าง จำกัด',
    'nameEn': 'EXAMPLE CO., LTD.',
    'type': 'JURISTIC'
})

print('สร้างบัญชีแล้ว:', account['id'])

Response ​

สำเร็จ (201) ​

json
{
  "success": true,
  "data": {
    "id": 12345,
    "bankCode": "004",
    "bankNumber": "123-4-56789-0",
    "nameTh": "บริษัท ตัวอย่าง จำกัด",
    "nameEn": "EXAMPLE CO., LTD.",
    "type": "JURISTIC",
    "extraVerify": null,
    "matchMode": null,
    "createdAt": "2024-01-15T14:30:00+07:00",
    "updatedAt": "2024-01-15T14:30:00+07:00"
  }
}

Error Responses ​

Validation Error (400) ​

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "bankNumber: Too small: expected string to have >=1 characters"
  }
}

รหัสธนาคารไม่ถูกต้อง (400) ​

json
{
  "success": false,
  "error": {
    "code": "INVALID_BANK_CODE",
    "message": "The provided bankCode is not supported"
  }
}

extraVerify ไม่ถูกต้อง (400) ​

json
{
  "success": false,
  "error": {
    "code": "INVALID_EXTRA_VERIFY",
    "message": "The provided extraVerify is not a valid option for this bank"
  }
}

matchMode ไม่ถูกต้อง (400) ​

json
{
  "success": false,
  "error": {
    "code": "INVALID_MATCH_MODE",
    "message": "matchMode is supported only for PromptPay accounts"
  }
}

บัญชีซ้ำ (409) ​

json
{
  "success": false,
  "error": {
    "code": "BANK_ACCOUNT_DUPLICATE",
    "message": "An active account with the same bank code and number already exists"
  }
}

โหมดการจับคู่ PromptPay ​

matchMode กำหนดว่าฟิลด์ใดของบัญชีต้องตรงกับสลิป PromptPay:

ค่าเงื่อนไขการจับคู่
NAMEชื่อผู้รับในสลิปตรงกับ nameTh หรือ nameEn
NUMBERเลข proxy account ในสลิปตรงกับ bankNumber
NAME_NUMBERทั้งชื่อผู้รับและเลข proxy account ต้องตรงกัน
json
{
  "bankCode": "PROMPTPAY",
  "bankNumber": "0812345678",
  "nameTh": "นาย ทดสอบ",
  "nameEn": "TEST USER",
  "type": "NATURAL",
  "extraVerify": "MSISDN",
  "matchMode": "NAME_NUMBER"
}

extraVerify ยังเป็นเงื่อนไขบังคับของการจับคู่

matchMode ไม่ได้แทนที่ extraVerify ไม่ว่าจะใช้โหมดใด ประเภท PromptPay proxy ในสลิปยังต้องตรงกับค่า extraVerify ของบัญชี (MSISDN, NATID, EWALLETID หรือ BILLERID) ก่อนระบบจึงจะตรวจชื่อ/เลขตามโหมด

เพื่อรองรับไคลเอนต์เดิม สามารถไม่ส่ง matchMode ได้ ค่าเดิมที่จัดเก็บอาจเป็น null แต่ Response และพฤติกรรมการจับคู่จะแสดง/ใช้ค่า effective เป็น NUMBER

หมายเหตุ ​

  • บัญชีใหม่จะถูกเชื่อมโยงกับ Branch ที่เรียกใช้โดยอัตโนมัติ — ไม่ต้องเชื่อมโยงแยกอีกเพื่อใช้งานจาก Branch นี้
  • bankCode ต้องเป็นรหัสที่ถูกต้องจาก GET /banks
  • extraVerify เป็นตัวเลือก หากส่งมา ต้องเป็นค่า value ตัวใดตัวหนึ่งที่ธนาคารปลายทางรองรับ มิฉะนั้นจะได้รับ 400 INVALID_EXTRA_VERIFY โดยชุดค่าที่ใช้ได้จะขึ้นกับแต่ละธนาคาร ให้เรียก GET /banks แล้วอ่านตัวเลือก extraVerify ของธนาคารนั้น
  • ส่ง matchMode ได้เฉพาะเมื่อ bankCode เป็น PROMPTPAY; หากส่งให้ธนาคารอื่นจะได้รับ 400 INVALID_MATCH_MODE
  • บัญชีซ้ำหมายถึงบัญชีที่ใช้งานอยู่ซึ่งมี bankCode + bankNumber เดียวกันภายใน Service ของคุณ

Bank Slip Verification API for Thai Banking