Tenanta
Tenanta for organisations

Verified rental data, with the person's say-so.

Confirm where an applicant lives, see how they have paid rent, verify a landlord's income, or study rental markets across Kenya. Every personal answer is approved by the person it is about, with a code sent to their phone.

Test keys work as soon as you sign up. Live keys after Tenanta checks your organisation.

What you can ask for

Residence check

… / approved request
Banks, microfinance, SACCOs (KYC)

Confirm the address an applicant gave you. You get confirmed or not confirmed, the town and county, since when, and whether the house they named matches. Replaces a utility bill as proof of residence.

Rent payment history

… / approved request
Lenders, digital lenders, mortgage lenders

Alternative credit data for people without payslips: months renting on Tenanta, bills paid on time, late or overdue, current arrears band, and whether deposits came back in full.

Landlord income check

… / approved request
Banks lending to landlords; tax filing

Verified rent collected per month for up to 24 months, number of houses and occupancy, approved by the landlord. Self-declared income, replaced by what tenants actually paid.

Market data

… / report
Banks, KMRC, county governments, KNBS, researchers

Rents (median and spread), vacancy and arrears by county, town and house type, month by month. Aggregated: no person, house or landlord can be picked out.

Or … a month for unlimited market reports.

Pay with prepaid credits, topped up by M-Pesa or bank transfer. You are only charged when a person approves — a request that is declined, expires or finds no record costs nothing.

API reference

JSON over HTTPS at https://tenanta.co.ke/api/v1. Authenticate with your key: Authorization: Bearer tnt_live_… (or tnt_test_… for the sandbox).

1. Ask for a verification

curl https://tenanta.co.ke/api/v1/verifications \
  -H "Authorization: Bearer $TENANTA_KEY" -H "Content-Type: application/json" \
  -d '{
    "product": "residence",            // or "rent_history", "landlord_income"
    "id_number": "12345678",           // landlord_income: "kra_pin" instead
    "phone": "0712345678",             // the number the applicant gave you
    "purpose": "Opening a savings account",
    "reference": "your-own-ref-001",
    "claimed_address": { "town": "Kilimani", "estate": "Elisa Residences", "house": "A2" }
  }'
201 Created
{ "id": "vr_…", "product": "residence", "status": "awaiting_approval",
  "expires_at": "2026-10-14T10:15:00Z", "cost": 0, "result": null, … }

The applicant receives a code by SMS if they are on Tenanta and sharing is on. The response is the same either way.

2. Send the code they give you

curl https://tenanta.co.ke/api/v1/verifications/vr_…/confirm \
  -H "Authorization: Bearer $TENANTA_KEY" -H "Content-Type: application/json" \
  -d '{ "code": "482913" }'
200 OK  (residence)
{ "status": "approved", "cost": 100,
  "result": { "status": "confirmed", "living_there_now": true, "town": "Kilimani", "county": "Nairobi",
              "since": "2025-03", "moved_out": null, "area_matches_claim": true, "house_matches_claim": true } }

200 OK  (rent_history)
{ "result": { "tenancies": 2, "months_on_tenanta": 31, "first_seen": "2024-04", "bills_on_time": 58,
              "bills_late": 3, "bills_overdue": 0, "on_time_rate": 0.95, "current_arrears": "none",
              "left_owing_after_moving_out": false, "deposits": { "returned_in_full": 1, "with_deductions": 0 } } }

200 OK  (landlord_income)
{ "result": { "properties": 2, "houses": 24, "houses_let": 21, "occupancy": 0.88,
              "rent_collected_last_12_months": 3780000, "months": [ { "month": "2026-10", "rent_collected": 315000, "bills_collected": 18400 }, … ] } }

Codes last 15 minutes and allow 5 tries. Check a request any time with GET /verifications/{id}; list yours with GET /verifications.

3. Market data

curl "https://tenanta.co.ke/api/v1/market?county=Nairobi&town=Kilimani&house_type=1BR" \
  -H "Authorization: Bearer $TENANTA_KEY"
{ "month": "2026-10", "charged": 2000, "withheld_below": { "houses": 5, "landlords": 3 },
  "data": [ { "county": "Nairobi", "town": "Kilimani", "house_type": "1BR", "houses": 128,
              "rent_median": 32000, "rent_p25": 27000, "rent_p75": 38000,
              "vacancy_rate": 0.08, "arrears_rate": 0.11, "withheld": false } ] }

Balance and prices

curl https://tenanta.co.ke/api/v1/balance -H "Authorization: Bearer $TENANTA_KEY"

Sandbox

With a tnt_test_ key, nothing is charged, no SMS is sent and the code is always 123456. Made-up people:

Tenant living there now   id_number TEST0001   phone 0700000001   (Kilimani, Nairobi; house A12)
Tenant who moved out      id_number TEST0002   phone 0700000002
Landlord                  kra_pin   A000000001Z phone 0700000009

Errors

400 bad_requestSomething is missing or malformed; the message says what.
400 code_wrongThat code is not right.
401 unauthorisedMissing, invalid or revoked key.
402 insufficient_creditTop up your credits.
403 org_not_approved / org_suspendedLive keys need an approved organisation.
410 code_expiredStart a new request.
429 rate_limited / daily_cap / too_many_attemptsSlow down, or ask Tenanta to raise your daily limit.

Errors look like { "error": { "code": "…", "message": "…" }, "request_id": "…" }.