Build PAYE RTI Full Payment Submission (FPS XML)
Skill: Convert a payroll run into an HMRC RTI Full Payment Submission
Region: United Kingdom
Category: Payroll — PAYE Real Time Information (RTI)
Does: Takes a payroll run and assembles the Full Payment Submission (FPS) — the GovTalk XML employers send to HMRC on or before each payday to report pay, tax, and National Insurance for every employee under PAYE Real Time Information.
Spec: HMRC PAYE RTI — GovTalk message HMRC-PAYE-RTI-FPS (current schema version)
The FPS is the core per-payday RTI submission; the Employer Payment Summary (EPS) reports period adjustments (recoverable statutory pay, CIS deductions suffered, nil payments). The FPS uses the GovTalk envelope with an IRmark and carries cumulative year-to-date figures alongside this period's. Validate against the current tax-year RTI schema (rates/bands and schema change each April).
When this applies
- Send an FPS on or before the date employees are paid, every pay run, for the tax year (6 April–5 April).
- A new employee's starter information (and a leaver's date) is carried in the FPS; corrections are made by a later FPS (or, for some, an EPS / Earlier Year Update successor process).
Message structure (GovTalk → FPS)
GovTalkMessage
EnvelopeVersion, Header (MessageDetails: Class=HMRC-PAYE-RTI-FPS, Qualifier, Function)
GovTalkDetails (Keys: TaxOfficeNumber/Reference), ChannelRouting
Body
IRenvelope
IRheader (Sender, PeriodEnd, IRmark, SenderID/Authentication)
FullPaymentSubmission
EmpRefs (Office number / PAYE reference / AO reference)
Employee (repeating):
EmployeeDetails (NINO, name, address, DOB, gender)
Employment (starter/leaver info, irregular-payment flag, payment to a leaver)
Payment (pay date, pay frequency, tax period/week-month number)
Pay & deductions: taxable pay, tax deducted (this period + YTD)
NICs: NI category letter, earnings at LEL/PT/UEL bands, employee & employer NIC (period + YTD)
Student loan, postgraduate loan, statutory payments (SMP/SPP/etc.)
Data rules
- Identify each employee by NINO where held; if not, provide full name, address, DOB, and gender so HMRC can match — a missing/invalid NINO degrades matching.
- Year-to-date figures are mandatory and must be internally consistent: this period's pay/tax/NIC added to the prior YTD equals the new YTD reported.
- NICs are reported by NI category letter with earnings split across the LEL / PT / UEL thresholds; employee and employer NIC are computed on the relevant bands for the category (verify the current-year thresholds and rates).
- Tax is computed on the operative tax code (cumulative or week-1/month-1 basis); report the tax code and the period/cumulative figures.
- Starters/leavers: a starter carries the starter declaration and (if provided) previous-employment pay/tax; a leaver carries the leaving date; payments after leaving set the appropriate flag.
- The submission carries an IRmark (message digest) and authenticated SenderID; it must validate against the GovTalk/RTI schema before transmission via the Transaction Engine.
Worked example (one employee, monthly — outline)
EmpRefs: 123/AB456
Employee: NINO=QQ123456C, Jane Doe, tax code 1257L (cumulative)
Payment: pay date 2025-05-31, frequency M, month no. 2
Taxable pay this period 3000.00 ; YTD 6000.00
Tax this period 391.40 ; YTD 782.80
NI category A: earnings at LEL/PT/UEL bands → employee NIC + employer NIC (period + YTD)
Student loan plan 2: deduction this period + YTD
Wrapped in the GovTalkMessage with IRmark and submitted to HMRC on or before payday.
Validation checklist
- Current tax-year RTI/GovTalk schema (
HMRC-PAYE-RTI-FPS) used; rates/bands current - GovTalk envelope correct: Class/Qualifier/Function, EmpRefs (office/PAYE/AO), authenticated SenderID, IRmark
- Each employee identified by NINO (or full identity for matching)
- Pay, tax, and NIC reported this period and YTD; YTD = prior YTD + this period
- NI category letter correct; earnings split across LEL/PT/UEL; employee & employer NIC computed
- Tax code and basis (cumulative / wk1-mth1) correct; student/PG loan and statutory payments included
- Starter declaration / leaver date / payment-after-leaving flags set as applicable
- Schema-validated; submitted on or before the pay date
Last updated: 2026-05-31 — PAYE rates, NIC thresholds, and the RTI schema change every tax year (April); confirm the current FPS schema version, tax/NIC thresholds and rates, and submission rules against current HMRC RTI guidance before use.