{"id":2581,"date":"2026-05-14T04:13:33","date_gmt":"2026-05-14T04:13:33","guid":{"rendered":"https:\/\/zolobooks.com\/?page_id=2581"},"modified":"2026-05-14T04:14:19","modified_gmt":"2026-05-14T04:14:19","slug":"wht","status":"publish","type":"page","link":"https:\/\/zolobooks.com\/?page_id=2581","title":{"rendered":"WHT"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\">\n<style>\n*{box-sizing:border-box;margin:0;padding:0}\nbody{background:#f1f5fb}\n.wrap{font-family:system-ui,sans-serif;max-width:700px;margin:0 auto;padding:1.5rem 0}\n.header{background:#0f2d5e;border-radius:16px 16px 0 0;padding:1.5rem 2rem}\n.header h1{font-size:17px;font-weight:500;color:#fff;margin-bottom:3px}\n.header p{font-size:12px;color:#a8c4e8}\n.body{background:#f1f5fb;border:1px solid #e2e8f0;border-top:none;border-radius:0 0 16px 16px;padding:1.75rem}\n.section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:1.25rem 1.5rem;margin-bottom:1rem}\n.section-title{font-size:12px;font-weight:600;color:#0f2d5e;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:1rem;padding-bottom:8px;border-bottom:1px solid #f1f5f9}\n.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}\n.field{margin-bottom:0.85rem}\n.field:last-child{margin-bottom:0}\n.field label{font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:0.04em;display:block;margin-bottom:5px}\n.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;color:#0f2d5e;background:#f8fafc;outline:none;transition:border 0.15s;font-family:inherit}\n.field input:focus,.field select:focus,.field textarea:focus{border-color:#0f2d5e;background:#fff}\n.field textarea{resize:vertical;min-height:58px}\n.calc-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:8px;align-items:end;margin-bottom:8px}\n.calc-row .field{margin-bottom:0}\n.add-btn{background:#e0eaff;color:#0f2d5e;border:none;border-radius:8px;padding:9px 14px;font-size:12px;font-weight:500;cursor:pointer;margin-top:4px}\n.remove-btn{background:#fee2e2;color:#dc2626;border:none;border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer;align-self:end;margin-bottom:0}\n.gen-btn{width:100%;padding:14px;background:#0f2d5e;color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:500;cursor:pointer;margin-top:0.5rem;display:flex;align-items:center;justify-content:center;gap:8px}\n.gen-btn:hover{background:#1a56c4}\n.note{font-size:11px;color:#94a3b8;margin-top:8px;text-align:center}\n<\/style>\n\n<div class=\"wrap\">\n  <div class=\"header\">\n    <h1>WHT \/ AIT Certificate Generator<\/h1>\n    <p>Certificate of Withholding Tax \/ Advance Income Tax Deduction<\/p>\n  <\/div>\n  <div class=\"body\">\n\n    <div class=\"section\">\n      <div class=\"section-title\">Certificate Details<\/div>\n      <div class=\"row2\">\n        <div class=\"field\"><label>Certificate No \/ Serial No<\/label><input id=\"cert-no\" placeholder=\"e.g. WHT20251001AT\"><\/div>\n        <div class=\"field\"><label>TIN of Withholding Agent<\/label><input id=\"agent-tin\" placeholder=\"e.g. 101084353\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"section\">\n      <div class=\"section-title\">Withholding Agent (Payer)<\/div>\n      <div class=\"field\"><label>Name and Address<\/label><textarea id=\"agent-name\" placeholder=\"e.g. Brisca Management Services PVT LTD\nNo.110\/8, Kohalwila Road, Kelaniya\"><\/textarea><\/div>\n    <\/div>\n\n    <div class=\"section\">\n      <div class=\"section-title\">Withholdee (Payee)<\/div>\n      <div class=\"field\"><label>Name and Address<\/label><textarea id=\"holdee-name\" placeholder=\"e.g. Advantage Technologies PVT LTD\n74 A, Dharmapala Mawatha, Colombo -7\"><\/textarea><\/div>\n      <div class=\"field\"><label>NIC \/ Passport \/ Tax Identification No<\/label><input id=\"holdee-tin\" placeholder=\"e.g. 114316423\"><\/div>\n    <\/div>\n\n    <div class=\"section\">\n      <div class=\"section-title\">Payment Period & Amount<\/div>\n      <div class=\"row3\">\n        <div class=\"field\"><label>Period From<\/label><input type=\"date\" id=\"period-from\"><\/div>\n        <div class=\"field\"><label>Period To<\/label><input type=\"date\" id=\"period-to\"><\/div>\n        <div class=\"field\"><label>Gross Amount (Rs.)<\/label><input type=\"number\" id=\"gross\" placeholder=\"0.00\" oninput=\"updateTotals()\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"section\">\n      <div class=\"section-title\">Payment Details<\/div>\n      <div style=\"font-size:11px;color:#64748b;margin-bottom:8px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr 32px;gap:8px;font-weight:600;text-transform:uppercase;letter-spacing:0.03em\">\n        <span>Payment Type<\/span><span>Amount Subject (Rs.)<\/span><span>Amount Not Subject (Rs.)<\/span><span>WHT Rate (%)<\/span><span>WHT Amount (Rs.)<\/span><span><\/span>\n      <\/div>\n      <div id=\"rows\"><\/div>\n      <button class=\"add-btn\" onclick=\"addRow()\">+ Add row<\/button>\n    <\/div>\n\n    <div class=\"section\">\n      <div class=\"section-title\">Payment to IRD<\/div>\n      <div class=\"row2\">\n        <div class=\"field\"><label>Cheque \/ Auto Payment Receipt No<\/label><input id=\"receipt-no\" placeholder=\"e.g. 101074587160844\"><\/div>\n        <div class=\"field\"><label>Date of Payment<\/label><input type=\"date\" id=\"pay-date\"><\/div>\n      <\/div>\n      <div class=\"row2\">\n        <div class=\"field\"><label>Name of Authorized Officer<\/label><input id=\"officer-name\" placeholder=\"e.g. W.M.Muthushan Hansika\"><\/div>\n        <div class=\"field\"><label>Date<\/label><input type=\"date\" id=\"sign-date\"><\/div>\n      <\/div>\n    <\/div>\n\n    <button class=\"gen-btn\" onclick=\"generatePDF()\">\u2b07 Generate & Download PDF<\/button>\n    <div class=\"note\">PDF is generated in your browser \u2014 no data is sent to any server.<\/div>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n<script>\nlet rowCount=0;\nfunction addRow(){\n  rowCount++;\n  const id=rowCount;\n  const div=document.createElement('div');\n  div.id='row-'+id;\n  div.style.cssText='display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr 32px;gap:8px;align-items:center;margin-bottom:8px';\n  div.innerHTML=`\n    <input style=\"padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;color:#0f2d5e;background:#f8fafc;outline:none\" placeholder=\"e.g. Rent\" id=\"pt-${id}\">\n    <input type=\"number\" style=\"padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;color:#0f2d5e;background:#f8fafc;outline:none\" placeholder=\"0.00\" id=\"as-${id}\" oninput=\"autoCalc(${id})\">\n    <input type=\"number\" style=\"padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;color:#0f2d5e;background:#f8fafc;outline:none\" placeholder=\"-\" id=\"ans-${id}\">\n    <input type=\"number\" style=\"padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;color:#0f2d5e;background:#f8fafc;outline:none\" placeholder=\"e.g. 10\" id=\"wr-${id}\" oninput=\"autoCalc(${id})\">\n    <input type=\"number\" style=\"padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;color:#0f2d5e;background:#f8fafc;outline:none;background:#f0f6fc\" placeholder=\"0.00\" id=\"wa-${id}\" readonly>\n    <button onclick=\"removeRow(${id})\" style=\"background:#fee2e2;color:#dc2626;border:none;border-radius:6px;padding:7px 8px;cursor:pointer;font-size:13px\">\u2715<\/button>\n  `;\n  document.getElementById('rows').appendChild(div);\n}\nfunction removeRow(id){document.getElementById('row-'+id).remove();}\nfunction autoCalc(id){\n  const as=parseFloat(document.getElementById('as-'+id)?.value)||0;\n  const wr=parseFloat(document.getElementById('wr-'+id)?.value)||0;\n  const wa=as*(wr\/100);\n  if(document.getElementById('wa-'+id)) document.getElementById('wa-'+id).value=wa.toFixed(2);\n}\nfunction updateTotals(){}\nfunction fmtN(n){return parseFloat(n||0).toLocaleString('en-LK',{minimumFractionDigits:2,maximumFractionDigits:2});}\nfunction fmtDate(d){if(!d)return'';const p=d.split('-');return p[2]+'\/'+p[1]+'\/'+p[0];}\nfunction getRows(){\n  const rows=[];\n  document.querySelectorAll('[id^=\"pt-\"]').forEach(el=>{\n    const id=el.id.split('-')[1];\n    rows.push({\n      type:el.value||'',\n      subject:parseFloat(document.getElementById('as-'+id)?.value)||0,\n      notSubject:parseFloat(document.getElementById('ans-'+id)?.value)||0,\n      rate:parseFloat(document.getElementById('wr-'+id)?.value)||0,\n      wht:parseFloat(document.getElementById('wa-'+id)?.value)||0,\n    });\n  });\n  return rows;\n}\n\nfunction generatePDF(){\n  const {jsPDF}=window.jspdf;\n  const doc=new jsPDF({orientation:'portrait',unit:'mm',format:'a4'});\n  const W=210,ml=20,mr=190,cw=mr-ml;\n\n  \/\/ Fonts\n  doc.setFont('helvetica');\n\n  \/\/ Border\n  doc.setDrawColor(0);\n  doc.setLineWidth(0.5);\n  doc.rect(ml-5,15,cw+10,262);\n\n  \/\/ Attachment\n  doc.setFontSize(10);doc.setFont('helvetica','bold');\n  doc.text('Attachment 1',mr,22,{align:'right'});\n\n  let y=30;\n  \/\/ Cert No\n  doc.setFontSize(9);doc.setFont('helvetica','normal');\n  doc.text('Certificate No:\/ Serial No: ...',ml,y);\n  doc.setFont('helvetica','bold');\n  doc.text(document.getElementById('cert-no').value||'',ml+52,y);\n  doc.setFont('helvetica','normal');\n  doc.text('..............................',ml+52+(document.getElementById('cert-no').value.length*1.8),y);\n\n  y+=7;\n  const agentTin=document.getElementById('agent-tin').value||'';\n  doc.text('TIN of the Withholding Agent: ',ml,y);\n  doc.setFont('helvetica','bold');\n  doc.text(agentTin,ml+54,y);\n  doc.setFont('helvetica','normal');\n  doc.text('.......................................',ml+54+(agentTin.length*1.8),y);\n\n  \/\/ Title\n  y+=10;\n  doc.setFontSize(12);doc.setFont('helvetica','bold');\n  doc.text('Certificate of Withholding Tax (WHT)\/ Advance Income Tax (AIT) Deduction',W\/2,y,{align:'center'});\n\n  y+=10;\n  doc.setFontSize(9);doc.setFont('helvetica','normal');\n\n  \/\/ Agent name\n  const agentLines=doc.splitTextToSize(document.getElementById('agent-name').value||'',90);\n  doc.text('Name and address of the Withholding Agent:',ml,y);\n  doc.setFont('helvetica','bold');\n  doc.text(agentLines,ml+72,y);\n  doc.setFont('helvetica','normal');\n  y+=agentLines.length>1?agentLines.length*4+2:6;\n  doc.text('......................................................................................................................',ml,y);\n  y+=5;\n  doc.text('......................................................................................................................',ml,y);\n\n  \/\/ Withholdee\n  y+=8;\n  const holdeeLines=doc.splitTextToSize(document.getElementById('holdee-name').value||'',90);\n  doc.text('Name and address of the Withholdee: ....',ml,y);\n  doc.setFont('helvetica','bold');\n  doc.text(holdeeLines,ml+66,y);\n  doc.setFont('helvetica','normal');\n  y+=holdeeLines.length>1?holdeeLines.length*4+2:6;\n  doc.text('......................................................................................................................',ml,y);\n  y+=5;\n  doc.text('......................................................................................................................',ml,y);\n\n  \/\/ NIC \/ TIN\n  y+=8;\n  const holdeeTin=document.getElementById('holdee-tin').value||'';\n  doc.text('National Identity Card No. \/Passport No. \/ Tax Identification No.',ml,y);\n  doc.setFont('helvetica','bold');\n  doc.text(holdeeTin,ml+110,y);\n  doc.setFont('helvetica','normal');\n  doc.text('..............................',ml+110+(holdeeTin.length*1.8),y);\n\n  \/\/ Period\n  y+=7;\n  const pf=fmtDate(document.getElementById('period-from').value);\n  const pt=fmtDate(document.getElementById('period-to').value);\n  doc.text('Payment made for Period: from: ',ml,y);\n  doc.setFont('helvetica','bold');doc.text(pf,ml+52,y);\n  doc.setFont('helvetica','normal');doc.text('.............. to: ',ml+52+(pf.length*1.8),y);\n  doc.setFont('helvetica','bold');doc.text(pt,ml+80,y);\n  doc.setFont('helvetica','normal');doc.text('...............................',ml+80+(pt.length*1.8),y);\n\n  \/\/ Gross\n  y+=7;\n  const gross=document.getElementById('gross').value||'0';\n  doc.text('Gross Amounts (Rs.): ....',ml,y);\n  doc.setFont('helvetica','bold');doc.text(fmtN(gross),ml+36,y);\n  doc.setFont('helvetica','normal');doc.text('......................................................................................................................',ml+36+(fmtN(gross).length*1.8),y);\n\n  \/\/ Table\n  y+=8;\n  const rows=getRows();\n  const cols=[ml,ml+35,ml+75,ml+107,ml+127,ml+152,mr];\n  const headers=['Payment Type','Amount Subject\\nto WHT\/AIT\\n(Rs.)','Amount Not\\nSubject to\\nWHT\/AIT (Rs.)','WHT\/AIT\\nRate (%)','Amount of\\nWHT\/AIT\\nDeducted (Rs.)','Net Amount\\nPaid (Rs,)'];\n  const hRow=22;\n\n  \/\/ Header bg\n  doc.setFillColor(230,230,230);\n  doc.rect(ml,y,cw,hRow,'F');\n  doc.setDrawColor(0);doc.setLineWidth(0.3);\n  \/\/ outer rect\n  doc.rect(ml,y,cw,hRow+((rows.length+1)*10));\n  \/\/ vertical lines\n  cols.slice(1,-1).forEach(x=>doc.line(x,y,x,y+hRow+((rows.length+1)*10)));\n\n  doc.setFontSize(8);doc.setFont('helvetica','bold');\n  headers.forEach((h,i)=>{\n    const cx=(cols[i]+cols[i+1])\/2;\n    const lines=h.split('\\n');\n    const startY=y+4;\n    lines.forEach((l,li)=>doc.text(l,cx,startY+li*4,{align:'center'}));\n  });\n\n  \/\/ horizontal line after header\n  doc.line(ml,y+hRow,mr,y+hRow);\n  doc.setFont('helvetica','normal');doc.setFontSize(9);\n\n  let totalSubject=0,totalWHT=0,totalNet=0;\n  rows.forEach((r,ri)=>{\n    const ry=y+hRow+ri*10+7;\n    doc.text(r.type,cols[0]+2,ry);\n    doc.text(fmtN(r.subject),(cols[1]+cols[2])\/2,ry,{align:'center'});\n    doc.text(r.notSubject>0?fmtN(r.notSubject):'-',(cols[2]+cols[3])\/2,ry,{align:'center'});\n    doc.text(r.rate+'%',(cols[3]+cols[4])\/2,ry,{align:'center'});\n    doc.text(fmtN(r.wht),(cols[4]+cols[5])\/2,ry,{align:'center'});\n    const net=r.subject-r.wht;\n    doc.text(fmtN(net),(cols[5]+cols[6])\/2,ry,{align:'center'});\n    doc.line(ml,ry+3,mr,ry+3);\n    totalSubject+=r.subject;totalWHT+=r.wht;totalNet+=(r.subject-r.wht);\n  });\n\n  \/\/ Total row\n  const ty=y+hRow+rows.length*10+7;\n  doc.setFont('helvetica','bold');\n  doc.text('Total',cols[0]+2,ty);\n  doc.text(fmtN(totalSubject),(cols[1]+cols[2])\/2,ty,{align:'center'});\n  doc.text('-',(cols[2]+cols[3])\/2,ty,{align:'center'});\n  const avgRate=rows.length>0?(rows.reduce((s,r)=>s+r.rate,0)\/rows.length).toFixed(0)+'%':'';\n  doc.text(avgRate,(cols[3]+cols[4])\/2,ty,{align:'center'});\n  doc.text(fmtN(totalWHT),(cols[4]+cols[5])\/2,ty,{align:'center'});\n  doc.text(fmtN(totalNet),(cols[5]+cols[6])\/2,ty,{align:'center'});\n\n  y=y+hRow+rows.length*10+18;\n\n  doc.setFont('helvetica','normal');doc.setFontSize(9);\n  doc.text('Above deducted WHT\/AIT was paid to the Commissioner General of Inland Revenue as follows.',ml,y);\n\n  y+=10;\n  const rno=document.getElementById('receipt-no').value||'';\n  const pd=fmtDate(document.getElementById('pay-date').value);\n  doc.setFont('helvetica','bold');doc.text(rno,ml,y);\n  doc.text(pd,W\/2+10,y);\n  doc.setFont('helvetica','normal');\n  y+=5;\n  doc.text('.......................................................',ml,y);\n  doc.text('.......................................................',W\/2+10,y);\n  y+=4;\n  doc.text('Cheque\/Auto Payment Receipt No.',ml,y);\n  doc.text('Date of Payment',W\/2+10,y);\n\n  y+=10;\n  const officer=document.getElementById('officer-name').value||'';\n  doc.setFont('helvetica','bold');doc.text(officer,ml+5,y);\n  doc.setFont('helvetica','normal');\n  y+=5;\n  doc.text('.......................................................',ml,y);\n  doc.text('.......................................................',W\/2+10,y);\n  y+=4;\n  doc.text('                    Name and Signature of the Authorized Officer',ml,y);\n\n  y+=10;\n  const sd=fmtDate(document.getElementById('sign-date').value);\n  doc.text('Date: ',ml,y);\n  doc.setFont('helvetica','bold');doc.text(sd,ml+10,y);\n  doc.setFont('helvetica','normal');\n  doc.text('.......................................................',ml+10+(sd.length*1.8),y);\n\n  doc.save('WHT_Certificate_'+(document.getElementById('cert-no').value||'certificate')+'.pdf');\n}\n\n\/\/ Add one row by default\naddRow();\n<\/script>\n<\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-2581","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zolobooks.com\/index.php?rest_route=\/wp\/v2\/pages\/2581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zolobooks.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zolobooks.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zolobooks.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zolobooks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2581"}],"version-history":[{"count":2,"href":"https:\/\/zolobooks.com\/index.php?rest_route=\/wp\/v2\/pages\/2581\/revisions"}],"predecessor-version":[{"id":2586,"href":"https:\/\/zolobooks.com\/index.php?rest_route=\/wp\/v2\/pages\/2581\/revisions\/2586"}],"wp:attachment":[{"href":"https:\/\/zolobooks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}