Skip to content

PATCH /bank-accounts/:id ​

แก้ไขบัญชีธนาคาร เป็นการแก้ไขบางส่วน (partial update) — ส่งเฉพาะฟิลด์ที่ต้องการเปลี่ยน เข้าถึงได้เฉพาะเมื่อบัญชีเชื่อมโยงกับ Branch ที่เรียกใช้ มิฉะนั้นจะได้รับ 404

Endpoint ​

http
PATCH /bank-accounts/:id

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

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

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

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

Request ​

Path Parameters ​

พารามิเตอร์ชนิดจำเป็นคำอธิบาย
idnumberใช่id ของบัญชีธนาคาร

Body Parameters ​

ทุกฟิลด์เป็นตัวเลือก ส่งเฉพาะฟิลด์ที่ต้องการแก้ไข

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

Request Body ​

json
{
  "nameEn": "EXAMPLE COMPANY LIMITED",
  "extraVerify": "REF-2024"
}

Type Definitions ​

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

// 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 PATCH https://api.easyslip.com/v2/bank-accounts/12345 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "nameEn": "EXAMPLE COMPANY LIMITED"
  }'
javascript
const updateBankAccount = async (id, changes) => {
  const response = await fetch(`https://api.easyslip.com/v2/bank-accounts/${id}`, {
    method: 'PATCH',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(changes)
  });

  const result = await response.json();

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

  return result.data;
};

// การใช้งาน
const account = await updateBankAccount(12345, {
  nameEn: 'EXAMPLE COMPANY LIMITED'
});
php
function updateBankAccount(int $id, array $changes): array
{
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'https://api.easyslip.com/v2/bank-accounts/' . $id,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST => 'PATCH',
        CURLOPT_HTTPHEADER => [
            'Authorization: Bearer YOUR_API_KEY',
            'Content-Type: application/json'
        ],
        CURLOPT_POSTFIELDS => json_encode($changes)
    ]);

    $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 = updateBankAccount(12345, [
    'nameEn' => 'EXAMPLE COMPANY LIMITED'
]);
python
import requests

def update_bank_account(account_id: int, changes: dict) -> dict:
    response = requests.patch(
        f'https://api.easyslip.com/v2/bank-accounts/{account_id}',
        headers={
            'Authorization': 'Bearer YOUR_API_KEY',
            'Content-Type': 'application/json'
        },
        json=changes
    )

    result = response.json()

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

    return result['data']

# การใช้งาน
account = update_bank_account(12345, {
    'nameEn': 'EXAMPLE COMPANY LIMITED'
})

Response ​

สำเร็จ (200) ​

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

Error Responses ​

รหัสธนาคารไม่ถูกต้อง (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"
  }
}

ไม่พบบัญชีธนาคาร (404) ​

json
{
  "success": false,
  "error": {
    "code": "BANK_ACCOUNT_NOT_FOUND",
    "message": "Bank account not found"
  }
}

การแก้ไข extraVerify ​

extraVerify จะถูกตรวจสอบกับตัวเลือกที่ธนาคารปลายทางรองรับ (ค่า value จาก GET /banks) พฤติกรรมขึ้นกับว่าคุณเปลี่ยน bankCode ด้วยหรือไม่

bankCode เดิม (หรือไม่ได้ส่ง bankCode) ​

สิ่งที่ส่งผลลัพธ์
ค่า extraVerify ที่ถูกต้องตั้งค่า
extraVerify: nullล้างค่า
ไม่ส่ง extraVerifyคงค่าเดิมไว้
ค่าที่ไม่ถูกต้อง400 INVALID_EXTRA_VERIFY

เปลี่ยน bankCode ​

เมื่อ bankCode เปลี่ยน ระบบจะ re-resolve extraVerify กับธนาคารใหม่:

ธนาคารใหม่สิ่งที่ส่งผลลัพธ์
มีตัวเลือกค่า extraVerify ที่ถูกต้องตั้งค่า
มีตัวเลือกไม่ส่ง extraVerify และค่าเดิมใช้กับธนาคารใหม่ไม่ได้400 INVALID_EXTRA_VERIFY — ต้องส่งค่าที่ถูกต้องสำหรับธนาคารใหม่
ไม่มีตัวเลือก(อะไรก็ตาม)ล้างค่า (ตั้งเป็น null)

การแก้ไข matchMode ​

matchMode ใช้ได้เฉพาะเมื่อ bankCode หลังแก้ไขเป็น PROMPTPAY:

การแก้ไขผลลัพธ์
บัญชี PromptPay + ส่ง NAME, NUMBER หรือ NAME_NUMBERบันทึกโหมดที่เลือก
บัญชี PromptPay + ไม่ส่ง matchModeคงโหมดเดิม; ค่า legacy null ยังมีผลเป็น NUMBER
เปลี่ยนธนาคารอื่นเป็น PromptPay + ไม่ส่ง matchModeใช้ effective mode NUMBER
เปลี่ยน PromptPay เป็นธนาคารอื่นล้าง matchMode เป็น null
ส่ง matchMode ให้บัญชีที่ไม่ใช่ PromptPay400 INVALID_MATCH_MODE

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

ทั้งสามโหมดยังบังคับให้ประเภท PromptPay proxy ในสลิปตรงกับค่า extraVerify ของบัญชี matchMode เปลี่ยนเฉพาะการตรวจชื่อ/เลขในขั้นถัดไป

Response ของบัญชี PromptPay จะคืน effective mode เสมอ ดังนั้นข้อมูลเดิมที่จัดเก็บ matchMode: null จะคืนเป็น "matchMode": "NUMBER"; บัญชีที่ไม่ใช่ PromptPay จะคืน "matchMode": null

หมายเหตุ ​

  • เฉพาะฟิลด์ที่ส่งมาเท่านั้นที่จะถูกเปลี่ยน ฟิลด์ที่ไม่ได้ส่งจะคงค่าเดิมไว้
  • หากระบุ bankCode มา ระบบจะตรวจสอบกับ GET /banks
  • extraVerify รับค่า value ที่ถูกต้องเพื่อตั้งค่า, null เพื่อล้างค่า หรือไม่ส่งเพื่อคงค่าเดิม ดูหัวข้อ "การแก้ไข extraVerify" ด้านบนสำหรับพฤติกรรมเมื่อเปลี่ยน bankCode
  • matchMode รับค่า NAME, NUMBER หรือ NAME_NUMBER สำหรับ PromptPay เท่านั้น ไม่ส่งเพื่อคงโหมดเดิม
  • คืนค่า 404 BANK_ACCOUNT_NOT_FOUND หากไม่พบบัญชี หรือบัญชีไม่ได้เชื่อมโยงกับ Branch ของคุณ

Bank Slip Verification API for Thai Banking