1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b52fbaa0-dedc-4676-bcd1-bc5bd7237751",e._sentryDebugIdIdentifier="sentry-dbid-b52fbaa0-dedc-4676-bcd1-bc5bd7237751")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6502],{4247:function(e,n,t){Promise.resolve().then(t.bind(t,53359)),Promise.resolve().then(t.bind(t,88489)),Promise.resolve().then(t.bind(t,18748)),Promise.resolve().then(t.bind(t,80110)),Promise.resolve().then(t.t.bind(t,65878,23)),Promise.resolve().then(t.t.bind(t,72972,23))},53359:function(e,n,t){"use strict";t.d(n,{default:function(){return c}});var i=t(57437),r=t(2265),o=t(47899);let s=[{id:"safe-to-enter",question:"Is it safe to enter my ID number?",answerText:"Yes. ID numbers are sent over TLS, processed in memory on our servers, and not stored, logged, or retained. Single web checks are unlimited and do not require an account. We do not send ID numbers to analytics or error-tracking tools."},{id:"official-identity",question:"Does CheckID verify official identity or Home Affairs registration?",answerText:"No. CheckID performs structural validation only. We confirm format, checksum, and the information encoded in the number itself. We do not query Home Affairs, credit bureaus, or any database to confirm who an ID belongs to."},{id:"decoded-fields",question:"What information is decoded from an SA ID number?",answerText:"You will see whether the number is structurally valid, plus the encoded birth date, age, gender, and citizenship indicator. We cannot tell you who the ID belongs to or whether Home Affairs issued that number to someone."},{id:"api-available",question:"Do you have an API?",answerText:"Yes. A free test API key is available for development. API Starter includes 1,000 single production calls per month; Professional and Business add bulk API access and team features. See the developers guide or 5-minute integration tutorial for details."},{id:"cancel-anytime",question:"Can I cancel my subscription at any time?",answerText:"Yes. Paid plans are billed monthly and you can cancel through your billing portal at any time. Single checks on the web remain free without a subscription."}];var a=t(4947);function l(e){let{id:n,answerText:t}=e;return(0,i.jsxs)("div",{className:"space-y-2 leading-relaxed",children:[t,"api-available"===n?(0,i.jsxs)("div",{children:[(0,i.jsx)(o.Z,{href:"/api-documentation/developers-guide",className:"link",children:"Developers guide"})," \xb7 ",(0,i.jsx)(o.Z,{href:"/articles/5-minute-id-verification-setup",className:"link",children:"5-minute integration tutorial"})]}):null,"cancel-anytime"===n?(0,i.jsx)("div",{children:(0,i.jsx)(o.Z,{href:"/#validator",className:"link",children:"unlimited single web checks and no sign-up"})}):null]})}let u=e=>{var n;let{id:t,question:o,answer:s}=e,a=(0,r.useRef)(null),[l,u]=(0,r.useState)(!1);return(0,i.jsxs)("li",{children:[(0,i.jsxs)("button",{className:"relative flex gap-2 items-center w-full py-5 text-base font-semibold text-left border-t md:text-lg border-gray-200",onClick:e=>{e.preventDefault(),u(!l)},"aria-expanded":l,children:[(0,i.jsx)("span",{className:"flex-1 text-gray-800 ".concat(l?"text-teal-600":""),children:o}),(0,i.jsxs)("svg",{className:"flex-shrink-0 w-4 h-4 ml-auto fill-current text-gray-600",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("rect",{y:"7",width:"16",height:"2",rx:"1",className:"transform origin-center transition duration-200 ease-out ".concat(l&&"rotate-180")}),(0,i.jsx)("rect",{y:"7",width:"16",height:"2",rx:"1",className:"transform origin-center rotate-90 transition duration-200 ease-out ".concat(l&&"rotate-180 hidden")})]})]}),(0,i.jsx)("div",{ref:a,className:"transition-all duration-300 ease-in-out text-gray-700 overflow-hidden",style:l?{maxHeight:null==a?void 0:null===(n=a.current)||void 0===n?void 0:n.scrollHeight,opacity:1}:{maxHeight:0,opacity:0},children:(0,i.jsx)("div",{className:"pb-5 leading-relaxed",children:s})})]})};var c=()=>(0,i.jsx)("section",{className:"bg-white",id:"faq",children:(0,i.jsxs)("div",{className:"py-24 px-8 max-w-7xl mx-auto flex flex-col md:flex-row gap-12",children:[(0,i.jsxs)("div",{className:"flex flex-col text-left basis-1/2",children:[(0,i.jsx)("p",{className:"inline-block font-semibold text-teal-600 mb-4",children:"FAQ"}),(0,i.jsx)("h2",{className:"sm:text-4xl text-3xl font-extrabold text-gray-900",children:"Frequently asked questions"}),(0,i.jsx)(o.Z,{href:a.ok,className:"mt-6 inline-flex items-center text-teal-600 hover:text-teal-700 font-semibold",children:"See all FAQs â"})]}),(0,i.jsx)("ul",{className:"basis-1/2",children:s.map(e=>(0,i.jsx)(u,{id:e.id,question:e.question,answer:(0,i.jsx)(l,{id:e.id,answerText:e.answerText})},e.id))})]})})},80110:function(e,n,t){"use strict";t.d(n,{default:function(){return x}});var i=t(2265),r=t(99464),o=t(77325),s=t(23854),a=t(31359),l=t(8973),u=t
1(87992),c=t(2323),d=t(13316),f=t(30682),p=t(40257);function h(e){if(!("false"!==p.env.NEXT_PUBLIC_WEBMCP_ENABLED))return null;let n=function(){for(let e of["undefined"!=typeof document?document:void 0,"undefined"!=typeof navigator?navigator:void 0]){let n=null==e?void 0:e.modelContext;if("function"==typeof(null==n?void 0:n.registerTool))return n}return null}();if(!n)return null;let t=new AbortController;return n.registerTool(e,{signal:t.signal}).catch(n=>{(null==n?void 0:n.name)!=="AbortError"&&console.error('[webmcp] Failed to register tool "'.concat(e.name,'":'),n)}),()=>t.abort()}function m(e,n){(0,a.d)(a._.WEBMCP_TOOL_CALLED,{tool:e,surface:"webmcp"},n?{tier:"interaction",deferInteraction:!1}:{tier:"interaction"})}let g="validate_sa_id",b="Structural validation only â not a Home Affairs or government records check. The ID number was validated in memory and never stored.",v="start_checkout",y=["individual","professional"];function x(e){let{validator:n=!1,checkout:t=!1}=e;return(0,i.useEffect)(()=>{let e=n?h({name:g,description:"Validate a South African ID number on CheckID: checks the 13-digit format, Luhn checksum, and decodes date of birth, age, gender, and citizenship status. "+b,inputSchema:{type:"object",properties:{idNumber:{type:"string",pattern:"^[0-9]{13}$",description:"The 13-digit South African ID number to validate."}},required:["idNumber"]},annotations:{readOnlyHint:!0},async execute(e){m(g,!1);let n="string"==typeof e.idNumber?e.idNumber.trim():"",t=await (0,u._)(n);if(!t)return{isValid:!1,error:"Validation failed. Please try again."};let i=(0,l.Tc)(t);return{isValid:i.isValid,dateOfBirth:i.dob,age:i.age,gender:i.gender,citizenship:i.citizenship,note:b}}}):void 0,i=t?h({name:v,description:"Open secure Stripe checkout for a CheckID paid plan (API Starter or Professional, monthly or annual billing) and navigate the user to it. Requires user confirmation. Payment details are completed on Stripe's hosted page â the agent never handles card details.",inputSchema:{type:"object",properties:{plan:{type:"string",enum:[...y],description:"The paid plan to purchase: 'individual' (API Starter, 1,000 API validations/month) or 'professional' (bulk validation and team access)."},billingPeriod:{type:"string",enum:["monthly","annual"],description:"Billing period. Defaults to monthly."},confirmed:{type:"boolean",description:"Must be set to true only after the user explicitly approved starting checkout for the chosen plan. Calls without it are rejected."}},required:["plan","confirmed"]},annotations:{readOnlyHint:!1,consequentialHint:!0},async execute(e){if(m(v,!0),!0!==e.confirmed)return{error:"Confirmation required. Ask the user to explicitly approve starting checkout for the chosen plan, then call again with confirmed: true."};let n=function(e,n){let t=(0,f.hS)("string"==typeof e?e:void 0);if(!t)return null;let i=r.Z.stripe.plans.find(e=>e.name===(0,o.jB)(t)),s="annual"==("annual"===n?"annual":"monthly")?null==i?void 0:i.priceIdAnnual:null==i?void 0:i.priceId;return"string"==typeof s&&s?s:null}(e.plan,e.billingPeriod);if(!n)return{error:"Unknown plan. Choose 'individual' or 'professional'."};try{let e=await (0,c.S)({priceId:n,mode:"subscription",source:s.JA,discountCode:(0,d.oy)(new URLSearchParams(window.location.search).get("code"))});return window.location.href=e,{status:"redirecting",note:"Opening secure Stripe checkout. The user completes payment details on Stripe's hosted page."}}catch(e){return console.error("[webmcp] Checkout session creation failed:",e),{error:"Checkout could not be started. Ask the user to retry from the pricing page."}}}}):void 0;return()=>{null==e||e(),null==i||i()}},[n,t]),null}},6050:function(e,n,t){"use strict";var i=t(34307),r=t(69064),o=t(99376),s=t(99464);let a=i.Z.create({baseURL:"/api"});a.interceptors.response.use(function(e){return e.data},function(e){var n,t,i,a,l,u;let c="",d=!1;return(null===(n=e.response)||void 0===n?void 0:n.status)===401?(r.Am.error("Please login"),(0,o.redirect)(s.Z.auth.loginUrl)):(null===(t=e.response)||void 0===t?void 0:t.status)===403?(c=(null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(i=a.data)||void 0===i?void 0:i.error)||"Forbidden",d=!0):c=(null==e?void 0:null===(u=e.response)||void 0===u?void 0:null===(l=u.data)||void 0===l?void 0:l.error)||e.message||e.toString(),e.message="string"==typeof c?c:JSON.stringify(c),console.error(e.message),d||(e.message?r.Am.error(e.message):r.Am.error("something went wrong...")),Promise.reject(e)}),n.Z=a},2323:function(e,n,t){"use strict";t.d(n,{S:function(){return a}});var i=t(6050),r=t(66206),o=t(30682),s=t(23854);async function a(e){let{priceId:n,mode:t,source:a,discountCode:l}=e,u=window.location.origin,c=(0,o.qn)(window.location.href),d=(0,r.YW)(),{url:f}=await i.Z.post("/stripe/create-checkout",{priceId:n,successUrl:"".concat(u,"/dashboard/success?session_id={CHECKOUT_SESSION_ID}"),cancelUrl:c,mode:t,checkout_client:(0,s.Pd)(),...(0,s.Q_)(a),...l&&{discountCode:l},...d&&{gclid:d.gclid,gclAw:d.gclAw,wbraid:d.wbraid,gbraid:d.gbraid}});return f}},30682:function(e,n,t){"use strict";t.d(n,{hS:function(){return o},qn:function(){return a},s1:function(){return s}});let i="checkout",r="billing";function o(e){return"individual"===e||"professional"===e?e:null}function s(e){let n=o(e.get(i)),t=e.get(r);return n&&("monthly"===t||"annual"===t)?{plan:n,billing:t}:null}function a(e){let n=new URL(e);return n.searchParams.delete(i),n.searchParams.delete(r),n.toString()}},13316:function(e,n,t){"use strict";t.d(n,{be:function(){return a},gh:function(){return l},oy:function(){return s}});let i={"20OFF":{code:"20OFF",message:"20% off your first month applied!",discountType:"first-month",discountAmount:20},"20LIFE":{code:"20LIFE",message:"20% off for life applied!",discountType:"lifetime",discountAmount:20},"30OFF":{code:"30OFF",message:"30% off your first month applied!",discountType:"first-month",discountAmount:30},HALF:{code:"HALF",message:"50% off your first month applied!",discountType:"first-month",discountAmount:50}},r=new Set(Object.keys(i)),o=/^[a-z0-9_-]{1,64}$/i;function s(e){if(!e)return null;let n=e.trim();return o.test(n)?n:null}function a(e){if(!e)return null;let n=e.toUpperCase();return r.has(n)?n:null}function l(e){let n=i[e];return n?{message:n.message,discountType:n.discountType,discountAmount:n.discountAmount}:null}},4947:function(e,n,t){"use strict";t.d(n,{CS:function(){return r},PL:function(){return o},Su:function(){return u},Yq:function(){return c},di:function(){return f},ff:function(){return l},h6:function(){return p},ok:function(){return i},sG:function(){return s},x6:function(){return a},zN:function(){return d}});let i="/frequently-asked-questions",r="/about",o="/business",s="/api-documentation/developers-guide",a="/articles/5-minute-id-verification-setup",l="/sa-id-validator-test-cases",u="/articles/validate-south-african-id-javascript",c="/articles/validate-south-african-id-csharp",d="/articles/validate-south-african-id-php",f="/articles/validate-south-african-id-python",p="/#validator"},77325:function(e,n,t){"use strict";t.d(n,{Bh:function(){return r},EV:function(){return x},F7:function(){return a},L6:function(){return d},X8:function(){return f},Yr:function(){return g},aM:function(){return w},ax:function(){return u},cL:function(){return m},dF:function(){return o},jB:function(){return y},qN:function(){return I},v5:function(){return p},y9:function(){return v}});var i=t(99464);let r={FREE:"Free Plan",INDIVIDUAL:"Individual",INDIVIDUAL_LEGACY:"Individual Subscription",PROFESSIONAL:"Professional",BUSINESS:"Business",TEAMS_SUBSCRIPTION:"teams subscription"},o="/fair-usage",s=[{priceId:"price_1Qcce8BXDnEb0X9KBIY7ACLf",period:"monthly"},{priceId:"price_1QccfTBXDnEb0X9KTHRh79vw",period:"annual"},{priceId:"price_1QTOGTBXDnEb0X9KgAJnTiZt",period:"monthly"},{priceId:"price_1QTOGTBXDnEb0X9KI1lMMcIm",period:"annual"}],a=[{priceId:"price_1TlR6QBXDnEb0X9KzwG12wKC",period:"monthly"},{priceId:"price_1TlR7HBXDnEb0X9KqVDgC3iN",period:"annual"},{priceId:"price_1TcaXsBXDnEb0X9KzY2AuGag",period:"monthly"},{priceId:"price_1TcaYNBXDnEb0X9KP061YcED",period:"annual"}];function l(e){let n=i.Z.stripe.plans.find(n=>n.name===e),t=[];
1return(null==n?void 0:n.priceId)&&t.push(n.priceId),(null==n?void 0:n.priceIdAnnual)&&t.push(n.priceIdAnnual),t}function u(e){return!!e&&("individual"===e||"professional"===e||"business"===e)}let c=new Set(["active","past_due","trialing","unpaid","incomplete"]);function d(e){return{tier:e.planType,status:e.status}}function f(e){return"individual"===e.tier&&"active"===e.status}function p(e,n){let t=v(e);return!(!t||!(u(n.tier)&&c.has(n.status))||"professional"===t&&f(n))}let h={[r.FREE]:"free",[r.INDIVIDUAL]:"individual",[r.PROFESSIONAL]:"professional",[r.BUSINESS]:"business"};function m(e,n){if(!(null==n?void 0:n.hasAccess))return!1;let t=h[e];return void 0!==t&&n.planType===t}function g(e,n){return e&&"business"===e.toLowerCase()||"business"===n?"business":(function(e){if(!e)return 0;let n=e.toLowerCase()}(e),"professional")}let b=null;function v(e){var n;return e&&null!==(n=(function(){if(!b){let e=new Map;for(let{priceId:n}of a)e.set(n,"business");for(let n of l(r.PROFESSIONAL))e.set(n,"professional");for(let n of[...l(r.INDIVIDUAL),...s.map(e=>{let{priceId:n}=e;return n})])e.set(n,"individual");b=e}return b})().get(e))&&void 0!==n?n:null}function y(e){return"business"===e?r.BUSINESS:"professional"===e?r.PROFESSIONAL:r.INDIVIDUAL}function x(e){return"professional"===e||"business"===e}function I(e){return"professional"===e||"business"===e}function w(){return"Unlimited validations (fair usage policy applies)"}}},function(e){e.O(0,[2972,7765,6137,4353,9064,4307,1806,1917,7849,991,2971,7757,1744],function(){return e(e.s=4247)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.