Universal Credit

UC calculator, MIF, taper rate, work allowance, and optimisation for self-employed claimants.

How UC Works for Self-Employed

If you're self-employed and claiming Universal Credit, your payment is calculated based on net self-employment earnings for each monthly assessment period.

Rates (2025/26)

Standard Allowance

CircumstanceMonthly
Single, under 25£311.68
Single, 25+£393.45
Couple, both under 25£489.23
Couple, one 25+£617.60

Additional Elements

ElementMonthly
First child (born before 6 Apr 2017)£333.33
First child (born after 6 Apr 2017)£269.58
Second child£269.58
Housing elementVaries by area
Disabled child (lower)£156.11
Disabled child (higher)£487.58
Carer element£198.31

Work Allowance

CircumstancesMonthly Allowance
With housing element£411
Without housing element£722

Taper Rate

For every £1 earned above the work allowance, 55p deducted from UC payment.

Minimum Income Floor (MIF)

After 12 months of gainful self-employment, DWP assumes earnings of at least:

National minimum wage × expected hours × 52 ÷ 12

Even if you earned less, the MIF amount is used - resulting in a lower UC payment. TaxMTD highlights when the MIF is applied.

UC Calculation Formula

flowchart TD;
    A[Gross Income] --> B[Minus Expenses];
    B --> C[Net Earnings];
    C --> D{MIF applies?};
    D -->|Yes| E[Use MIF amount];
    D -->|No| F[Use actual earnings];
    E --> G[Minus Work Allowance];
    F --> G;
    G --> H[Multiply by 55%];
    H --> I[Taper Reduction];
    J[Standard Allowance + Elements] --> K[Total Entitlement];
    K --> L[Minus Taper Reduction];
    I --> L;
    L --> M[UC Payment];

UC Statement Fields

TaxMTD captures the full UC statement breakdown:

FieldDescription
paymentAmountHeadline payment received
standardAllowanceBase UC amount
housingElementHousing costs support
childrenElementChild element totals
totalEntitlementSum of all elements
minimumIncomeFloorMIF threshold (if applied)
usedEarningsAmount DWP uses for taper
workAllowanceEarnings before taper
taperRateDeduction rate (0.55)
totalDeductionsAll deductions combined

API

JavaScript
// List UC statements
const statements = await $fetch('https://www.taxmtd.uk/api/uc-statements')

// Create UC statement with full breakdown
await $fetch('https://www.taxmtd.uk/api/uc-statements', {
  method: 'POST',
  body: {
    periodId: 1,
    assessmentStart: '2026-01-30',
    assessmentEnd: '2026-02-27',
    paymentDate: '2026-03-15',
    paymentAmount: 312.45,
    standardAllowance: 393.45,
    housingElement: 450.00,
    totalEntitlement: 843.45,
    claimant2SelfEmploymentEarnings: 1200.00,
    minimumIncomeFloor: 1400.00,
    usedEarnings: 1400.00,
    workAllowance: 411.00,
    taperRate: 0.55,
    totalDeductions: 531.00,
    reportedIncome: 1200,
    reportedExpenses: 300
  }
})

// Update statement
await $fetch('https://www.taxmtd.uk/api/uc-statements', {
  method: 'PUT',
  body: { id: 1, paymentAmount: 320.00 }
})
Python
# List UC statements
statements = requests.get(
    "https://www.taxmtd.uk/api/uc-statements",
    cookies=session_cookies,
).json()["data"]

# Create UC statement
requests.post(
    "https://www.taxmtd.uk/api/uc-statements",
    json={
        "periodId": 1,
        "assessmentStart": "2026-01-30",
        "assessmentEnd": "2026-02-27",
        "paymentAmount": 312.45,
        "standardAllowance": 393.45,
        "reportedIncome": 1200,
        "reportedExpenses": 300,
    },
    cookies=session_cookies,
)

# Update statement
requests.put(
    "https://www.taxmtd.uk/api/uc-statements",
    json={"id": 1, "paymentAmount": 320.00},
    cookies=session_cookies,
)
PHP
$statements = Http::get('https://www.taxmtd.uk/api/uc-statements')->json();

Http::post('https://www.taxmtd.uk/api/uc-statements', [
    'periodId' => 1,
    'assessmentStart' => '2026-01-30',
    'assessmentEnd' => '2026-02-27',
    'paymentAmount' => 312.45,
    'standardAllowance' => 393.45,
    'reportedIncome' => 1200,
    'reportedExpenses' => 300,
]);
Rust
// List UC statements
let statements = client
    .get("https://www.taxmtd.uk/api/uc-statements")
    .send().await?
    .json::<serde_json::Value>().await?;

// Create UC statement
client.post("https://www.taxmtd.uk/api/uc-statements")
    .json(&serde_json::json!({
        "periodId": 1,
        "assessmentStart": "2026-01-30",
        "assessmentEnd": "2026-02-27",
        "paymentAmount": 312.45,
        "standardAllowance": 393.45,
        "reportedIncome": 1200,
        "reportedExpenses": 300
    }))
    .send().await?;

// Update statement
client.put("https://www.taxmtd.uk/api/uc-statements")
    .json(&serde_json::json!({"id": 1, "paymentAmount": 320.00}))
    .send().await?;
cURL
# List statements
curl https://www.taxmtd.uk/api/uc-statements

# Create statement
curl -X POST https://www.taxmtd.uk/api/uc-statements \
  -H "Content-Type: application/json" \
  -d '{"periodId":1,"assessmentStart":"2026-01-30","assessmentEnd":"2026-02-27","reportedIncome":1200,"reportedExpenses":300}'