Kết nối doanh nghiệp · Mở ra cơ hội · Hướng tới tương lai
WhatsApp
Zalo⌄
Mã QR Zalo của Hằng Tín

Quét mã để liên hệ qua Zalo. Nhấn để phóng to.

Di động: +65 8585 9090Email: info@acggroupsg.com

HƯỚNG DẪN TẠI SINGAPORE

AIS-API 2.0: đầy đủ giao diện nộp thu nhập, phiên bản 2.6 ngày 11/09/2026

Đủ 22 trang: OAuth, bảo mật, 2.000 hồ sơ/8 MB, 3.000 yêu cầu/giờ, ba mẫu JSON đầy đủ, phản hồi và thư xác nhận, cùng khác biệt trong bản gốc.

Mục lục bài viết
Phạm vi: AIS-API 2.0, phiên bản 2.6 ngày 11/09/2026Lịch sử đầy đủ của tài liệu2. Đăng ký sử dụng API3. Lấy mã ủy quyền và chọn luồng giao dịch3.1. Bảo mật kết nối mạng3.2. Đầy đủ trường đầu HTTP và ví dụ gốc3.3. Quy mô, chia gói và giới hạn tốc độ3.4–3.5. Thử nghiệm, kiểm định hằng năm và môi trường chính thức3.6. Quy tắc chung và kiểu dữ liệu3.7. Năm nhóm dữ liệu yêu cầu và quy tắc chi tiết3.7.1. Mẫu cấu trúc đầy đủ, toàn bộ trường3.7.2. Mẫu chỉ IR8A: đủ ba nhân viên3.7.3. Mẫu IR8A có nhiều bản ghi 8A và 8BKhác biệt cần phân biệt ngay trong mẫu 3.7.33.8. Toàn bộ định nghĩa phản hồi3.8.1. Thành công và các chế độ kiểm traMẫu thư xác nhận nhúng ở trang 203.8.2. Lỗi kiểm tra: từ chối với mã 30Cảnh báo không được bỏ qua và lỗi hệ thốngThông tin giới hạn và bản quyền trong nguồn

Phạm vi: AIS-API 2.0, phiên bản 2.6 ngày 11/09/2026

Đây là toàn bộ nội dung kỹ thuật của tài liệu IRAS 22 trang về giao diện nộp hồ sơ thu nhập việc làm AIS-API 2.0, phiên bản 2.6 cập nhật 11/09/2026. Nhà phát triển phần mềm (SWD) có thể tích hợp việc kiểm tra và nộp IR8A, Phụ lục 8A và 8B vào phần mềm tiền lương, dùng yêu cầu HTTP có dữ liệu JSON cho Chương trình tự động đưa thu nhập vào hồ sơ thuế (AIS). SWD phải được xác thực với APEX; tài liệu dẫn hướng dẫn GovTech tại go.gov.sg/apexoauth.

Tên thuộc tính, mã, đường dẫn, chuỗi ví dụ và cấu trúc JSON dưới đây là dữ liệu kỹ thuật nguyên bản. Phần diễn giải bằng tiếng Việt phân biệt quy tắc, ví dụ và các điểm không khớp ngay trong tài liệu; không tự sửa chúng thành một giao diện thực thi mới.

↑ Mục lục bài viết

Lịch sử đầy đủ của tài liệu

Mục lục nguồn: giới thiệu/đăng ký trang 4; dịch vụ và bảo mật mạng trang 5; bảo mật thông điệp/quy mô trang 6; thử nghiệm/chính thức trang 7; quy tắc chung trang 8; yêu cầu trang 9–17; phản hồi trang 18–22. Nhật ký 2.0 gọi ví dụ đầy đủ là 3.7.2, trong khi tiêu đề thân tài liệu đánh 3.7.1; các ví dụ được nhận diện theo tiêu đề và trang thực tế phía dưới.

Vuốt ngang trên điện thoại để xem đủ các cột.

NgàyPhiên bảnThay đổi
22/08/20241.0Bản nền AIS-API 2.0.
29/11/20241.1Thêm 3.1 bảo mật mạng, 3.2 bảo mật thông điệp.
22/05/20252.0Chốt đặc tả: thêm lấy mã ủy quyền Corppass qua OAuth 2.1; cập nhật địa chỉ thử nghiệm/chính thức; bỏ ERIS phần B/C/D trong appendix8B của danh sách dữ liệu/quy tắc kiểm tra; cập nhật ví dụ yêu cầu đầy đủ ở 3.7.2 theo nhật ký và ví dụ IR8A có nhiều 8A/8B ở 3.7.3.
12/06/20252.1Cập nhật ví dụ 3.7.1–3.7.3 để postalCode là chuỗi.
15/07/20252.2Rà soát các ký tự cho phép ở 3.6.
26/09/20252.3Thêm ký tự bị cấm ở 3.6.
31/12/20252.4Bỏ danh sách ký tự bị cấm ở 3.6; chuyển returnCode, data.acknowledgementCode và info.messageCode ở 3.8 sang kiểu chuỗi.
17/06/20262.5Nhật ký ghi bỏ info.messagecode không dùng; cập nhật phản hồi thành công 3.8.1 và lỗi 3.8.2. Bảng/ví dụ ở phần sau vẫn có messageCode, được giữ riêng theo nguồn.
11/09/20262.6Cập nhật URL trong các phần 1, 2, 3.2 và 3.4.

↑ Mục lục bài viết

2. Đăng ký sử dụng API

Phải thử API trong môi trường thử nghiệm (Sandbox) trước khi dùng môi trường chính thức (Production). Mọi SWD cần tài khoản Corppass trước khi đăng ký dịch vụ API; theo mục Corppass cho người dùng ngoài chính phủ trong hướng dẫn GovTech. Hướng dẫn đầy đủ APEX được dẫn tại go.gov.sg/complete-apex-user-guide.

  • Sau khi đăng ký Corppass, tạo ứng dụng.
  • Tạo khóa API.
  • Tạo ứng dụng khách OAuth 2.1.
  • Đăng ký ứng dụng sử dụng các API.

↑ Mục lục bài viết

3. Lấy mã ủy quyền và chọn luồng giao dịch

Trước tiên gọi các API OAuth 2.1 để lấy mã ủy quyền Corppass. Khi gọi địa chỉ Authorization, tham số tax_agent chọn luồng: y nếu là đại lý thuế giao dịch cho khách hàng doanh nghiệp; n nếu xử lý việc thuế của chính doanh nghiệp. Đặc tả OAuth được dẫn tại go.gov.sg/oauth-specs. Có mã ủy quyền rồi mới dùng để gọi API.

Vuốt ngang trên điện thoại để xem đủ các cột.

Môi trườngPhương thứcĐịa chỉ được liệt kê ở mục 3
Thử nghiệmPOSThttps://sandbox.api.gov.sg/iras/employment-income-records/v2/Submit
Chính thứcPOSThttps://public.api.gov.sg/iras/employment-income-records/v2/Submit

↑ Mục lục bài viết

3.1. Bảo mật kết nối mạng

Phải gọi từ kết nối máy chủ với máy chủ. TLS và danh sách IP được cho phép bảo vệ liên lạc đầu cuối giữa máy chủ gọi và APEX. Máy chủ/phần mềm/ứng dụng phải hỗ trợ HTTP/2, TLS 1.2/1.3 và có thể phát yêu cầu HTTP GET, HTTP POST. Hai bộ mật mã TLS được nguồn liệt kê là ECDHE-RSA-AES256-GCM-SHA384 và ECDHE-RSA-AES128-GCM-SHA256.

↑ Mục lục bài viết

3.2. Đầy đủ trường đầu HTTP và ví dụ gốc

Khối ví dụ trang 6 in các dòng: POST /iras/prod/EmpIncomeRecords/submit HTTP/1.1; Host: https://public.api.gov.sg; x-apex-apikey: 40e7be2f-0b4f-4985-bcc9-cdfd38c5b5c8; Authorization: Bearer eyAidHlwIjogIkpXVCIsICJhbGciOiAiUlMyNTYiIH0…….; Content-Type: application/json; Accept: application/json. Khóa và mã này chỉ là chuỗi minh họa công khai, không phải thông tin truy cập để sử dụng.

Đường dẫn /iras/prod/EmpIncomeRecords/submit và HTTP/1.1 trong khối mẫu không giống địa chỉ /iras/employment-income-records/v2/Submit ở mục 3 và yêu cầu HTTP/2 ở 3.1. Bài giữ đúng sự khác nhau giữa bảng quy tắc và khối mẫu, không dùng khối mẫu để thay thế địa chỉ hiện hành được bảng nêu.

Vuốt ngang trên điện thoại để xem đủ các cột.

Trường đầuGiá trị/yêu cầu
x-apex-apikeyKhóa API của ứng dụng đã tạo trên APEX và đã đăng ký API.
AuthorizationMã truy cập Corppass dạng JWT, thêm tiền tố Bearer. Khi sinh tham số cho địa chỉ ủy quyền, dùng phạm vi EmpIncomeSub; tài liệu chỉ go.gov.sg/oauthcorppassapex để tạo mã.
Content-Typeapplication/json

↑ Mục lục bài viết

3.3. Quy mô, chia gói và giới hạn tốc độ

  • Mỗi gói nộp tối đa 2.000 hồ sơ và không quá 8 MB tổng dữ liệu. Nếu vượt, ứng dụng nên chia thành nhiều gói. Chú thích 1 khuyến nghị mạnh đặt số hồ sơ tối đa thành biến để dễ điều chỉnh khi thay đổi.
  • Ví dụ 3.000 nhân viên: yêu cầu thứ nhất có 2.000 hồ sơ, kích thước dưới 8 MB; yêu cầu thứ hai 1.000 hồ sơ, dưới 8 MB.
  • Nếu một gói bị lỗi, JSON trả chi tiết, nghĩa là gói yêu cầu đó chưa được IRAS chấp nhận. Người dùng phải sửa lỗi và gửi lại gói lỗi. Ví dụ yêu cầu thứ nhất 2.000 thành công, thứ hai 1.000 thất bại: chỉ sửa/nộp lại thứ hai, không phải nộp lại thứ nhất đã thành công.
  • Ví dụ bị từ chối: 1.000 hồ sơ nhưng trên 8 MB; hoặc 2.001 hồ sơ. Cấu hình gói phải đáp ứng cả giới hạn số hồ sơ và dung lượng.
  • Mỗi ứng dụng giới hạn 3.000 yêu cầu mỗi giờ. Chạm giới hạn trả trạng thái 429 với thông báo Assembly Rate Limit exceeded (Vượt giới hạn tốc độ). Khi gặp lỗi này nên hướng dẫn người dùng thử lại trong giờ tiếp theo.

↑ Mục lục bài viết

3.4–3.5. Thử nghiệm, kiểm định hằng năm và môi trường chính thức

Sandbox mô phỏng môi trường chính thức để thử tích hợp trước khi gửi dữ liệu thật. SWD phải dùng tổ chức thử nghiệm do IRAS cung cấp và đã tạo ứng dụng khách OAuth 2.1 Sandbox trên APEX. Có kiểm định hằng năm để bảo đảm phần mềm nộp đúng đặc tả; xem quy trình tại go.gov.sg/iras-ais-vendor.

Sử dụng API chính thức cần IRAS chấp thuận, phụ thuộc hoàn thành thử nghiệm thành công. Tương tự Sandbox, SWD phải tạo ứng dụng khách OAuth 2.1 khi đăng ký API. Sau khi chấp thuận, có thể gửi đối tượng JSON tới URL chính thức. API IRAS chịu Điều khoản sử dụng API; APEX chịu Điều khoản sử dụng API Exchange.

Môi trường chính thức chỉ dành cho mục đích trong mô tả dịch vụ. Mọi cách dùng khác, kể cả mọi hình thức thử nghiệm, bị nghiêm cấm. Hoạt động đó bị coi vi phạm điều khoản và có thể dẫn tới đình chỉ hoặc chấm dứt tài khoản.

↑ Mục lục bài viết

3.6. Quy tắc chung và kiểu dữ liệu

  • JSON phân biệt chữ hoa/chữ thường. Chuỗi ngày phải theo ISO-8601. Thuộc tính theo quy ước camel-case; trừ khi nói rõ là tùy chọn, phải cung cấp mọi thuộc tính đối tượng JSON. Trừ khi quy định khác, các dịch vụ JSON gọi bằng HTTP POST.
  • Mọi trường chuỗi chịu kiểm tra. Ký tự cho phép: ASCII 32–127; ü; Ü; İ; xuống dòng LF mã Unicode 10; trở về đầu dòng CR mã 13; gạch ngang ngắn –; gạch ngang dài —; dấu ngoặc kép cong “ ” và nháy đơn cong ‘ ’. Các ký tự trong danh sách được giữ đúng để tra kỹ thuật.

Vuốt ngang trên điện thoại để xem đủ các cột.

Kiểu/kích thướcÝ nghĩaVí dụ
String(12)Chuỗi tối đa 12 ký tự"180011032C"
Number(4)Giá trị số tối đa bốn chữ số nguyên1990
Decimal(13,2)Tối đa 13 chữ số phần nguyên và hai chữ số thập phân1234567890123.12
Date(10)Ngày gồm năm-tháng-ngày YYYY-MM-DD"2024-01-01"

↑ Mục lục bài viết

3.7. Năm nhóm dữ liệu yêu cầu và quy tắc chi tiết

Trước khi thực hiện, nguồn yêu cầu tải tệp Excel List of Data Items and Validation Rules (Danh sách mục dữ liệu và quy tắc kiểm tra) tại go.gov.sg/aisapi2-dataitems. Các mẫu JSON dưới dùng khóa ir8a, khác chữ iR8A trong bảng; không tự đổi hoa/thường vì đặc tả nói JSON phân biệt hoa/thường. Có thể mở bảng Excel chính thức để tra kiểu/điều kiện chi tiết của từng mục.

Ba ví dụ gốc được giữ đủ từng đường dẫn và giá trị JSON ở các bảng tiếp theo. Dấu [0], [1], [2] là vị trí trong mảng, không thay recordId; null, chuỗi rỗng "", đối tượng rỗng {} và mảng rỗng [] được phân biệt. Đây là mẫu tài liệu, không phải thông tin người dùng. Employee A/B/C nghĩa là nhân viên A/B/C; Chef là đầu bếp, Director là giám đốc; SWD Organisation Name và Application Name là chỗ ghi tên nhà phát triển/phần mềm.

Vuốt ngang trên điện thoại để xem đủ các cột.

Đối tượng theo bảng trang 9Nội dung
orgAndSubmissionInfoThông tin tổ chức và lần nộp AIS; xem trang tính cùng tên.
employeePersonalParticularsThông tin cá nhân nhân viên cho lần nộp AIS; xem trang tính cùng tên.
iR8ACác mục dữ liệu Form IR8A; bảng nguồn dùng chữ iR8A và dẫn trang tính iR8A.
appendix8ACác mục dữ liệu Phụ lục 8A; xem trang tính cùng tên.
appendix8BCác mục dữ liệu Phụ lục 8B; xem trang tính cùng tên.

↑ Mục lục bài viết

3.7.1. Mẫu cấu trúc đầy đủ, toàn bộ trường

Giữ toàn bộ mẫu tại trang 10–11 theo dạng đường dẫn/giá trị để đọc trên màn hình; không bỏ trường rỗng hay tự tính lại số.

Vuốt ngang trên điện thoại để xem đủ các cột.

Đường dẫn JSON gốcGiá trị JSON gốc
orgAndSubmissionInfo.validateOnlyfalse
orgAndSubmissionInfo.bypassWarningfalse
orgAndSubmissionInfo.incomeYearnull
orgAndSubmissionInfo.employerTaxRefNumber""
orgAndSubmissionInfo.authorisedPersonName""
orgAndSubmissionInfo.contactNumbernull
orgAndSubmissionInfo.emailAddress""
orgAndSubmissionInfo.submissionType""
orgAndSubmissionInfo.softwareCompanyName""
orgAndSubmissionInfo.softwareName""
orgAndSubmissionInfo.totalNumberIR8Anull
orgAndSubmissionInfo.amountTotalIncomeOfIR8Anull
orgAndSubmissionInfo.totalNumberOfApp8Anull
orgAndSubmissionInfo.totalNumberOfApp8Bnull
employeePersonalParticulars[0].recordIdnull
employeePersonalParticulars[0].idType""
employeePersonalParticulars[0].idNumber""
employeePersonalParticulars[0].name""
employeePersonalParticulars[0].dateOfBirth""
employeePersonalParticulars[0].sex""
employeePersonalParticulars[0].addressType""
employeePersonalParticulars[0].addressLine1""
employeePersonalParticulars[0].addressLine2""
employeePersonalParticulars[0].addressLine3""
employeePersonalParticulars[0].postalCode""
employeePersonalParticulars[0].countryCodeForForeignAddress""
employeePersonalParticulars[0].designation""
employeePersonalParticulars[0].bankCode""
employeePersonalParticulars[0].commencementDate""
employeePersonalParticulars[0].cessationDate""
employeePersonalParticulars[0].ir8a.periodPaymentFromDate""
employeePersonalParticulars[0].ir8a.periodPaymentToDate""
employeePersonalParticulars[0].ir8a.salarynull
employeePersonalParticulars[0].ir8a.bonusnull
employeePersonalParticulars[0].ir8a.nonContractualBonusPaidDate""
employeePersonalParticulars[0].ir8a.directorFeesnull
employeePersonalParticulars[0].ir8a.directorsFeesApprovalDate""
employeePersonalParticulars[0].ir8a.section45Indicator""
employeePersonalParticulars[0].ir8a.allowancesnull
employeePersonalParticulars[0].ir8a.grossCommissionnull
employeePersonalParticulars[0].ir8a.gratuityNoticePayExGratiaPaymentnull
employeePersonalParticulars[0].ir8a.compensationForLossOfOfficenull
employeePersonalParticulars[0].ir8a.compensationForLossOfOfficeIndicator""
employeePersonalParticulars[0].ir8a.pensionRetirementBenefitsAccruedFrom1993null
employeePersonalParticulars[0].ir8a.designatedPensionOrProvidentFundName""
employeePersonalParticulars[0].ir8a.employerContributionToPensionOrProvidentFundOutsideSgnull
employeePersonalParticulars[0].ir8a.excessOrVoluntaryCpfContributionByEmployernull
employeePersonalParticulars[0].ir8a.gainsAndProfitsFromSOGS101bnull
employeePersonalParticulars[0].ir8a.gainsAndProfitsUnderS101gnull
employeePersonalParticulars[0].ir8a.valueOfBenefitsInKindnull
employeePersonalParticulars[0].ir8a.othersIncomenull
employeePersonalParticulars[0].ir8a.totalIncomenull
employeePersonalParticulars[0].ir8a.exemptIncomeOrIncomeSubjectToTaxRemissionnull
employeePersonalParticulars[0].ir8a.exemptOrRemissionIncomeIndicator""
employeePersonalParticulars[0].ir8a.incomeTaxBorneByEmployerIndicator""
employeePersonalParticulars[0].ir8a.amountOfIncomeForTaxBorneByEmployernull
employeePersonalParticulars[0].ir8a.fixedAmountOfIncomeForTaxBorneByEmployeenull
employeePersonalParticulars[0].ir8a.cpfOrDesignatedFundnull
employeePersonalParticulars[0].ir8a.donationsDeductedThroughSalariesnull
employeePersonalParticulars[0].ir8a.contributionsToMosqueBuildingFundnull
employeePersonalParticulars[0].ir8a.lifeInsurancePremiumThroughSalariesnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].accommodationIdnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].addressPlaceOfResidenceByEmployer""
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].occupationFromDate""
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].occupationToDate""
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].numberOfDaysnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].numberOfEmployeeSharingnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].annualValueOfPremisesnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].furnitureAndFittingsValueIndicator""
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].furnitureAndFittingsValuenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].rentPaidByEmployernull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].taxableValueOfPlaceOfResidencenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].totalRentPaidByEmployeeForPlaceOfResidencenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].totalTaxableValueOfPlaceOfResidencenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].utilitiesAndHousekeepingCostsnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].drivernull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].servantOrGardenerOrUpkeepnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].taxableValueOfUtilitiesAndHousekeepingnull
employeePersonalParticulars[0].appendix8A.actualCostOfHotelOrServicedApartmentnull
employeePersonalParticulars[0].appendix8A.amountPaidByEmployeenull
employeePersonalParticulars[0].appendix8A.taxableValueOfHotelAccommodationnull
employeePersonalParticulars[0].appendix8A.costOfLeavePassageAndIncidentalBenefitsnull
employeePersonalParticulars[0].appendix8A.interestPaidByEmployernull
employeePersonalParticulars[0].appendix8A.insurancePremiumsPaidByEmployernull
employeePersonalParticulars[0].appendix8A.freeOrSubsidisedHolidaynull
employeePersonalParticulars[0].appendix8A.educationalExpensesnull
employeePersonalParticulars[0].appendix8A.entranceOrTransferFeesToSocialClubsnull
employeePersonalParticulars[0].appendix8A.gainsFromAssetsnull
employeePersonalParticulars[0].appendix8A.fullCostOfMotorVehiclenull
employeePersonalParticulars[0].appendix8A.carBenefitnull
employeePersonalParticulars[0].appendix8A.otherNonMonetaryAwardsOrBenefitsnull
employeePersonalParticulars[0].appendix8A.totalValueOfBenefitsInKindnull
employeePersonalParticulars[0].appendix8B.eebrRecords[0].eebrId1
employeePersonalParticulars[0].appendix8B.eebrRecords[0].companyIdNumber""
employeePersonalParticulars[0].appendix8B.eebrRecords[0].companyName""
employeePersonalParticulars[0].appendix8B.eebrRecords[0].planType""
employeePersonalParticulars[0].appendix8B.eebrRecords[0].dateOfGrant""
employeePersonalParticulars[0].appendix8B.eebrRecords[0].dateOfExerciseOrVesting""
employeePersonalParticulars[0].appendix8B.eebrRecords[0].exercisePricenull
employeePersonalParticulars[0].appendix8B.eebrRecords[0].openMarketValuePerSharenull
employeePersonalParticulars[0].appendix8B.eebrRecords[0].numberOfSharesnull
employeePersonalParticulars[0].appendix8B.eebrRecords[0].grossAmountGainsnull
employeePersonalParticulars[0].appendix8B.totalGrossAmountGainsAfter2003S101bnull
employeePersonalParticulars[0].appendix8B.totalGrossAmountGainsBefore2003S101gnull

↑ Mục lục bài viết

3.7.2. Mẫu chỉ IR8A: đủ ba nhân viên

Giữ toàn bộ mẫu tại trang 12–14 theo dạng đường dẫn/giá trị để đọc trên màn hình; không bỏ trường rỗng hay tự tính lại số.

Vuốt ngang trên điện thoại để xem đủ các cột.

Đường dẫn JSON gốcGiá trị JSON gốc
orgAndSubmissionInfo.validateOnlyfalse
orgAndSubmissionInfo.bypassWarningfalse
orgAndSubmissionInfo.incomeYear2024
orgAndSubmissionInfo.employerTaxRefNumber"180011032C"
orgAndSubmissionInfo.authorisedPersonName"John Adams"
orgAndSubmissionInfo.contactNumber91234567
orgAndSubmissionInfo.emailAddress"abc@email.com.sg"
orgAndSubmissionInfo.submissionType"O"
orgAndSubmissionInfo.softwareCompanyName"SWD Organisation Name"
orgAndSubmissionInfo.softwareName"Application Name"
orgAndSubmissionInfo.totalNumberIR8A3
orgAndSubmissionInfo.amountTotalIncomeOfIR8A165000
orgAndSubmissionInfo.totalNumberOfApp8A0
orgAndSubmissionInfo.totalNumberOfApp8B0
employeePersonalParticulars[0].recordId1
employeePersonalParticulars[0].idType"1"
employeePersonalParticulars[0].idNumber"S1234567A"
employeePersonalParticulars[0].name"Employee A"
employeePersonalParticulars[0].dateOfBirth"1981-01-02"
employeePersonalParticulars[0].sex"M"
employeePersonalParticulars[0].addressType""
employeePersonalParticulars[0].addressLine1""
employeePersonalParticulars[0].addressLine2""
employeePersonalParticulars[0].addressLine3""
employeePersonalParticulars[0].postalCode""
employeePersonalParticulars[0].countryCodeForForeignAddress""
employeePersonalParticulars[0].designation"Chef"
employeePersonalParticulars[0].bankCode"7232"
employeePersonalParticulars[0].commencementDate"2024-01-02"
employeePersonalParticulars[0].cessationDate""
employeePersonalParticulars[0].ir8a.periodPaymentFromDate"2024-01-02"
employeePersonalParticulars[0].ir8a.periodPaymentToDate"2024-12-31"
employeePersonalParticulars[0].ir8a.salary36000
employeePersonalParticulars[0].ir8a.bonus3000
employeePersonalParticulars[0].ir8a.nonContractualBonusPaidDate"2024-12-10"
employeePersonalParticulars[0].ir8a.directorFeesnull
employeePersonalParticulars[0].ir8a.directorsFeesApprovalDate""
employeePersonalParticulars[0].ir8a.section45Indicator""
employeePersonalParticulars[0].ir8a.allowancesnull
employeePersonalParticulars[0].ir8a.grossCommissionnull
employeePersonalParticulars[0].ir8a.gratuityNoticePayExGratiaPaymentnull
employeePersonalParticulars[0].ir8a.compensationForLossOfOfficenull
employeePersonalParticulars[0].ir8a.compensationForLossOfOfficeIndicator""
employeePersonalParticulars[0].ir8a.pensionRetirementBenefitsAccruedFrom1993null
employeePersonalParticulars[0].ir8a.designatedPensionOrProvidentFundName""
employeePersonalParticulars[0].ir8a.employerContributionToPensionOrProvidentFundOutsideSgnull
employeePersonalParticulars[0].ir8a.excessOrVoluntaryCpfContributionByEmployernull
employeePersonalParticulars[0].ir8a.gainsAndProfitsFromSOGS101bnull
employeePersonalParticulars[0].ir8a.gainsAndProfitsUnderS101gnull
employeePersonalParticulars[0].ir8a.valueOfBenefitsInKindnull
employeePersonalParticulars[0].ir8a.othersIncomenull
employeePersonalParticulars[0].ir8a.totalIncome39000
employeePersonalParticulars[0].ir8a.exemptIncomeOrIncomeSubjectToTaxRemissionnull
employeePersonalParticulars[0].ir8a.exemptOrRemissionIncomeIndicator""
employeePersonalParticulars[0].ir8a.incomeTaxBorneByEmployerIndicator""
employeePersonalParticulars[0].ir8a.amountOfIncomeForTaxBorneByEmployernull
employeePersonalParticulars[0].ir8a.fixedAmountOfIncomeForTaxBorneByEmployeenull
employeePersonalParticulars[0].ir8a.cpfOrDesignatedFund7800
employeePersonalParticulars[0].ir8a.donationsDeductedThroughSalaries12
employeePersonalParticulars[0].ir8a.contributionsToMosqueBuildingFundnull
employeePersonalParticulars[0].ir8a.lifeInsurancePremiumThroughSalariesnull
employeePersonalParticulars[0].appendix8A{}
employeePersonalParticulars[0].appendix8B{}
employeePersonalParticulars[1].recordId2
employeePersonalParticulars[1].idType"1"
employeePersonalParticulars[1].idNumber"S9876543A"
employeePersonalParticulars[1].name"Employee B"
employeePersonalParticulars[1].dateOfBirth"1990-11-02"
employeePersonalParticulars[1].sex"F"
employeePersonalParticulars[1].addressType"L"
employeePersonalParticulars[1].addressLine1"Blk 123 Choa Chu Kang Rd #10-01"
employeePersonalParticulars[1].addressLine2""
employeePersonalParticulars[1].addressLine3""
employeePersonalParticulars[1].postalCode"670123"
employeePersonalParticulars[1].countryCodeForForeignAddress""
employeePersonalParticulars[1].designation""
employeePersonalParticulars[1].bankCode""
employeePersonalParticulars[1].commencementDate""
employeePersonalParticulars[1].cessationDate"2024-06-30"
employeePersonalParticulars[1].ir8a.periodPaymentFromDate"2024-01-01"
employeePersonalParticulars[1].ir8a.periodPaymentToDate"2024-06-30"
employeePersonalParticulars[1].ir8a.salary24000
employeePersonalParticulars[1].ir8a.bonus2000
employeePersonalParticulars[1].ir8a.nonContractualBonusPaidDate""
employeePersonalParticulars[1].ir8a.directorFeesnull
employeePersonalParticulars[1].ir8a.directorsFeesApprovalDate""
employeePersonalParticulars[1].ir8a.section45Indicator""
employeePersonalParticulars[1].ir8a.allowancesnull
employeePersonalParticulars[1].ir8a.grossCommissionnull
employeePersonalParticulars[1].ir8a.gratuityNoticePayExGratiaPaymentnull
employeePersonalParticulars[1].ir8a.compensationForLossOfOfficenull
employeePersonalParticulars[1].ir8a.compensationForLossOfOfficeIndicator""
employeePersonalParticulars[1].ir8a.pensionRetirementBenefitsAccruedFrom1993null
employeePersonalParticulars[1].ir8a.designatedPensionOrProvidentFundName""
employeePersonalParticulars[1].ir8a.employerContributionToPensionOrProvidentFundOutsideSgnull
employeePersonalParticulars[1].ir8a.excessOrVoluntaryCpfContributionByEmployernull
employeePersonalParticulars[1].ir8a.gainsAndProfitsFromSOGS101bnull
employeePersonalParticulars[1].ir8a.gainsAndProfitsUnderS101gnull
employeePersonalParticulars[1].ir8a.valueOfBenefitsInKindnull
employeePersonalParticulars[1].ir8a.othersIncomenull
employeePersonalParticulars[1].ir8a.totalIncome26000
employeePersonalParticulars[1].ir8a.exemptIncomeOrIncomeSubjectToTaxRemissionnull
employeePersonalParticulars[1].ir8a.exemptOrRemissionIncomeIndicator""
employeePersonalParticulars[1].ir8a.incomeTaxBorneByEmployerIndicator""
employeePersonalParticulars[1].ir8a.amountOfIncomeForTaxBorneByEmployernull
employeePersonalParticulars[1].ir8a.fixedAmountOfIncomeForTaxBorneByEmployeenull
employeePersonalParticulars[1].ir8a.cpfOrDesignatedFund5200
employeePersonalParticulars[1].ir8a.donationsDeductedThroughSalaries6
employeePersonalParticulars[1].ir8a.contributionsToMosqueBuildingFundnull
employeePersonalParticulars[1].ir8a.lifeInsurancePremiumThroughSalariesnull
employeePersonalParticulars[1].appendix8A{}
employeePersonalParticulars[1].appendix8B{}
employeePersonalParticulars[2].recordId3
employeePersonalParticulars[2].idType"2"
employeePersonalParticulars[2].idNumber"F1234567A"
employeePersonalParticulars[2].name"Employee C"
employeePersonalParticulars[2].dateOfBirth"1968-01-02"
employeePersonalParticulars[2].sex"M"
employeePersonalParticulars[2].addressType"F"
employeePersonalParticulars[2].addressLine1"12 Jalan Indah, Johor Bahru"
employeePersonalParticulars[2].addressLine2""
employeePersonalParticulars[2].addressLine3""
employeePersonalParticulars[2].postalCode""
employeePersonalParticulars[2].countryCodeForForeignAddress"MY"
employeePersonalParticulars[2].designation"Director"
employeePersonalParticulars[2].bankCode""
employeePersonalParticulars[2].commencementDate""
employeePersonalParticulars[2].cessationDate""
employeePersonalParticulars[2].ir8a.periodPaymentFromDate"2024-01-01"
employeePersonalParticulars[2].ir8a.periodPaymentToDate"2024-12-31"
employeePersonalParticulars[2].ir8a.salarynull
employeePersonalParticulars[2].ir8a.bonusnull
employeePersonalParticulars[2].ir8a.nonContractualBonusPaidDate""
employeePersonalParticulars[2].ir8a.directorFees100000
employeePersonalParticulars[2].ir8a.directorsFeesApprovalDate"2024-06-30"
employeePersonalParticulars[2].ir8a.section45Indicator"Y"
employeePersonalParticulars[2].ir8a.allowancesnull
employeePersonalParticulars[2].ir8a.grossCommissionnull
employeePersonalParticulars[2].ir8a.gratuityNoticePayExGratiaPaymentnull
employeePersonalParticulars[2].ir8a.compensationForLossOfOfficenull
employeePersonalParticulars[2].ir8a.compensationForLossOfOfficeIndicator""
employeePersonalParticulars[2].ir8a.pensionRetirementBenefitsAccruedFrom1993null
employeePersonalParticulars[2].ir8a.designatedPensionOrProvidentFundName""
employeePersonalParticulars[2].ir8a.employerContributionToPensionOrProvidentFundOutsideSgnull
employeePersonalParticulars[2].ir8a.excessOrVoluntaryCpfContributionByEmployernull
employeePersonalParticulars[2].ir8a.gainsAndProfitsFromSOGS101bnull
employeePersonalParticulars[2].ir8a.gainsAndProfitsUnderS101gnull
employeePersonalParticulars[2].ir8a.valueOfBenefitsInKindnull
employeePersonalParticulars[2].ir8a.othersIncomenull
employeePersonalParticulars[2].ir8a.totalIncome100000
employeePersonalParticulars[2].ir8a.exemptIncomeOrIncomeSubjectToTaxRemissionnull
employeePersonalParticulars[2].ir8a.exemptOrRemissionIncomeIndicator""
employeePersonalParticulars[2].ir8a.incomeTaxBorneByEmployerIndicator"F"
employeePersonalParticulars[2].ir8a.amountOfIncomeForTaxBorneByEmployernull
employeePersonalParticulars[2].ir8a.fixedAmountOfIncomeForTaxBorneByEmployeenull
employeePersonalParticulars[2].ir8a.cpfOrDesignatedFundnull
employeePersonalParticulars[2].ir8a.donationsDeductedThroughSalariesnull
employeePersonalParticulars[2].ir8a.contributionsToMosqueBuildingFundnull
employeePersonalParticulars[2].ir8a.lifeInsurancePremiumThroughSalariesnull
employeePersonalParticulars[2].appendix8A{}
employeePersonalParticulars[2].appendix8B{}

↑ Mục lục bài viết

3.7.3. Mẫu IR8A có nhiều bản ghi 8A và 8B

Giữ toàn bộ mẫu tại trang 15–17 theo dạng đường dẫn/giá trị để đọc trên màn hình; không bỏ trường rỗng hay tự tính lại số.

Vuốt ngang trên điện thoại để xem đủ các cột.

Đường dẫn JSON gốcGiá trị JSON gốc
orgAndSubmissionInfo.validateOnlyfalse
orgAndSubmissionInfo.bypassWarningfalse
orgAndSubmissionInfo.incomeYear2024
orgAndSubmissionInfo.employerTaxRefNumber"180011032C"
orgAndSubmissionInfo.authorisedPersonName"John Adams"
orgAndSubmissionInfo.contactNumber91234567
orgAndSubmissionInfo.emailAddress"abc@email.com.sg"
orgAndSubmissionInfo.submissionType"O"
orgAndSubmissionInfo.softwareCompanyName"SWD Organisation Name"
orgAndSubmissionInfo.softwareName"Application Name"
orgAndSubmissionInfo.totalNumberIR8A1
orgAndSubmissionInfo.amountTotalIncomeOfIR8A77000
orgAndSubmissionInfo.totalNumberOfApp8A1
orgAndSubmissionInfo.totalNumberOfApp8B1
employeePersonalParticulars[0].recordId1
employeePersonalParticulars[0].idType"1"
employeePersonalParticulars[0].idNumber"S8034567A"
employeePersonalParticulars[0].name"Employee A"
employeePersonalParticulars[0].dateOfBirth"1980-11-26"
employeePersonalParticulars[0].sex"M"
employeePersonalParticulars[0].addressType"Senior Chief Executive"
employeePersonalParticulars[0].addressLine1""
employeePersonalParticulars[0].addressLine2""
employeePersonalParticulars[0].addressLine3""
employeePersonalParticulars[0].postalCode""
employeePersonalParticulars[0].countryCodeForForeignAddress""
employeePersonalParticulars[0].designation""
employeePersonalParticulars[0].bankCode"7232"
employeePersonalParticulars[0].commencementDate"2024-02-01"
employeePersonalParticulars[0].cessationDate""
employeePersonalParticulars[0].ir8a.periodPaymentFromDate"2024-02-01"
employeePersonalParticulars[0].ir8a.periodPaymentToDate"2024-12-31"
employeePersonalParticulars[0].ir8a.salary55000
employeePersonalParticulars[0].ir8a.bonus10000
employeePersonalParticulars[0].ir8a.nonContractualBonusPaidDate"2024-12-31"
employeePersonalParticulars[0].ir8a.directorFeesnull
employeePersonalParticulars[0].ir8a.directorsFeesApprovalDate""
employeePersonalParticulars[0].ir8a.section45Indicator""
employeePersonalParticulars[0].ir8a.allowances2000
employeePersonalParticulars[0].ir8a.grossCommission1000
employeePersonalParticulars[0].ir8a.gratuityNoticePayExGratiaPayment1000
employeePersonalParticulars[0].ir8a.compensationForLossOfOfficenull
employeePersonalParticulars[0].ir8a.compensationForLossOfOfficeIndicator""
employeePersonalParticulars[0].ir8a.pensionRetirementBenefitsAccruedFrom19931000
employeePersonalParticulars[0].ir8a.designatedPensionOrProvidentFundName"Provident Fund"
employeePersonalParticulars[0].ir8a.employerContributionToPensionOrProvidentFundOutsideSg1000
employeePersonalParticulars[0].ir8a.excessOrVoluntaryCpfContributionByEmployer1000
employeePersonalParticulars[0].ir8a.gainsAndProfitsFromSOGS101b2000
employeePersonalParticulars[0].ir8a.gainsAndProfitsUnderS101g1000
employeePersonalParticulars[0].ir8a.valueOfBenefitsInKind3000
employeePersonalParticulars[0].ir8a.othersIncome12000
employeePersonalParticulars[0].ir8a.totalIncome77000
employeePersonalParticulars[0].ir8a.exemptIncomeOrIncomeSubjectToTaxRemission10000
employeePersonalParticulars[0].ir8a.exemptOrRemissionIncomeIndicator"1"
employeePersonalParticulars[0].ir8a.incomeTaxBorneByEmployerIndicator"P"
employeePersonalParticulars[0].ir8a.amountOfIncomeForTaxBorneByEmployer10000
employeePersonalParticulars[0].ir8a.fixedAmountOfIncomeForTaxBorneByEmployeenull
employeePersonalParticulars[0].ir8a.cpfOrDesignatedFund15400
employeePersonalParticulars[0].ir8a.donationsDeductedThroughSalaries12
employeePersonalParticulars[0].ir8a.contributionsToMosqueBuildingFund10
employeePersonalParticulars[0].ir8a.lifeInsurancePremiumThroughSalaries200
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].accommodationId1
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].addressPlaceOfResidenceByEmployer"12 Kings Rd, S123456"
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].occupationFromDate"2024-01-01"
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].occupationToDate"2024-06-30"
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].numberOfDays181
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].numberOfEmployeeSharing1
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].annualValueOfPremisesnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].furnitureAndFittingsValueIndicator""
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].furnitureAndFittingsValuenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].rentPaidByEmployer1000
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].taxableValueOfPlaceOfResidence1000
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].totalRentPaidByEmployeeForPlaceOfResidencenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].totalTaxableValueOfPlaceOfResidence1000
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].utilitiesAndHousekeepingCosts100
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].driver100
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].servantOrGardenerOrUpkeep100
employeePersonalParticulars[0].appendix8A.accommodationRecords[0].taxableValueOfUtilitiesAndHousekeeping300
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].accommodationId2
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].addressPlaceOfResidenceByEmployer"13 Kings Rd, S123457"
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].occupationFromDate"2024-07-01"
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].occupationToDate"2024-12-31"
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].numberOfDays184
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].numberOfEmployeeSharing1
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].annualValueOfPremisesnull
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].furnitureAndFittingsValueIndicator""
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].furnitureAndFittingsValuenull
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].rentPaidByEmployer1500
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].taxableValueOfPlaceOfResidence1500
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].totalRentPaidByEmployeeForPlaceOfResidence800
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].totalTaxableValueOfPlaceOfResidence700
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].utilitiesAndHousekeepingCosts100
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].driver100
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].servantOrGardenerOrUpkeep100
employeePersonalParticulars[0].appendix8A.accommodationRecords[1].taxableValueOfUtilitiesAndHousekeeping300
employeePersonalParticulars[0].appendix8A.actualCostOfHotelOrServicedApartmentnull
employeePersonalParticulars[0].appendix8A.amountPaidByEmployeenull
employeePersonalParticulars[0].appendix8A.taxableValueOfHotelAccommodationnull
employeePersonalParticulars[0].appendix8A.costOfLeavePassageAndIncidentalBenefits100
employeePersonalParticulars[0].appendix8A.interestPaidByEmployer100
employeePersonalParticulars[0].appendix8A.insurancePremiumsPaidByEmployer100
employeePersonalParticulars[0].appendix8A.freeOrSubsidisedHoliday100
employeePersonalParticulars[0].appendix8A.educationalExpenses100
employeePersonalParticulars[0].appendix8A.entranceOrTransferFeesToSocialClubs100
employeePersonalParticulars[0].appendix8A.gainsFromAssets50
employeePersonalParticulars[0].appendix8A.fullCostOfMotorVehicle30
employeePersonalParticulars[0].appendix8A.carBenefit20
employeePersonalParticulars[0].appendix8A.otherNonMonetaryAwardsOrBenefitsnull
employeePersonalParticulars[0].appendix8A.totalValueOfBenefitsInKind3000
employeePersonalParticulars[0].appendix8B.eebrRecords[0].eebrId1
employeePersonalParticulars[0].appendix8B.eebrRecords[0].companyIdNumber"180011032C"
employeePersonalParticulars[0].appendix8B.eebrRecords[0].companyName"AIS Employer"
employeePersonalParticulars[0].appendix8B.eebrRecords[0].planType"ESOW"
employeePersonalParticulars[0].appendix8B.eebrRecords[0].dateOfGrant"2023-01-04"
employeePersonalParticulars[0].appendix8B.eebrRecords[0].dateOfExerciseOrVesting"2024-07-02"
employeePersonalParticulars[0].appendix8B.eebrRecords[0].exercisePrice0
employeePersonalParticulars[0].appendix8B.eebrRecords[0].openMarketValuePerShare4
employeePersonalParticulars[0].appendix8B.eebrRecords[0].numberOfShares500
employeePersonalParticulars[0].appendix8B.eebrRecords[0].grossAmountGains2000
employeePersonalParticulars[0].appendix8B.eebrRecords[1].eebrId2
employeePersonalParticulars[0].appendix8B.eebrRecords[1].companyIdNumber"180011032C"
employeePersonalParticulars[0].appendix8B.eebrRecords[1].companyName"AIS Employer"
employeePersonalParticulars[0].appendix8B.eebrRecords[1].planType"ESOP"
employeePersonalParticulars[0].appendix8B.eebrRecords[1].dateOfGrant"2002-01-04"
employeePersonalParticulars[0].appendix8B.eebrRecords[1].dateOfExerciseOrVesting"2024-07-02"
employeePersonalParticulars[0].appendix8B.eebrRecords[1].exercisePrice0
employeePersonalParticulars[0].appendix8B.eebrRecords[1].openMarketValuePerShare1
employeePersonalParticulars[0].appendix8B.eebrRecords[1].numberOfShares1000
employeePersonalParticulars[0].appendix8B.eebrRecords[1].grossAmountGains1000
employeePersonalParticulars[0].appendix8B.totalGrossAmountGainsAfter2003S101b2000
employeePersonalParticulars[0].appendix8B.totalGrossAmountGainsBefore2003S101g1000

↑ Mục lục bài viết

Khác biệt cần phân biệt ngay trong mẫu 3.7.3

Mẫu gốc đặt "Senior Chief Executive" tại addressType và để designation rỗng. Cụm này nghĩa là chức danh lãnh đạo cấp cao nhưng trong PDF lại nằm ở ô loại địa chỉ; được giữ theo đúng vị trí nguồn, không khẳng định đó là mã loại địa chỉ hợp lệ. Mẫu còn ghi numberOfDays=181 cho 01/01–30/06/2024 và 184 cho 01/07–31/12/2024; các số 181/184 cùng toàn bộ tổng mẫu được giữ nguyên, không tự tính lại hoặc suy ra quy tắc tính ngày. Khi triển khai hãy đối chiếu quy tắc kiểm tra chính thức và môi trường thử nghiệm được chấp thuận.

↑ Mục lục bài viết

3.8. Toàn bộ định nghĩa phản hồi

Tên với Info/ info và recordID trong bảng được ghi đúng theo bảng; các ví dụ phản hồi dùng info và recordId. Nhật ký 2.5 nói bỏ info.messagecode không dùng, trong khi bảng trang 18 và các ví dụ trang 19–22 còn messageCode. Đây là khác biệt của chính bản 2.6; không tự bỏ hay thêm trường khi triển khai chỉ dựa trên một dòng của bài.

Vuốt ngang trên điện thoại để xem đủ các cột.

Trường theo bảng nguồnKiểuNội dung
returnCodeString10: xử lý thành công; 20: thành công nhưng có vấn đề không gây thất bại, xem info; 30: lỗi, chưa xử lý; 40: cảnh báo, chưa xử lý, xem info.
dataObjectĐối tượng chứa mã xác nhận khi nộp thành công.
data.acknowledgementCodeStringMã xác nhận hệ thống tạo nếu nộp thành công.
infoObjectThông tin chẩn đoán để nhà phát triển gỡ lỗi yêu cầu thất bại.
Info.messageCodeStringMã loại lỗi/cảnh báo: 850301 lỗi một hay nhiều tham số; 850302 ngoại lệ trong dịch vụ; 850305 người dùng thử không hợp lệ, các trường không hợp lệ để thử Sandbox. Bảng gọi là mã số nguyên nhưng kiểu cột là chuỗi.
info.messageStringThông báo chẩn đoán khi có cảnh báo/lỗi.
Info.warningsArrayMảng đối tượng cảnh báo, cùng định dạng fieldInfoList.
info.fieldInfoListArrayMảng đối tượng FieldInfo.
Info.fieldInfoList.sectionStringTên đối tượng gây cảnh báo/lỗi.
info.fieldInfoList.fieldStringTên trường gây cảnh báo/lỗi.
Info.fieldInfoList.messageStringThông báo chẩn đoán hỗ trợ nhà phát triển.
Info.fieldInfoList.recordIDStringMã riêng của hồ sơ bị ảnh hưởng; các mã có lỗi tương tự gộp chung, ví dụ "3,5,7".

↑ Mục lục bài viết

3.8.1. Thành công và các chế độ kiểm tra

Gọi thành công nghĩa là lần nộp AIS được chấp nhận và trả JSON. Với bypassWarning=true hoặc false, ví dụ thành công không có cảnh báo trả returnCode="10", acknowledgementCode="1500003994", info.warnings=[] và info.fieldInfoList=[].

Với bypassWarning=true, có cảnh báo vẫn thành công: ví dụ returnCode="20", acknowledgementCode="1500003996"; info.messageCode="850301"; info.message="Arguments error" (lỗi tham số); warnings có section="OrgAndSubmissionInfo", field="IncomeYear", message="Warning: Please note that you are making submission for back year records for Income Year 2024" (lưu ý đang nộp hồ sơ năm trước cho thu nhập 2024), recordId="NA"; fieldInfoList=[].

Với validateOnly=true, hệ thống chỉ kiểm tra, không nộp AIS cho IRAS dù không có lỗi và không trả acknowledgementCode. Vẫn cần mã truy cập hợp lệ. Ví dụ returnCode="10", data={}, info.warnings=[], info.fieldInfoList=[]. Không coi kết quả kiểm tra đơn thuần là đã nộp.

↑ Mục lục bài viết

Mẫu thư xác nhận nhúng ở trang 20

Nộp chính thức thành công còn gửi thư điện tử cho đại diện liên hệ của công ty và địa chỉ ghi trong dữ liệu AIS. Mẫu nhúng trong tài liệu là thư hệ thống IRAS Notification DSU, từ notification_dsu@iras.gov.sg gửi ABC <abc@abc.com.sg>, ngày 16/05/2025 lúc 2:38 chiều; chủ đề xác nhận nộp thu nhập qua AIS-API cho 2025, kèm mã tham chiếu nội bộ. Không cần thông báo/liên hệ IRAS chỉ để xác nhận đã nộp; thư mẫu nói sẽ xử lý trong năm ngày làm việc.

Thông tin mẫu: tổ chức abcd, số thuế 207008975D; thu nhập kiếm được năm 2024 (2025), người được cấp quyền MR ABC; ngày giờ nộp 05/16/2025 14:38:12, tham chiếu 1500000639, loại nộp O.

  • Thư mẫu có phần lỗi cần xử lý: hai hồ sơ nhân viên trùng chính xác thông tin thu nhập trong cùng lần nộp, minh họa SXXXX426B testUser1 và TXXXX680G testUser3. Hồ sơ trùng không được xử lý; kiểm tra và nộp lại phù hợp. Nếu không phải lỗi, thư chỉ địa chỉ data_mgmt@iras.gov.sg để liên hệ.
  • Phần cảnh báo để biết được hiển thị riêng. Nếu không thực hiện lần nộp, làm rõ với nhà cung cấp phần mềm hoặc kiểm tra nội bộ nếu dùng phần mềm tự phát triển. Muốn sửa dữ liệu, thư chỉ go.gov.sg/iras-ais-amend để xem hướng dẫn. Không trả lời thư vì đây là xác nhận tự động.

Vuốt ngang trên điện thoại để xem đủ các cột.

Loại mẫu trong thưSố hồ sơ đã nộp
FORM IR8A4
APPENDIX8A1
APPENDIX8B1

↑ Mục lục bài viết

3.8.2. Lỗi kiểm tra: từ chối với mã 30

Khi lỗi kiểm tra dữ liệu xảy ra, lần nộp AIS không được chấp nhận. Mẫu với bypassWarning=true hoặc false đều trả returnCode="30", data={}, info.messageCode="850301", info.message="Arguments error", warnings=[] và fieldInfoList gồm đủ bốn mục sau.

Vuốt ngang trên điện thoại để xem đủ các cột.

sectionfieldrecordIdThông báo gốc và ý nghĩa
OrgAndSubmissionInfoAuthorisedPersonNameNAThis field cannot be blank. Please provide a valid value — Không được để trống; cung cấp giá trị hợp lệ.
EmployeePersonalParticularsDateOfBirth1This field cannot be blank. Please provide a valid value — Không được để trống; cung cấp giá trị hợp lệ.
IR8APeriodPaymentFromDate1, 2This field cannot be blank. Please provide a valid value — Không được để trống; cung cấp giá trị hợp lệ.
IR8APeriodPaymentToDate2Date must be given as 2025-12-31 or must be same as Cessation Date — Ngày phải là 2025-12-31 hoặc bằng ngày chấm dứt. Đây là câu trong mẫu lỗi, không đổi tất cả hồ sơ sang năm 2025.

↑ Mục lục bài viết

Cảnh báo không được bỏ qua và lỗi hệ thống

Nếu bypassWarning=false mà có cảnh báo, nộp không thành công. Mẫu: returnCode="40", data={}, info.messageCode="850301", info.message="Arguments Error", warnings gồm section="orgAndSubmissionInfo", field="submissionType", message="You are submitting amendment record(s) for income derived in the year of 2024." (đang nộp hồ sơ sửa đổi cho thu nhập năm 2024), recordId="NA"; fieldInfoList=[].

Nếu lỗi hệ thống ngoài dự kiến, mẫu không có data: returnCode="30"; info.messageCode="850302"; info.message="Generic Error - Please contact API_SUPPORT@iras.gov.sg" (lỗi chung, liên hệ hỗ trợ API); fieldInfoList=[].

↑ Mục lục bài viết

Thông tin giới hạn và bản quyền trong nguồn

IRAS ghi tài liệu giúp hiểu tổng quát, không giải quyết toàn diện mọi vấn đề; cung cấp theo hiện trạng, không có bảo đảm. IRAS không chịu trách nhiệm về thiệt hại, chi phí hay tổn thất phát sinh từ hoặc liên quan việc sử dụng; khi chính sách/thực hành thay đổi, IRAS bảo lưu quyền thay đổi quan điểm.

Bản quyền thuộc IRAS, bảo lưu mọi quyền; nguồn yêu cầu xin phép bằng văn bản trước khi sao chép, truyền, ghi hoặc lưu một phần tài liệu vào hệ thống truy xuất.

↑ Mục lục bài viết

Biểu mẫu và tài nguyên chính thức

Các liên kết chính thức dưới đây sử dụng tiếng Anh.

Liên hệ tư vấn
Liên hệ tư vấn