---
title: "Tax treaty maximum withholding rates of the paying country, per partner. Pro and Compliance"
method: GET
path: "/v1/countries/{country}/treaties"
tags: ["Tax data"]
---

# Tax treaty maximum withholding rates of the paying country, per partner. Pro and Compliance

`GET /v1/countries/{country}/treaties`

## Request

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

Which countries have treaty data: coverage.treaties in /v1/countries. Without data, or without a treaty with the partner asked, the list is empty and warning explains it. Treaty lists are partial: warning says so, and a missing partner does not mean there is no treaty.

## Path parameters

- `country` string, required

## Query parameters

- `partner` string

## Response `200`

Treaties

- 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
  - `treaties` object[]
    - `partner` string
    - `title` string
    - `signed` string, nullable
    - `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
    - `articles` string, nullable: Treaty articles for each rate, e.g. "Dividends: Art 10; Interest: Art 11; Royalties: Art 12"
    - `source_url` string, nullable
    - `confidence` string
    - `notes` string
  - `notes` string[]
  - `last_verified` string, date, nullable: When this country's treaty list was last checked

## 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)
