e-Withholding Tax โปรเจค KBTG ที่มากับไทม์ไลน์สุดกระชั้นและการแข่งขันกับเวลา

Kris B
KBTG Life
Published in
3 min readMay 12, 2022

ดำดิ่งลงมาในโลกของบริการ KBank ที่ Powered by KBTG ไปอีกขั้น คราวนี้มาที่เรื่องใกล้ตัวอย่างการหักภาษี ณ ที่จ่ายกัน e-Withholding Tax เป็นบริการจากกรมสรรพากรที่ช่วยให้ผู้จ่ายเงินสามารถโอนจ่ายเงินและหักภาษี ณ ที่จ่ายแบบเบ็ดเสร็จจบในขั้นตอนเดียว โดยธนาคารจะทำหน้าที่นำส่งเงินและข้อมูลให้กับทางกรมสรรพากรผ่านช่องทางอิเล็กทรอนิกส์ภายใน 4 วันทำการ หรือ “T+4” (สปอยว่าจะได้เห็นคำนี้บ่อยๆ ในบทความแน่นอน) ขึ้นชื่อว่าอิเล็กทรอนิกส์ จะพ้นมือ KBTG ไปได้ยังไง โปรเจคนี้บอกเลยว่านอกจากจะต้องแข่งกับเวลา ทั้งในมุมของทีมงานและการทำงานของตัวระบบ รายละเอียดยังต้องเป๊ะด้วย เรามาทำความรู้จักกับกระบวนการทำงาน เรื่องราวความเป็นมา และความท้าทายที่พบเจอจากสมาชิกทีม e-Withholding Tax สุดโหดนี้กันค่ะ นำทัพโดยพี่ตัส Head of Delivery Management พร้อมด้วย 3 หนุ่มอย่างพี่สม Advanced Software Engineer พี่ทีและพี่ป๊อด Senior Software Engineer

source: kasikornbank.com

จุดเริ่มต้นของ e-Withholding Tax

พี่ตัส: ระบบ e-Withholding Tax เป็นระบบใหม่ที่เราสร้างขึ้นมาเพื่อรองรับการส่งข้อมูลภาษีให้กับทางกรมสรรพากรเพื่อใช้ในการหักภาษี ณ ที่จ่าย โดยในปี 2020 ทางสมาคมธนาคารไทยได้รับโจทย์จากกรมสรรพากรมาว่าอยากจะทำบริการดังกล่าวขึ้น จึงมีการคัดเลือกธนาคารใหญ่ๆ รวมถึง KBank เข้าไปหารือกัน พี่เป็นตัวแทนจาก KBTG เข้าไปรับฟังและทำเวิร์คช็อปร่วมกับทางฝั่ง BU ของทาง KBank และกรมสรรพากร จนได้เป็นสเป็คมาตรฐานที่ควรจะเป็นออกมา จากนั้นก็มีการทำแบบสำรวจกับภาคธุรกิจทุกส่วน

เวลาซื้อขายจ่ายเงินระหว่างกัน ถ้ามีเรื่องของการหักภาษี ณ ที่จ่าย หน้าที่ของเราในฐานะตัวกลาง (Agent) คือการนำข้อมูลส่วนนั้นและเงินภาษีที่หักส่งให้กับกรมสรรพากรผ่านช่องทางทางอิเล็กทรอนิกส์ ในขณะเดียวกันธนาคารยังรับหน้าที่เป็น Payer ในการหักภาษี ณ ที่จ่ายของธุรกรรมดอกเบี้ยเงินฝาก พอดีบริการนี้ ลูกค้าก็ไม่จำเป็นต้องเดินทางไปขอข้อมูลเอกสารกระดาษที่สาขาอีกต่อไป แต่สามารถเข้าไปคัดค้นที่เว็บไซต์กรมสรรพากรได้เอง ทำให้การขอลดหย่อนภาษีประจำปีสะดวกสบายมากขึ้น

จากที่เล่าภาพรวมทั้งหมด จะเห็นได้ว่าเรามี 3 โจทย์หลักๆ ด้วยกัน

  • ขอใบอนุญาตในการให้บริการ e-Withholding Tax
  • พัฒนาแพลตฟอร์มเพื่อรองรับการให้บริการ e-Withholding Tax ของ KBank as a Payer
  • พัฒนาแพลตฟอร์มเพื่อรองรับการให้บริการ e-Withholding Tax ของ KBank as an Agent

สิ่งแรกสุดคือเราต้องรีบขอใบอนุญาตในการเป็นตัวแทน ซึ่งต้องผ่านหลายขั้นตอนด้วยกัน ตั้งแต่การทำเทส การ Mock Data ไปจนถึงการทำระบบรองรับ ความยากอยู่ที่ e-Withholding Tax เป็นโมเดลที่เกิดขึ้นใหม่ อีกทั้งยังทำให้พฤติกรรมการทำธุรกรรมของลูกค้าเปลี่ยนไปด้วย จากที่เคยจ่ายภาษีวันที่ 7 ของเดือนถัดไป กลายมาเป็นต้องชำระให้เสร็จสิ้นภายในกรอบเวลา T+4 ตามกฎใหม่ของกระทรวง

T+4 = ในมุมของกรมสรรพากร ภาษีได้ถือกำเนิดขึ้นแล้วตั้งแต่วันที่ลูกค้าซื้อขายระหว่างกัน (T0) ซึ่งทางธนาคารต้องนำส่งเงินและข้อมูลให้ทางกรมสรรพากรภายใน 4 วันทำการหลังจากนั้น

source: kasikornbank.com

เพื่อนำร่องเรื่อง KBank as an Agent เราได้มีการจับมือกับลูกค้ากลุ่ม Pilot ซึ่งตรงนี้การแข่งขันระหว่างธนาคารสูงมาก เพราะใครทำสำเร็จก่อนก็จะถือว่าสามารถตอบโจทย์ธุรกิจลูกค้าได้อย่างครบวงจรจริงๆ เราจึงเร่งทำ Requirement Analysis คู่กับลูกค้าตั้งแต่ตอนที่สเป็คยังไม่ออกมาด้วยซ้ำ

ด้วยไทม์ไลน์ที่บีบมากๆ และทรัพยากรที่มีจำกัด ในเมื่อเรารู้โมเดลระบบดอกเบี้ยเงินฝากแน่ๆ อยู่แล้ว เราจึงตัดสินใจทำโจทย์ KBank as a Payer ก่อน อย่างไรก็ตามทางกรมสรรพากรได้มีการจัดทำแคมเปญลดอัตราภาษีค่าบริการเหลือ 2% เมื่อทำผ่าน e-Withholding Tax เพื่อสร้างแรงจูงใจในการใช้บริการ พอลูกค้าภาคธุรกิจรู้ดังนั้นจึงเร่งให้ธนาคารรีบพัฒนา เราจึงต้องเปลี่ยนเกียร์กลางคันมาทำในส่วนของ KBank as an Agent แล้วเลี้ยวกลับไปทำ KBank as a Payer สลับกัน จนในที่สุดเดือนก.พ. 2021 เราสามารถ Go Live ไปกับลูกค้าได้สำเร็จ ขณะนั้นเองก็มีโจทย์ในฝั่งลูกค้าธุรกิจอีกจำนวนหนึ่งที่อยากใช้ Corporate Gateway ของตนงอกขึ้นมา ซึ่งลูกค้าก็มีมากันหลายท่าหลาย Architecture กว่าจะทำโจทย์ทั้งหมดนี้สำเร็จ เราก็เหยียบกันมา 180 ทีเดียว

หักภาษี ณ ที่จ่ายด้วย K-Cash Connect Plus

พี่ที: K-Cash Connect Plus เป็นบริการ Online Banking สำหรับลูกค้าภาคธุรกิจ โดย Product ภายในจะประกอบไปด้วย Direct Credit, Smart Credit, Fund Transfer, Bill Payment, PromptPay เป็นต้น ซึ่งบาง Product นี้เองที่เราสามารถส่ง e-Withholding Tax ได้

นอกจากกรอบเวลา T+4 ที่พี่ตัสเล่าให้ฟัง ของ K-Cash Connect Plus ก็จะมี T-x เข้ามาเกี่ยวข้องอีก เพราะตัวระบบสามารถตั้งเวลาทำรายการล่วงหน้าได้ ในส่วนของการทำงานด้านหลังนั้น เมื่อรับข้อมูลเข้ามาในวันที่ T0 ระบบ K-Cash Connect Plus จะทำการปั้นข้อมูลในลักษณะที่เป็น e-Withholding Tax ส่งต่อให้กับระบบ MCL ที่เป็นเหมือนสะพานกลางเชื่อมต่อกับระบบ Core Bank ในเฟสแรกนั้นระบบตรวจสอบความถูกต้องจะจำกัดแค่ในส่วนของหลังบ้าน ทำให้กว่าข้อมูลจะมีการตรวจสอบก็ต้องมาให้ถึงปลายทางเสียก่อน ดังนั้นแม้ว่ารายการนี้มีการโอนจ่ายเงินสำเร็จแล้ว แต่ทางเราก็ไม่สามารถนำส่ง e-Withholding Tax ได้จนกว่าจะตรวจสอบความถูกต้องเสร็จ เราจึงต้องหาทางแก้ไขระหว่างทาง โดยเพิ่มฟังก์ชันให้หน้าบ้านสามารถตรวจสอบความถูกต้องของข้อมูลได้ด้วย มีการกำหนดว่า Field บังคับจะต้องมีอะไรบ้าง และข้อมูลที่ถูกต้องมีหน้าตาเป็นแบบไหน ซึ่งการนำส่งข้อมูลช่องทางอิเล็กทรอนิกส์จะมี Field ที่ Sensitive มากกว่าการส่งแบบกระดาษดั้งเดิมครับ

ส่งข้อมูลไป-กลับ Core Banking ผ่านระบบ MCL

พี่สม: Media Clearing หรือ MCL เป็นระบบเดิมที่อยู่บน Mainframe โดยทางทีม MCL ต้องมาคิด Validate Rule ว่าจะต้องทำยังไงไม่ให้ข้อมูลที่ไม่ถูกต้องตามกติกาหลุดเข้าไปในท่อได้ ให้ข้อมูลที่คลีนเสร็จแล้วไปถึงหลังบ้านและไม่เกิดปัญหาตอนส่งให้สรรพากร เมื่อ MCL รับข้อมูล e-Withholding Tax มาจาก K-Cash Connect Plus ก็จะวิ่งไปที่ระบบ Core Bank เพื่อตัดค่าธรรมเนียมของลูกค้าและนำส่งกรมสรรพากรถัดไป ดังนั้นในกระบวนการทำงานก็จะมีส่วนของการลงบัญชีและ Downstream หลายอย่าง ความท้าทายที่เจอจะมีเรื่องของการส่งข้อมูลแบบ Cross-Platform เพราะ K-Cash Connect Plus และหลังบ้านเป็นระบบแบบ Open ในขณะที่ตัว MCL เป็น Mainframe ก็ต้องมารับมือกัน และเนื่องด้วยข้อจำกัดของเวลา ถ้าเราจะทำหน้าจอใหม่ให้ลูกค้าทุกคนใช้งานก็คงไม่ทันการณ์ เราจึงจำเป็นต้องหาทางประยุกต์ให้ระบบสามารถใช้ร่วมกับของเดิมที่ User ใช้อยู่โดยไม่กระทบกับ Workflow เดิม ให้คนทำงานได้รับผลกระทบน้อยที่สุดและสามารถทำงานต่อไปได้โดยที่ Programmer ไม่ต้องเข้าไปยุ่งเกี่ยว

source: epay.rd.go.th

Data Platform ก่อน (ภาษี) ถึงเส้นชัย

พี่ป๊อด: พี่ดู Data Platform ที่เชื่อมกับทางกรมสรรพากรครับ ช่วงแรกๆ เราต้องลงไปศึกษาสเป็คของระบบที่ทางกรมฯ ตั้งมาว่าจะให้วางตรงไหน เชื่อมต่อยังไง และทางกรมฯ จะตอบกลับในรูปแบบไหนให้เรา โจทย์ของเราคือต้องทำให้ระบบทำงานในกรอบเวลา T+4 โดยสมบูรณ์และส่งข้อมูลให้กรมสรรพากรได้สำเร็จ กระบวนการทำงานของระบบก็จะแบ่งเป็น 2 ส่วนย่อย ส่วนแรกคือการยื่นข้อมูลแบบปกติ ในขณะที่ส่วนที่ 2 คือการยื่นเพิ่มเติม ยกตัวอย่างเช่นกรณีที่เรายื่นปกติไปแล้ว แต่กรมสรรพากรแจ้งว่าข้อมูลขาด ก็จะมีโนติแจ้งกลับมาที่ลูกค้าบนหน้าเว็บของกรมฯ ว่าให้ยื่นเพิ่มเติม ลูกค้าสามารถ Generate ตัว Bill Payment ระบบ K-Cash Connect Plus ซึ่งความยากคือลูกค้าต้องชำระเสร็จ ณ วันนั้นเลย และธนาคารจะต้องส่งทางกรมสรรพากรภายในวันรุ่งขึ้น นั่นแปลว่าเรามีเวลาแค่หนึ่งวันในการส่งไฟล์เท่านั้น

สำหรับกระบวนการยื่นปกติ ข้อมูลทั้งหมดจะมารวมอยู่ที่แพลตฟอร์ม e-Withholding Tax ตั้งแต่วันที่ T+1 โดยระบบจะดึงข้อมูลมาประกอบร่างเพื่อส่งกรมสรรพากร จากนั้นก็มีการ Reconcile ข้อมูลว่ามีการบันทึกบัญชีถูกต้องหรือไม่ หากทุกอย่างเรียบร้อย วันที่ T+2 ทาง e-Withholding Tax จะนำชุดข้อมูลไปจ่ายที่ระบบ Service Batch นำภาษีส่งให้กรมสรรพากร จากนั้นก็รับผลการโอนเงินเข้ามาแสตมป์ที่ระบบตนเอง เสร็จแล้วเราจะมีการสร้าง Statement ใหม่ที่มีการสรุปยอดและอ้างอิงภาษีที่นำส่งเพื่อตรวจสอบว่าข้อมูลตรงกัน ก่อนจะส่งไฟล์ Statement นั้นให้ทางกรมฯ พร้อมแจ้งทางลูกค้าว่าภาษีได้ถูกนำส่งให้กรมสรรพากรเป็นที่เรียบร้อย เพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้น เราได้ออกแบบระบบทั้งหมดนี้ให้เป็น Automate เพราะหากเกิดปัญหาแล้วเราแก้ไขไม่ทันใน T+4 ก็จะมี Penalty ตามมาครับ

ผู้อยู่เบื้องหลังโปรเจค e-Withholding Tax

รางวัลที่ได้จากความท้าทาย

พี่ที: พี่ประทับใจความสามัคคีในการทำงานร่วมกันของทุกคนครับ ตั้งแต่เริ่มโปรเจค e-Withholding Tax มา เรามีการพูดคุยกันเยอะมาก ตัวแทนแต่ละทีมแอปที่ส่งเข้ามาช่วยในโปรเจคนี้ก็ล้วนมีความเป็นมืออาชีพ โดยเฉพาะอย่างยิ่งความเป็นผู้นำ และทุกคนมีเป้าหมายเดียวกัน โดยไม่มีการเกี่ยงว่าทีมแอปต้องทำงานมากขึ้นครับ

พี่สม: รู้สึกภูมิใจว่าพอมีบริการใหม่ๆ เกิดขึ้นมา เราสามารถนำมา Plug in กับสิ่งที่เรามีอยู่ในเวลาที่จำกัด โดยที่เกิดปัญหาน้อยมาก เราสามารถทำออกมาได้อย่างเรียบร้อย และส่วนสำคัญที่ช่วยลดปัญหาในโปรเจคนี้ไปได้เยอะคือ Requirement และทิศทางที่ชัดเจนครับ ด้วยวิธีการสื่อสารของพี่ตัสที่มีการแจ้งสิ่งที่ต้องการชัดเจน ด้วยเหตุผลอะไร ไทม์ไลน์เป็นอย่างไรตั้งแต่ต้น ทำให้การทำงานสะดวกขึ้นครับ

พี่ป๊อด: โปรเจคนี้ช่วยให้พี่ได้เพื่อนใหม่จากทีมแอปอื่นเพียบเลยครับ แถมยังช่วยให้ประสบการณ์ในการทำระบบระดับ Enterprise ที่ต้องเริ่มจากศูนย์จริงๆ ภูมิใจกับระบบนี้มากๆ ครับ และท้ายสุดคือได้รับความรู้และฝึกฝนสกิลเพิ่มเติมเยอะมากในเวลาอันสั้น เพราะพี่ต้องเรียนรู้ใหม่หมดตั้งแต่ Frontend, Backend, Database ไปจนถึงการเข้ารหัส Data การนำ Test Automation มาใช้ และการเข้า DevSecOps ตอนแรกก็มีกลัวว่าเราจะทำได้มั้ย ซึ่งสุดท้ายเราก็ทำสำเร็จ อยากขอบคุณทุกคนที่เป็นกำลังใจและช่วยผลักดันมาตลอดครับ

พี่ตัส: เวลาเราทำโครงการใหญ่ๆ จะมีแรงกดดัน บางครั้งข้อความบางอย่างที่ได้รับจะมาแบบไม่มี Requirement ที่ชัดเจน ตรงนี้เป็น Pain ที่ใหญ่มาก แถมโปรเจคนี้ยังเป็นการทำแบบ Agile ครั้งแรกของพี่ ต้องบอกว่าสิ่งที่ทำให้ทีมมาถึงตรงนี้ได้คือคำว่า One Goal จริงๆ ทุกคนที่มาช่วยในโครงการนี้เก่ง ทัศนคติดี และน่ารักมาก พร้อมช่วยเหลือเสมอ เราคุยกันด้วยเหตุผลแบบมืออาชีพและเปิดใจ พิสูจน์ให้เห็นว่าไม่ว่างานจะยากแค่ไหน ตราบใดที่เราร่วมมือกันเป็นหนึ่งเดียวและมีเป้าหมายที่เคลียร์ เราก็จะผ่านอุปสรรคไปได้ด้วยกันค่ะ

สำหรับชาวเทคคนไหนที่สนใจเรื่องราวดีๆแบบนี้ หรืออยากเรียนรู้เกี่ยวกับ Product ใหม่ๆ ของ KBTG สามารถติดตามรายละเอียดกันได้ที่เว็บไซต์ www.kbtg.tech

--

--