Apply for Tax Compliance Certificates (TCC) through the KRA developer.go.ke API. A TCC confirms that a taxpayer is compliant with KRA tax obligations and is required for government tenders, certain business transactions, and regulatory approvals.
| Scope | Description |
|---|---|
kra:compliance |
Apply for Tax Compliance Certificates |
| Method | Endpoint | KRA Path | Description |
|---|---|---|---|
POST |
/api/kra/compliance/tcc-application |
/application/v1/tcc |
Apply for a TCC |
Note: To validate an existing TCC, use the TCC Validation checker endpoint under
kra:checkers.
Submit a Tax Compliance Certificate application to KRA.
Endpoint: POST /api/kra/compliance/tcc-application
Required Scope: kra:compliance
Request Body:
You can submit the body in either flat or nested format. Salami will wrap flat fields inside TAXPAYERDETAILS automatically.
{
"TaxpayerPIN": "P051234567A",
"ReasonForTCC": "Government Tender"
}
{
"TAXPAYERDETAILS": {
"TaxpayerPIN": "P051234567A",
"ReasonForTCC": "Government Tender"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
TaxpayerPIN |
string | Yes | KRA PIN of the applicant |
ReasonForTCC |
string | Yes | Purpose for the TCC application |
Request:
curl -X POST \
https://yourtenant.salami.dgl.co.ke/api/kra/compliance/tcc-application \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"TaxpayerPIN": "P051234567A",
"ReasonForTCC": "Government Tender"
}'
Success Response:
{
"success": true,
"data": {
"AckNumber": "ACK/2026/0045678",
"TCCNumber": "TCC/2026/0001234",
"TaxpayerPIN": "P051234567A",
"TaxpayerName": "ACME LIMITED",
"Status": "Approved",
"IssueDate": "2026-03-29",
"ExpiryDate": "2026-12-31",
"ReasonForTCC": "Government Tender"
},
"message": "TCC application processed successfully"
}
Pending Response (processing):
{
"success": true,
"data": {
"AckNumber": "ACK/2026/0045679",
"TCCNumber": null,
"TaxpayerPIN": "P051234567A",
"Status": "Pending",
"Message": "Application received. TCC will be processed within 2 working days."
},
"message": "TCC application submitted for processing"
}
Rejection Response:
{
"success": true,
"data": {
"AckNumber": "ACK/2026/0045680",
"TCCNumber": null,
"TaxpayerPIN": "P051234567A",
"Status": "Rejected",
"RejectionReason": "Outstanding tax obligations. Please file pending returns."
},
"message": "TCC application was rejected by KRA"
}
| Field | Type | Description |
|---|---|---|
AckNumber |
string | Application acknowledgement number (always returned) |
TCCNumber |
string/null | TCC number if instantly approved, null if pending |
TaxpayerPIN |
string | The applicant's KRA PIN |
TaxpayerName |
string | Registered taxpayer name |
Status |
string | Approved, Pending, or Rejected |
IssueDate |
string/null | Date TCC was issued (if approved) |
ExpiryDate |
string/null | TCC expiry date (if approved) |
ReasonForTCC |
string | The stated reason |
RejectionReason |
string/null | Reason for rejection (if rejected) |
Message |
string/null | Additional information from KRA |
| Field | Format | Example | Notes |
|---|---|---|---|
TaxpayerPIN |
A000000000B |
P051234567A |
Must be a valid, active KRA PIN |
ReasonForTCC |
Free text | Government Tender |
Purpose of the TCC |
KRA will automatically check these conditions before issuing a TCC:
Common reasons accepted by KRA:
| Reason | Use Case |
|---|---|
Government Tender |
Bidding on government contracts |
Business Transaction |
Required by a business partner |
Regulatory Compliance |
Regulatory body requirement |
Licensing |
Professional or business licensing |
Immigration |
Work permit or visa application |
Education |
Scholarship or education sponsorship |
Export |
Export trade facilitation |
Banking |
Financial institution requirement |
General Purpose |
General compliance verification |
| Code | Description |
|---|---|
200 |
Application processed (check Status field for result) |
401 |
Invalid or missing Salami token |
403 |
Token lacks kra:compliance scope |
422 |
Missing required fields (TaxpayerPIN, ReasonForTCC) |
502 |
KRA server error or timeout |
{
"success": false,
"message": "Required fields missing: TAXPAYERDETAILS.TaxpayerPIN, TAXPAYERDETAILS.ReasonForTCC",
"error": "validation_error"
}
Back to: KRA Overview | KRA Checkers