Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Slip Normal

ดึงสลิปเงินเดือนของพนักงานในรอบเดือนที่ระบุ ส่งคืนได้หลายรูปแบบ ทั้ง PDF (Inline / Download / File URL) และข้อมูล JSON รายรับ-รายหัก พร้อมรองรับงวดแบ่งจ่าย (Split Payroll) และการเข้ารหัส PDF ด้วยวันเกิดพนักงาน

Endpoint

GET /api/v1/open-apis/salary/get-data-filter?path_action=slip_normal

สิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลเงินเดือนของพนักงาน (payroll:read:self)

Request Parameters

Required Parameters

ParameterTypeRequiredDescriptionExample
employee_codestringYesรหัสพนักงาน"EMP001"

Optional Parameters

ParameterTypeDefaultDescriptionExample
year_monthstringรอบปัจจุบันรอบเงินเดือน (YYYY-MM)"2026-02"
outputstring"I"รูปแบบผลลัพธ์: "I", "D", "F", "J""F"
language_codestring"TH"ภาษาที่ใช้แสดงผล ("TH" / "EN") ใช้เมื่อ output = "J""TH"
slip_encryptionstringnullเข้ารหัส PDF: "Y" (เข้ารหัส) หรือไม่ระบุ"Y"
master_salary_split_seqintegernullงวดแบ่งจ่าย (Split Payroll): 1, 2, 3, 4 หากไม่ระบุจะถือเป็นเงินเดือนปกติ1

output Values

ValueDescription
"I"Inline ส่งคืน PDF เป็น base64 encoded string (ค่าเริ่มต้น)
"D"Download ส่งคืนเป็นไฟล์ PDF สำหรับดาวน์โหลด
"F"File URL ส่งคืน URL ของไฟล์ PDF
"J"JSON ส่งคืนข้อมูลรายรับ-รายหัก พร้อมยอดสุทธิเป็น JSON

Validation Rules

RuleDescription
employee_codeต้องมีอยู่ในระบบ มิฉะนั้นจะได้รับ HTTP 404
year_monthต้องอยู่ในรูปแบบ YYYY-MM และต้องมีรอบเดือนนั้นในระบบ
outputต้องเป็น "I", "D", "F" หรือ "J" เท่านั้น
slip_encryptionต้องเป็น "Y" หรือไม่ระบุเท่านั้น
master_salary_split_seqถ้าระบุ ต้องเป็นตัวเลข 1, 2, 3 หรือ 4 และต้องมีงวดแบ่งจ่ายนั้นถูกสร้างไว้
ข้อกำหนดวันเกิดหาก slip_encryption = "Y" พนักงานต้องมีข้อมูลวันเกิดในระบบ

แนะนำให้ใช้ output=F สำหรับ Mobile App เพื่อลดขนาด payload และแสดง PDF ใน WebView ได้ง่าย หรือใช้ output=J หากต้องการแสดงผลแบบ Custom UI

ก่อนเรียก API นี้ ควรเรียก Calculate Month ก่อน เพื่อให้มีข้อมูลสลิปในระบบ


Response Format

Success Response - output = “F” (File URL)

{ "code": 200, "message": "Success", "payload": "https://openapi.humansoft.co.th/exports/slip_202602_EMP001.pdf" }

Success Response - output = “I” (Inline)

{ "code": 200, "message": "Success", "payload": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIK..." }

Success Response - output = “D” (Download)

ส่งคืนเป็นไฟล์ PDF พร้อม HTTP headers:

  • Content-Type: application/pdf
  • Content-Disposition: attachment; filename="slip_YYYYMM_EMPCODE.pdf"

Success Response - output = “J” (JSON)

{ "code": 200, "message": "Success", "payload": { "slip": { "master_salary_month": "2026-01", "master_salary_split_seq": 1 }, "income_items": [ { "code": "ST0014", "display_name": "Incentive", "amount": 2000, "sort_order": 1, "is_visible": true }, { "code": "ST0012", "display_name": "โบนัส", "amount": 8000, "sort_order": 7, "is_visible": true } ], "deduction_items": [ { "code": "social_insurance", "display_name": "ประกันสังคม", "amount": 875, "sort_order": 10, "is_visible": true }, { "code": "tax", "display_name": "ภาษี", "amount": 385.21, "sort_order": 11, "is_visible": true } ], "total_income": 16300, "total_deduction": 5610.21, "total_net": 45689.79, "advance_pay": 0, "remaining": 45689.79 } }

Key Response Fields

outputpayload TypeDescription
"F"stringURL ของไฟล์ PDF
"I"stringPDF content เป็น base64 encoded string
"D"binaryไฟล์ PDF
"J"objectข้อมูลสลิปและรายการรายรับ-รายหักแบบ JSON

Payload Fields เมื่อ output = "J"

FieldTypeDescription
slipobjectข้อมูลสลิปหลัก (รวมข้อมูลงวดแบ่งจ่ายเมื่อระบุ master_salary_split_seq)
income_itemsarrayรายการรายรับ
deduction_itemsarrayรายการรายหัก
total_incomenumberรวมรายรับ
total_deductionnumberรวมรายหัก
total_netnumberยอดสุทธิ
advance_paynumberยอดเบิกล่วงหน้า
remainingnumberยอดคงเหลือ

income_items[] / deduction_items[]

FieldTypeDescription
codestringรหัสรายการ (เช่น ST0014, tax)
display_namestringชื่อแสดงผล (รองรับชื่อ alias ที่ตั้งค่าไว้)
amountnumberจำนวนเงิน
sort_orderintegerลำดับการแสดงผล
is_visiblebooleantrue = แสดงผลบนสลิป

Error Response

{ "code": 404, "message": "Slip not found for employee: EMP001, month: 2026-02", "payload": [] }
HTTP Statusสาเหตุวิธีแก้
400year_month ไม่ถูกต้อง หรือไม่มีวันเกิดพนักงานสำหรับเข้ารหัสตรวจสอบรูปแบบ YYYY-MM และข้อมูลวันเกิดพนักงาน
401API Key ไม่ถูกต้องหรือไม่ได้ส่งตรวจสอบ Header Ocp-Apim-Subscription-Key
404ไม่พบพนักงาน, ไม่พบรอบเดือน, ไม่พบสลิป หรือไม่พบงวดแบ่งจ่ายตรวจสอบ employee_code, year_month, master_salary_split_seq หรือเรียก Calculate Month ก่อน
500ไม่พบ template สลิป หรือระบบขัดข้องติดต่อผู้ดูแลระบบ

Code Examples

# ดูสลิปแบบ File URL (แนะนำสำหรับ Mobile) curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-02&output=F" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" # ดูสลิปแบบเข้ารหัส PDF ด้วยวันเกิด (ddmmyyyy) curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-02&output=F&slip_encryption=Y" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" # ดูสลิปเป็นข้อมูล JSON (ภาษาไทย) curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-02&output=J&language_code=TH" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" # ดูสลิปงวดแบ่งจ่าย (Split Payroll งวดที่ 1) curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-01&output=I&master_salary_split_seq=1" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"

Split Payroll (งวดแบ่งจ่าย)

กรณีองค์กรเปิดใช้งานการแบ่งจ่ายเงินเดือน พนักงานจะได้รับเงินเดือนเป็นหลายงวดในเดือนเดียวกัน (เช่น งวดที่ 1 และงวดที่ 2)

  • ระบุ master_salary_split_seq (1, 2, 3, 4) เพื่อเลือกงวดที่ต้องการ
  • หากไม่ระบุหรือระบุเป็น null จะดึงสลิปเงินเดือนปกติ (เต็มเดือน)
  • ต้องมีงวดแบ่งจ่ายถูกสร้างไว้ในระบบก่อน มิฉะนั้นจะได้รับ HTTP 404
  • ข้อมูล JSON ที่ส่งกลับ (output=J) จะรวมฟิลด์ master_salary_split_seq ในออบเจ็กต์ slip

Notes

  • หากระบุ slip_encryption = "Y" ระบบจะเข้ารหัส PDF ด้วยวันเกิดพนักงาน (รูปแบบ ddmmyyyy เช่น 15011990)
  • พนักงานต้องมีวันเกิดในระบบเพื่อใช้ฟีเจอร์เข้ารหัส
  • การสร้าง PDF อาจใช้เวลา ขึ้นอยู่กับ template และจำนวนรายการ
  • แนะนำให้ cache URL สำหรับ output = "F" เพื่อไม่ต้องสร้าง PDF ซ้ำ
  • หากต้องการนำข้อมูลไปแสดงเป็น Custom UI ใน Mobile App แนะนำให้ใช้ output = "J" เพื่อรับข้อมูลรายรับ-รายหักแบบ structured

  • Calculate Month - คำนวณเงินเดือน ควรเรียกก่อน slip_normal
  • Salary Summary - ดูสรุปเงินเดือนก่อนดูสลิป
  • Daily In Month - ดูรายละเอียดการคำนวณ
  • Current Month - ดูรอบเดือนปัจจุบัน เพื่อหา year_month
Last updated on