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.
pip install render
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"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: pending → submitted → acknowledged or failed. HMRC acknowledges asynchronously — Render delivers a filing.acknowledged webhook event when it arrives.