Render documentation

Corporation tax filing infrastructure for developers. Everything you need to file, validate, and track CT600 returns.

What is Render?

Render is the filing infrastructure layer for UK Corporation Tax. It gives developers a clean, JSON-based API to submit CT600 returns to HMRC — without ever touching GovTalk XML, IRmark signing, or iXBRL generation directly.

Think of it as the Stripe for CT600. You send JSON; Render handles the HMRC protocol complexity (GovTalk, IRmark, iXBRL) and returns a structured response. Switch between sandbox and live by swapping your API key. Nothing else changes.

Three integration surfaces

Get started in 2 minutes

The fastest way to file a CT600 is with the Python SDK in sandbox mode. No HMRC credentials required. No credit card.

bash
pip install render
PythoncURL
import render

client = tunnel.Render(api_key="sk_sandbox_your_key")

filing = client.filings.create(
    company={
        "name": "Your Company Ltd",
        "utr": "1234567890",
        "registration_number": "12345678"
    },
    period={"start": "2024-04-01", "end": "2025-03-31"},
    financials={
        "turnover": 90_000_00,        # pence — always integers
        "trading_profit": 12_000_00,
        "tax_rate_year": 2025
    },
    accounts={"standard": "frs102"}
)

print(filing.id)      # fil_1a2b3c4d5e6f
print(filing.status)  # "submitted"
Sandbox API keys (sk_sandbox_...) never contact HMRC. Behaviour is identical to live — same validation, same error codes, same response shapes. Switch to a live key when you are ready to file for real.

Core concepts

API keys

Sandbox keys begin with sk_sandbox_. Live keys begin with sk_live_. The prefix determines which environment your requests are routed to — no other configuration needed. All keys are created in sandbox mode by default.

Monetary values

All monetary amounts are integers in pence. This eliminates floating point errors entirely. £120,000 is 12000000. £2,280.00 is 228000. Same convention as Stripe.

Idempotency

POST endpoints accept an Idempotency-Key header. Sending the same key with the same request body returns the original response without submitting to HMRC again. If the key matches but the body differs, you receive a 409 idempotency_conflict.

Filings lifecycle

A filing moves through four states: pendingsubmitted acknowledged or failed. HMRC acknowledges asynchronously — Render delivers a filing.acknowledged webhook event when it arrives.