Singapore UEN / GST Registration Number Validation API
Validate Singapore UEN / GST Registration Number numbers via REST API. Backed by Format validation (ACRA UEN register lookup coming) — returns registration status, company name, and address in a single call.
Quick start
CURL
curl -H "Authorization: Bearer YOUR_API_KEY" \ https://www.taxid.dev/api/v1/validate/SG/199900888E
Single validation
Validate one Singapore UEN / GST Registration Number number. Returns full company details for valid numbers.
const res = await fetch(
'https://www.taxid.dev/api/v1/validate/SG/199900888E',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await res.json();
/*
{
"valid": true,
"status": "active",
"company_name": "Example GmbH",
"address": "Musterstraße 1, Singapore",
"country_code": "SG",
"vat_number": "199900888E",
"cached": false,
"request_id": "req_01abc..."
}
*/Response format
{
"valid": true,
"status": "active",
"company_name": "Example Singapore Ltd",
"address": "Musterstraße 1, Singapore",
"country_code": "SG",
"vat_number": "199900888E",
"cached": false,
"request_id": "req_01abc..."
}| Field | Type | Description |
|---|---|---|
| valid | boolean | true if the number is registered and active |
| status | string | "active", "inactive", "not_found", or "invalid_format" |
| company_name | string | null | Registered company name (where available from authority) |
| address | string | null | Registered address (where available from authority) |
| country_code | string | ISO 2-letter code — always "SG" for this endpoint |
| vat_number | string | The VAT number as sent in the request |
| cached | boolean | true if result served from cache (valid: 24h, invalid: 1h) |
| request_id | string | Unique request ID for support and audit logs |
Batch validation
Validate up to 25 numbers in a single POST request. Numbers are processed in parallel — ideal for onboarding flows and nightly reconciliation.
curl -s -X POST https://www.taxid.dev/api/v1/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"numbers": [
{ "country": "SG", "vat": "199900888E" },
{ "country": "SG", "vat": "1999008889" }
]
}'[
{
"vat": "199900888E",
"valid": true,
"status": "active",
"company_name": "Example Ltd",
"country_code": "SG",
"cached": false
},
{
"vat": "1999008889",
"valid": false,
"status": "not_found",
"country_code": "SG",
"cached": false
}
]Error codes
| HTTP status | Meaning | Action |
|---|---|---|
| 400 | Bad request — malformed VAT format | Check the VAT format against the pattern below |
| 401 | Missing or invalid API key | Pass a valid Bearer token in the Authorization header |
| 404 | Country not supported | Check /vat-api for the full list of supported countries |
| 422 | Validation failed — invalid format | The number does not match the expected format |
| 429 | Rate limit exceeded | Back off and retry after the Retry-After header value |
| 503 | Upstream authority unavailable | VIES/authority is temporarily down — retry with exponential backoff |
Singapore UEN / GST Registration Number format reference
| Property | Value |
|---|---|
| Country code (ISO) | SG |
| Local name | UEN / GST Registration Number |
| Format | UEN: 8 or 9 digits + letter, or T/S/R + 2 digits + 2 letters + 4 digits + letter; IRAS GST-only numbers: M + 8 characters + letter |
| Regex | ^([0-9]{8}[A-Z]|[0-9]{9}[A-Z]|[TSR][0-9]{2}[A-Z]{2}[0-9]{4}[A-Z]|M[0-9R][0-9]{7}[A-Z])$ |
| Example | 199900888E |
| Standard rate | 9% |
| Validation source | Format validation (ACRA UEN register lookup coming) |
| VIES supported | No |
Singapore raised its GST rate from 8% to 9% in January 2024. Businesses with taxable turnover exceeding SGD 1 million must register for GST. For a business or company the GST registration number is its UEN (Unique Entity Number), which already ends in a check letter; entities without a UEN get an IRAS-issued number starting with M. TaxID checks a UEN against the ACRA UEN register published on data.gov.sg, which confirms the entity and its status but not GST registration itself.
Frequently asked questions
What does the TaxID API return for a Singapore UEN / GST Registration Number validation?
For a valid Singapore UEN / GST Registration Number number the API returns: `valid: true`, `status: "active"`, plus `company_name` and `address` where available from Format validation (ACRA UEN register lookup coming). For invalid numbers it returns `valid: false` with a reason code. All fields are documented in the API reference.
How fast is the Singapore UEN / GST Registration Number validation API?
Cached results (valid numbers are cached 24h, invalid 1h) respond in under 10ms. Uncached requests that require a live lookup via Format validation (ACRA UEN register lookup coming) typically complete in 100–400ms. The `cached` field in the response tells you whether the result came from cache.
What is the Singapore UEN / GST Registration Number number format?
Singapore UEN / GST Registration Number numbers (UEN / GST Registration Number) follow the pattern: UEN: 8 or 9 digits + letter, or T/S/R + 2 digits + 2 letters + 4 digits + letter; IRAS GST-only numbers: M + 8 characters + letter. A valid example is `199900888E`. The TaxID API validates the format locally before making any live request, so malformed numbers fail instantly without consuming your quota.
Can I validate multiple Singapore UEN / GST Registration Number numbers in one request?
Yes. The batch endpoint (POST /api/v1/validate) accepts up to 25 VAT numbers in a single request, processed in parallel. This is ideal for bulk onboarding flows, nightly reconciliation jobs, or importing customer lists. Each item in the response array maps 1-to-1 with your input array.
Start validating Singapore UEN / GST Registration Number numbers
Free plan — 100 validations/month. No credit card required.
Integrate with your stack:
More Singapore resources:
Validate VAT in other countries: