Skip to main content

Check Exempt/Deemed Taxpayer (T137)

Verify whether a taxpayer is eligible for tax exemptions or deemed VAT status for specific commodity categories. This endpoint returns taxpayer exemption status, project details, and applicable tax treatments. Requires encrypted request and response.


Endpoint Overview

PropertyValue
Interface CodeT137
Request Encrypted✅ Yes
Response Encrypted✅ Yes
Request Body{ "tin": "...", "commodityCategoryCode": "..." }
Response FormatJSON

Flow Description

  1. Client submits taxpayer TIN and optional commodity category codes.
  2. Server validates taxpayer status and exemption registrations.
  3. Server returns:
    • Taxpayer type (normal, exempt, deemed, or both)
    • Exemption type (VAT, Excise Duty, or both)
    • Commodity category-specific taxpayer types
    • Deemed/exempt project list with details (project ID, name, codes, limits)
  4. Client uses response to determine applicable tax treatments for invoices.

💡 Tip: Call this endpoint before issuing invoices to determine if special tax treatments (exempt, deemed, zero-rated) apply to specific transactions.


try {
// Call T137: Check Exempt/Deemed Taxpayer
$response = $client->checkTaxpayerType(
tin: '1000029771',
commodityCategoryCode: '10000000,10000001'
);

$content = $response['data']['content'] ?? $response;
$taxpayerType = $content['taxpayerType'] ?? null;

if ($taxpayerType) {
echo "✅ Taxpayer Type: {$taxpayerType}\n";

// Map taxpayer type
$typeMap = [
'101' => 'Normal Taxpayer',
'102' => 'Exempt Taxpayer',
'103' => 'Deemed Taxpayer',
'104' => 'Both (Deemed & Exempt)'
];
echo " Status: " . ($typeMap[$taxpayerType] ?? 'Unknown') . "\n";

// Check exemption type
if (isset($content['exemptType'])) {
$exemptMap = [
'101' => 'VAT Exemption',
'102' => 'Excise Duty Exemption',
'103' => 'Both VAT & Excise Duty'
];
echo " Exemption: " . ($exemptMap[$content['exemptType']] ?? 'None') . "\n";
}

// Check project list
if (isset($content['deemedAndExemptProjectList'])) {
foreach ($content['deemedAndExemptProjectList'] as $project) {
echo " Project: {$project['projectName']} ({$project['deemedExemptCode']})\n";
}
}
}

} catch (\UraEfrisSdk\Exceptions\APIException $e) {
echo "❌ Check failed: " . $e->getMessage() . "\n";
echo " Return Code: " . $e->getReturnCode() . "\n";
}

Request Structure

{
"data": {
"content": "BASE64_ENCRYPTED_PAYLOAD",
"signature": "JKQWJK34K32JJEK2JQWJ5678",
"dataDescription": {
"codeType": "1",
"encryptCode": "2",
"zipCode": "0"
}
},
"globalInfo": {
"interfaceCode": "T137",
"appId": "AP04",
"version": "1.1.20191201",
"tin": "1000029771",
"deviceNo": "TCS9e0df01728335239",
"taxpayerID": "1"
}
}

Request Fields (Encrypted Payload)

FieldRequiredTypeLengthDescription
tin✅ YesString≤20Taxpayer Identification Number to check
commodityCategoryCode❌ NoString≤18Commodity category codes (multiple separated by commas, e.g., "10000000,10000001")

Response Structure

{
"data": {
"content": {
"taxpayerType": "101",
"exemptType": "101",
"commodityCategory": [
{
"commodityCategoryCode": "10000000",
"commodityCategoryTaxpayerType": "101"
}
],
"deemedAndExemptProjectList": [
{
"projectId": "10000000",
"projectName": "Strategic Investment Project",
"deemedExemptCode": "101",
"commodityCategoryCode": "10000000",
"serviceMark": "102",
"unit": "101",
"currentQty": "100",
"currentAmount": "100",
"currency": "USD",
"exchangeRateDate": "2025-06-12",
"currentAmountCurrency": "100"
}
]
}
},
"globalInfo": {
"interfaceCode": "T137",
"returnStateInfo": {
"returnCode": "00",
"returnMessage": "SUCCESS"
}
}
}

Response Fields

Taxpayer Status

FieldRequiredTypeDescription
taxpayerType✅ YesString (3)101=Normal, 102=Exempt, 103=Deemed, 104=Both (Deemed & Exempt)
exemptType❌ NoString (3)101=VAT Exemption, 102=Excise Duty Exemption, 103=Both VAT & Excise Duty

Commodity Category Array

FieldRequiredTypeDescription
commodityCategoryCode✅ YesString (18)Commodity category identifier
commodityCategoryTaxpayerType✅ YesString (3)Taxpayer type for this specific category (101-104)

Deemed/Exempt Project List Array

FieldRequiredTypeDescription
projectId✅ YesString (18)Unique project identifier
projectName✅ YesString (100)Project name/description
deemedExemptCode✅ YesString (3)Exemption type code (see codes below)
commodityCategoryCode✅ YesString (18)Associated commodity category
serviceMark✅ YesString (3)101=Yes (service), 102=No (goods)
unit✅ YesString (3)Unit of measure from T115 rateUnit
currentQty❌ NoNumberCurrent quantity limit/usage
currentAmount❌ NoNumberCurrent amount limit/usage
currency✅ YesString (10)Currency code (e.g., UGX, USD)
exchangeRateDate✅ YesDateExchange rate date (yyyy-MM-dd)
currentAmountCurrency✅ YesNumberAmount in specified currency

Deemed/Exempt Code Values

CodeDescription
101Strategic Investor
102Petroleum Licensee
103Aid Funded Project Contractor
104Government MDA (Ministry/Department/Agency)
105VAT & Excise Duty Exempt
106Excise Duty Exempt
107Mining Licensee
108EACOP Licensee
109EACOP Level 1 Contractor

Return Codes

CodeMessageDescription
00SUCCESSTaxpayer status retrieved successfully
99Unknown errorGeneric server error
400Device does not existdeviceNo not registered for this TIN
402Device key expiredDevice credentials expired; re-run T102
403Device status is abnormalDevice blocked or suspended
2110tin cannot be empty!Missing TIN in request
2111tin:Byte length cannot be greater than 20!TIN exceeds maximum length
2261The taxpayer does not exist or the state is abnormal!TIN not found or inactive
3060The TIN is not registered in the ETAX systemTIN not in eTax database
3063Your tin does not exist.TIN not found
3064The status of TIN is abnormal.TIN suspended or deregistered

💡 Tip: A taxpayerType of 101 (Normal) means no special exemptions apply. Types 102, 103, or 104 indicate special tax treatments that must be applied to invoices.


Common Use Cases

  1. Pre-Invoice Validation
    Check taxpayer exemption status before issuing invoices to apply correct tax treatments (exempt, deemed, zero-rated).

  2. Project-Based Exemptions
    Verify specific project exemptions (e.g., EACOP, Mining, Strategic Investor) for commodity-specific tax treatments.

  3. Commodity-Specific Tax Treatment
    Determine if certain commodity categories have different taxpayer types for the same TIN.

  4. Compliance Auditing
    Log exemption status checks for audit trails and compliance reporting.

  5. Multi-Project Management
    Handle taxpayers with multiple exemption projects simultaneously (e.g., both Strategic Investor and Government MDA).


Integration Checklist

✅ Validate TIN format before calling T137
✅ Store taxpayerType and exemptType for session duration
✅ Check deemedAndExemptProjectList for project-specific limits
✅ Apply correct deemedExemptCode to invoice goods details
✅ Re-check exemption status periodically (may change)
✅ Handle 101 (Normal) as default when no exemptions apply