---
title: "Withholding tax rates (resident and non-resident), with treaty rates for a recipient's country. Pro and Compliance"
method: GET
path: "/v1/countries/{country}/withholding-tax"
tags: ["Tax data"]
---

# Withholding tax rates (resident and non-resident), with treaty rates for a recipient's country. Pro and Compliance

`GET /v1/countries/{country}/withholding-tax`

## Request

- Base URL: `https://api.africacompliancedata.com`
- URL: `https://api.africacompliancedata.com/v1/countries/{country}/withholding-tax`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Path parameters

- `country` string, required

## Query parameters

- `payment_type` 'dividends' | 'interest' | 'royalties' | 'rent' | 'services' | 'professional_fees' | 'management_fees' | 'technical_fees' | 'contracts' | 'goods' | 'commissions' | 'directors_fees' | 'other'
- `recipient_country` string

## Response `200`

Withholding tax

- object
  - `country` string, required
  - `country_name` string
  - `coverage` 'ready' | 'partial' | 'gap', required
  - `warning` string: When coverage is partial or gap, the year's holiday list is incomplete, or no value can be given
  - `sources` object, required
  - `dataset_version` string, required
  - `disclaimer` string, required
  - `withholding_tax` object, nullable
    - `items` object[]
      - `payment_type` string
      - `resident_rate` union
        - number
        - string
      - `non_resident_rate` union
        - number
        - string
      - `final` boolean, nullable
      - `notes` string
    - `notes` string
  - `treaty` object: Only with ?recipient_country. Without a treaty: partner and note only.
    - `partner` string
    - `title` string
    - `in_force` string, nullable
    - `effective_from` string, nullable
    - `dividends` TreatyRate, nullable: Maximum source-country rate; null: no treaty limit recorded, the domestic rate applies; where a rate was not captured, the entry's notes say so
      - `rate` union: A number, 'a/b' (see conditions) or 'none' (only the recipient's country may tax)
        - number
        - string
      - `conditions` string
    - `interest` TreatyRate, nullable: Maximum source-country rate; null: no treaty limit recorded, the domestic rate applies; where a rate was not captured, the entry's notes say so
      - `rate` union: A number, 'a/b' (see conditions) or 'none' (only the recipient's country may tax)
        - number
        - string
      - `conditions` string
    - `royalties` TreatyRate, nullable: Maximum source-country rate; null: no treaty limit recorded, the domestic rate applies; where a rate was not captured, the entry's notes say so
      - `rate` union: A number, 'a/b' (see conditions) or 'none' (only the recipient's country may tax)
        - number
        - string
      - `conditions` string
    - `technical_fees` TreatyRate, nullable: Maximum source-country rate; null: no treaty limit recorded, the domestic rate applies; where a rate was not captured, the entry's notes say so
      - `rate` union: A number, 'a/b' (see conditions) or 'none' (only the recipient's country may tax)
        - number
        - string
      - `conditions` string
    - `source_url` string, nullable
    - `confidence` string
    - `note` string

## Other responses

- `400`: Missing or invalid parameter
- `401`: Missing or invalid API key
- `403`: Tax data needs the Pro or Compliance plan (or the key is paused for review)
- `404`: Unknown country, path or webhook id
- `429`: Rate limit for the plan exceeded, or key checks busy (many new keys from your network); see Retry-After
- `503`: Key check temporarily unavailable, or webhook storage unavailable (webhook endpoints); retry after Retry-After seconds

---

[API](https://skmtc.dev/africacompliancedata/apis/africa-compliance-data-api.md) · [All operations](https://skmtc.dev/africacompliancedata/apis/africa-compliance-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/africacompliancedata/apis/africa-compliance-data-api/revisions/cb17c8aafda8?raw)
