6 часов мучаюсь с этой проблемой. В официально документации читал, но так и не понял какой токен использовать. Перепробовал много вариантов, но результат всё тот же. Для проверки платежей использую GetState запрос (
https://securepay.tinkoff.ru/v2/GetState). Ссылку для оплаты создаёт правильно.
post = {
    "TerminalKey": "",
    "Amount": "100",
    "OrderId": "112113",
    "Description": "testingintestsss12",
    "DATA": {
        "Phone": "+71234567890",
        "Email": "a@test.com"
    },
    "Receipt": {
        "Email": "a@test.ru",
        "Phone": "+79031234567",
        "EmailCompany": "b@test.ru",
        "Taxation": "osn",
        "Items": [
            {
                "Name": "тест",
                "Price": 100,
                "Quantity": 1.00,
                "Amount": 100,
                "Tax": "vat10"
            }
        ]
    }
}
token = [ {"Amount": post["Amount"]}, 
    {"Description": post["Description"]}, 
    {"OrderId": post["OrderId"]},
    {"Password":""}, 
    {"TerminalKey": post["TerminalKey"]}]
tokentr = token[0]["Amount"] + token[1]["Description"] + token[2]["OrderId"] + token[3]["Password"] + token[4]["TerminalKey"]
tokensha256 = str(hashlib.sha256(tokentr.encode()).hexdigest())
x = requests.post('https://securepay.tinkoff.ru/v2/Init', json=post).json()
print(x)
checkopl = {
    "TerminalKey" : "",
    "PaymentId" : x["PaymentId"],
    "Token" : tokensha256
}
y = requests.post('https://securepay.tinkoff.ru/v2/GetState', json=checkopl).json()
print(y)
Ошибка:
{'Success': False, 'ErrorCode': '204', 'Message': 'Неверные параметры.', 'Details': 'Неверный токен. Проверьте пару TerminalKey/SecretKey.'}