سال میں چار بار، انکم ٹیکس کے لیے میکنگ ٹیکس ڈیجیٹل (MTD) پر تمام واحد تاجروں اور زمینداروں کو اپنی آمدنی اور اخراجات کا خلاصہ HMRC کو بھیجنے کی ضرورت ہے۔
2026-27 ٹیکس سال کی پہلی آخری تاریخ، 7 اگست، پہلے ہی گزر چکی ہے، اور دوسری آخری تاریخ 7 نومبر ہے۔ ہر خلاصہ سافٹ ویئر کی طرف سے HMRC کو ایک واحد API کال ہے، اور اس کال کو صحیح طریقے سے حاصل کرنا ہی اس ٹیوٹوریل کے بارے میں ہے۔
آپ آگے پڑھے بغیر ساتھ چل سکتے ہیں۔ کسی بھی MTD انضمام (سینڈ باکسڈ ایپلیکیشن، OAuth 2.0 ایکسیس ٹوکن، اور اینٹی فراڈ ہیڈرز) کے لیے درکار ایک وقتی سیٹ اپ کو ذیل میں ایک فوری خلاصے میں بیان کیا گیا ہے، اس کے ساتھ ایک چھوٹی درخواست مددگار کے ساتھ جو تمام ٹکڑوں کا استعمال کرتے ہیں۔
اگر آپ اس سیٹ اپ کے بارے میں مزید جاننا چاہتے ہیں، تو میں نے آپ کو پچھلے فری کوڈ کیمپ ٹیوٹوریل میں قدم بہ قدم اس کے ذریعے چلایا۔
آخر تک، آپ کو معلوم ہو جائے گا کہ آپ جس کاروبار کے لیے درخواست دینا چاہتے ہیں اسے کیسے تلاش کریں، مقررہ تاریخوں کا حساب لگائیں، HMRC سے منظور شدہ ایک مجموعی خلاصہ لکھیں اور جمع کرائیں اور نیچے ٹیکس کے حسابات کو پڑھیں۔ کوڈ Node اور TypeScript HMRC انٹیگریشن سے کٹا ہوا ہے جسے میں نے میکنگ ٹیکس ڈیجیٹل ایپ کیلئے بنایا تھا۔
انڈیکس
فوری خلاصہ: اس ٹیوٹوریل میں فرض کی گئی ترتیبات
کسی بھی چیز کو جمع کرانے کے لیے، آپ کی درخواست کو کسی بھی MTD انضمام کی طرح ایک ہی وقت کے سیٹ اپ کی ضرورت ہوتی ہے۔ اگر آپ کے پاس پہلے سے ہی ہے تو اگلے حصے پر جائیں۔ دوسری صورت میں، یہاں مختصر ورژن ہے:
-
سینڈ باکس درخواست کی رجسٹریشن HMRC ڈویلپر ہب پر یہاں استعمال ہونے والے چار APIs (کاروباری تفصیلات، ذمہ داریاں، سیلف ایمپلائیڈ بزنس اور ذاتی حسابات) کو سبسکرائب کریں۔ ایک ان سبسکرائب شدہ API واپس آ گیا ہے۔
403 Forbiddenیہ توثیق کے مسئلے کی طرح لگتا ہے، لیکن ایسا نہیں ہے۔ -
سینڈ باکس ٹیسٹ صارف بنائیں HMRC کا ٹیسٹ صارف تخلیق API استعمال کریں۔ یہ جعلی ٹیکس دہندگان کو نیشنل انشورنس نمبر (NINO) اور سرکاری گیٹ وے کی اسناد فراہم کرتا ہے۔
-
رسائی ٹوکن حاصل کریں۔ HMRC کے OAuth 2.0 تصدیقی کوڈ کے بہاؤ کے ذریعے
read:self-assessmentاورwrite:self-assessmentدائرہ کار کی وضاحت کریں اور HMRC رضامندی کی اسکرین پر بطور ٹیسٹ صارف لاگ ان کریں۔ -
اینٹی فراڈ ہیڈرز بھیجیں۔ جب بھی آپ کال کریں۔ HMRC ان کو لازمی بناتا ہے اور درست سیٹ کا انحصار اس بات پر ہوگا کہ آپ کی درخواست کیسے مربوط ہوتی ہے، لہذا انہیں ایک وقت میں ایک بنائیں۔
getFraudHeaders(req)فنکشن
اس ٹیوٹوریل میں ہر کوڈ کا ٹکڑا ایک چھوٹے مددگار کو کال کرتا ہے۔ بیئرر ٹوکن سیٹ کریں اور API ورژن کو پن کریں۔ Accept ہیڈرز (ہر HMRC API کا اپنا ورژن ہے اور غلط ورژن واپس آ گیا ہے) 406 Not Acceptable)، ایک اینٹی فراڈ ہیڈر منسلک کرتا ہے۔
import axios from 'axios';
const HMRC_BASE_URL = 'https://test-api.service.hmrc.gov.uk'; // sandbox
async function request(method, path, accessToken, req, data = null, apiVersion = '2.0') {
const headers = {
Authorization: 'Bearer ' + accessToken,
Accept: 'application/vnd.hmrc.' + apiVersion + '+json',
...getFraudHeaders(req),
};
// Only set a JSON Content-Type when there is a body. HMRC's edge rejects
// a bodyless GET that carries one with a 403.
if (data !== null && data !== undefined) {
headers['Content-Type'] = 'application/json';
}
const res = await axios({ baseURL: HMRC_BASE_URL, method, url: path, headers, data });
return res.data;
}
کہ req دلیل صارف کی آنے والی درخواست ہے (Express Request (میرا کوڈ)، یہ وہ جگہ ہے جہاں سے اینٹی فراڈ ہیڈر میں کلائنٹ کی تفصیلات آتی ہیں۔ ایک بار جب آپ کے پاس اپنا ٹوکن اور یہ مددگار ہو جائے تو آپ جمع کروانے کے لیے تیار ہیں۔
MTD میں سہ ماہی اپ ڈیٹس کیسے کام کرتی ہیں۔
سہ ماہی اپ ڈیٹس ٹیکس ریٹرن نہیں ہیں۔ یہ چلنے والے ٹوٹل کا ایک سلسلہ ہے۔ اس ٹیکس سال میں آپ کے کاروبار کی کمائی اور خرچ کی گئی رقم کو انہی زمروں میں گروپ کیا جائے گا جو وہ پہلے سے اپنے خود تشخیص میں استعمال کرتا ہے۔
اہم لفظ "اب تک” ہے۔ ہر اپ ڈیٹ مجموعی ہے۔ اس میں ٹیکس سال کے آغاز سے لے کر موجودہ اپ ڈیٹ کی مدت کے اختتام تک سب کچھ شامل ہے، نہ صرف گزشتہ تین ماہ۔ سہ ماہی اپ ڈیٹس بھیجنے کے بارے میں GOV.UK رہنمائی معیاری مدت اور آخری تاریخ کا تعین کرتی ہے۔
| اپ ڈیٹ کی مدت | اخترن |
|---|---|
| 6 اپریل – 5 جولائی | 7 اگست |
| 6 اپریل تا 5 اکتوبر | 7 نومبر |
| 6 اپریل – 5 جنوری | 7 فروری |
| 6 اپریل – 5 اپریل | 7 مئی (اگلا ٹیکس سال) |
اس ڈیزائن کا ایک خوشگوار ضمنی اثر ہے۔ اگر کسی صارف کو پچھلی برانچ میں کوئی غلطی نظر آتی ہے، تو اگلی اپ ڈیٹ میں صرف اس کو درست کیا جائے گا۔ HMRC کی اینڈ ٹو اینڈ سروس گائیڈنس یہ واضح کرتی ہے کہ ہر اپ ڈیٹ پچھلی کو کالعدم کر دے گا، کیونکہ تمام ادوار 6 اپریل سے شروع ہوتے ہیں۔
جن صارفین کا مالی سال 1 اپریل سے شروع ہوتا ہے وہ اس کے بجائے اسی مقررہ تاریخ (جیسے 1 اپریل سے 30 جون) کے ساتھ کیلنڈر کی مدت کا انتخاب کر سکتے ہیں۔ واجبات API بالکل درست تاریخیں لوٹاتا ہے، لہذا آپ کو ہارڈ کوڈ کرنے کی ضرورت نہیں ہے۔
HMRC ہر ایک مطلوبہ اپڈیٹ کو بطور "ذمہ داری” حوالہ کرتا ہے۔ یہ رقم ہر سیلف ایمپلائمنٹ یا ریئل اسٹیٹ بزنس کے علاوہ سالانہ ٹیکس گوشواروں کے لیے ہر ٹیکس سال میں چار بار واجب الادا ہے۔
یہ مکمل سفر ہے جسے ہم بنانے کی کوشش کر رہے ہیں:

مرحلہ 1: اپنی کاروباری شناخت کیسے تلاش کریں۔
تمام سیلف ایمپلائڈ اینڈ پوائنٹس ہیں۔ businessIdآمدنی کے ایک ذریعہ کے لیے HMRC کا شناخت کنندہ۔ ایک واحد مالک جو دو جائیدادوں کا مالک ہے۔ کسٹمر کے نیشنل انشورنس نمبر (NINO) کا استعمال کرتے ہوئے کاروباری تفصیلات API سے معلومات حاصل کی جاتی ہیں۔
// GET /individuals/business/details/{nino}/list (Business Details API v2.0)
const result = await request(
'GET',
'/individuals/business/details/' + nino + '/list',
accessToken,
req,
null,
'2.0',
);
const businesses = result.listOfBusinesses ?? [];
const soleTrade = businesses.find((b) => b.typeOfBusiness === 'self-employment');
const businessId = soleTrade?.businessId;
ترتیب درج ذیل ہے۔ listOfBusinessesہر شے میں typeOfBusiness (self-employment, uk-property, foreign-propertyیا property-unspecified) businessIdاور اختیاری طور پر tradingName. سینڈ باکس سیلف ایمپلائیڈ ID درج ذیل ہے: XBIS12345678901.
HMRC رہنمائی تجویز کرتی ہے کہ جب بھی آپ کال کریں تو اسے تلاش کرنے کے بجائے اپنی ID کو محفوظ کریں، اور میں ایسا کرتا ہوں۔ فہرستیں عام طور پر بہت کم تبدیل ہوتی ہیں جب گاہک کاروبار کو شامل کرتے یا چھوڑ دیتے ہیں، لہذا جب گاہک ان سے رابطہ کریں یا درخواست کریں تو انہیں تازہ دم کریں۔
مرحلہ 2: یہ کیسے معلوم کریں کہ آپ کی ادائیگی کب باقی ہے۔
اگلا، واجبات API سے پوچھیں کہ کون سے ادوار اب بھی کھلے ہیں۔ یہ اختتامی نقطہ ورژن 3.0 میں ہے۔
// GET /obligations/details/{nino}/income-and-expenditure (Obligations API v3.0)
const raw = await request(
'GET',
'/obligations/details/' + nino + '/income-and-expenditure?status=open',
accessToken,
req,
null,
'3.0',
);
جوابی گروپ کی ذمہ داریوں کو کاروبار کے لحاظ سے تاریخوں کے ساتھ ایک درجے نیچے رکھا گیا ہے۔
{
"obligations": [
{
"typeOfBusiness": "self-employment",
"businessId": "XBIS12345678901",
"obligationDetails": [
{
"periodStartDate": "2026-04-06",
"periodEndDate": "2026-10-05",
"dueDate": "2026-11-07",
"status": "open"
}
]
}
]
}
یہ گھوںسلا UI میں تیزی سے عجیب ہو جاتا ہے، اس لیے میں اسے فی ذمہ داری ایک قطار میں چپٹا کرتا ہوں، کاروباری فیلڈز کو ہر قطار میں گھسیٹتا ہوں، اور پھر ابتدائی مقررہ تاریخ کے ساتھ کھلی چیز کو منتخب کرتا ہوں۔
function flattenObligations(raw, businessId) {
return (raw.obligations ?? [])
.filter((group) => group.businessId === businessId)
.flatMap((group) =>
(group.obligationDetails ?? []).map((d) => ({
businessId: group.businessId,
periodStartDate: d.periodStartDate,
periodEndDate: d.periodEndDate,
dueDate: d.dueDate,
status: (d.status ?? '').toLowerCase() === 'fulfilled' ? 'fulfilled' : 'open',
})),
);
}
const next = flattenObligations(raw, businessId)
.filter((o) => o.status === 'open')
.sort((a, b) => a.dueDate.localeCompare(b.dueDate))[0];
اس کے لیے اسکرین بنانے سے پہلے، آپ کو تین تفصیلات جاننا ہوں گی۔
اول، ان واجبات میں کوئی مدت نہیں ہے۔ آغاز اور اختتامی تاریخیں وقت کی مدت کی نشاندہی کرتی ہیں اور بالکل وہی تاریخیں ہیں جنہیں آپ مرحلہ 3 میں واپس بھیجتے ہیں۔ اگر آپ کو ایک مستحکم کلید کی ضرورت ہے، تو دو تاریخوں سے ایک اخذ کریں۔
دوسرا، پڑھیں dueDate اس کا حساب لگانے کے بجائے جواب سے۔ HMRC ان تاریخوں کو متعین کرتا ہے اور انہیں پہلے تبدیل کر چکا ہے، اس لیے براہ کرم کوڈ میں تاریخ کے قواعد کے بجائے API کو اپنی معلومات کے ماخذ کے طور پر دیکھیں۔
تیسرا، فلٹرز کے اصول ہوتے ہیں۔ fromDate اور toDate زیادہ سے زیادہ 366 دنوں کے وقفے پر ایک ساتھ بھیجا جانا چاہیے، businessId آپ کو فلٹر کی بھی ضرورت ہے۔ typeOfBusiness. آپ اوپر کی طرح ہر چیز کو کھول کر اور اسے اپنے کوڈ میں فلٹر کرکے دونوں سے بچ سکتے ہیں۔
مرحلہ 3: ایک مجموعی خلاصہ کیسے لکھیں۔
اب پے لوڈ کے لیے۔ سیلف ایمپلائمنٹ بزنس API اسے مجموعی مدت کا خلاصہ کہتا ہے، اور یہ چار حصوں پر مشتمل ہے:
-
periodDates: ضروری۔ رپورٹنگ کی مدت کا آغاز اور اختتام ذمہ داری سے نقل کیا گیا ہے۔ -
periodIncome:turnover(رسیدیں، کمیشن اور فروخت)؛otherکاروباری آمدنی، اورtaxTakenOffTradingIncome. -
periodExpenses: دو میں سے ایکconsolidatedExpensesتصویر یا آئٹم بہ شے تجزیہ۔ -
periodDisallowableExpenses: یہ آئٹمائزڈ لاگت کا وہ حصہ ہے جس کا ٹیکس کے لیے دعویٰ نہیں کیا جا سکتا۔
ذیل میں 2026-27 کی دوسری سہ ماہی کا مکمل اور درست متن ہے جس میں لاگت کے واحد اعداد و شمار کا استعمال کیا گیا ہے۔
{
"periodDates": {
"periodStartDate": "2026-04-06",
"periodEndDate": "2026-10-05"
},
"periodIncome": {
"turnover": 28450,
"other": 0
},
"periodExpenses": {
"consolidatedExpenses": 4310.45
}
}
آئٹمائزڈ فارم ان نمبروں کو ان زمروں میں بدل دیتا ہے جو خود تشخیصی خانوں کی عکاسی کرتے ہیں، جیسے: costOfGoods, carVanTravelExpenses, adminCostsاور professionalFees. اگر اخراجات کا کوئی حصہ ذاتی ہے، تو نامنظور حصہ مماثل فیلڈ میں ظاہر کیا جائے گا۔
"periodExpenses": {
"costOfGoods": 2100,
"carVanTravelExpenses": 1640.2,
"adminCosts": 185.99
},
"periodDisallowableExpenses": {
"carVanTravelExpensesDisallowable": 410.05
}
آپ دونوں شکلوں کو ملا نہیں سکتے۔ معاوضہ consolidatedExpenses آئٹمائزڈ فیلڈ ریٹرن کے ساتھ RULE_BOTH_EXPENSES_SUPPLIED. اور ہر نامنظور فیلڈ کو آئٹمائزڈ زمرے کے ساتھ جوڑا جاتا ہے، اس لیے نامنظور اخراجات آئٹمائزڈ فارم سے تعلق رکھتے ہیں۔
تو ایک مربوط شکل کب قابل قبول ہے؟ HMRC کی سروسز گائیڈ کے مطابق، £90,000 سے کم سالانہ ٹرن اوور والے صارفین کل لاگت کی اطلاع دے سکتے ہیں۔ تمام اپ ڈیٹس مجموعی ہیں، اس لیے ایک عملی جانچ پڑتال یہ ہے کہ سال بہ تاریخ فروخت کا ہر جمع کرانے کی حد سے موازنہ کیا جائے۔ ایک بار جب آپ £90,000 تک پہنچ جاتے ہیں، تو آپ کو اپنی تازہ کاریوں کو آئٹمائز کرنے کی ضرورت ہوگی۔ ہم اسے HMRC پر جانے سے پہلے اپنے سرورز پر نافذ کرتے ہیں۔
const CONSOLIDATED_EXPENSES_TURNOVER_LIMIT = 90_000;
function checkConsolidatedExpensesLimit({ turnover, usesConsolidatedExpenses }) {
if (!usesConsolidatedExpenses) return null;
if ((turnover ?? 0) >= CONSOLIDATED_EXPENSES_TURNOVER_LIMIT) {
return (
'Consolidated expenses are not permitted once turnover reaches £90,000. ' +
'Please enter your expenses itemised instead.'
);
}
return null;
}
آخر میں، تمام رقوم دو اعشاریہ تک قبول کرتی ہیں، لہذا کل کو گول کریں (میں کل کو گول کرتا ہوں۔ Number(total.toFixed(2))) اس سے پہلے کہ وہ آپ کا کوڈ چھوڑ دیں۔
مرحلہ 4: اپ ڈیٹ کیسے جمع کروائیں۔
جب جسم بنتا ہے تو خود تسلیم ایک ہو جاتا ہے۔ PUT. ٹیکس سال مندرجہ ذیل راستے پر جاتا ہے: YYYY-YY فارمیٹ اور مدت کی تاریخیں URL کے بجائے باڈی میں جاتی ہیں۔
// PUT /individuals/business/self-employment/{nino}/{businessId}/cumulative/{taxYear}
// Self Employment Business API v5.0
await request(
'PUT',
'/individuals/business/self-employment/' + nino + '/' + businessId + '/cumulative/' + taxYear,
accessToken,
req,
summary,
'5.0',
);
کامیابی ہے 204 No Contentکوئی وصول کنندہ نمبر نہیں ہے، لہذا آپ نے جو کچھ بھیجا، کب اور HMRC کو آپ کی واپسی کی حیثیت کا اپنا آڈٹ ریکارڈ رکھیں۔ آپ کسی بھی وقت HMRC سے اپنی کاپی دوبارہ پڑھ سکتے ہیں۔ GET اسی سڑک پر۔
کیونکہ یہ ہے۔ PUTاسی کال کو بنایا اور تبدیل کیا جاتا ہے۔ اگر آپ اسی ٹیکس سال میں دوبارہ جمع کراتے ہیں، تو HMRC کے پاس موجود کسی بھی معلومات کو تبدیل کر دیا جائے گا۔ یہ ایک مجموعی ماڈل ہے جو ڈیزائن کے مطابق کام کرتا ہے اور اس بہاؤ میں سب سے مہنگے کیڑے کا ذریعہ بھی ہے (دیکھیں مسائل)۔
یہ اختتامی نقطہ صرف 2025-26 کے بعد ٹیکس سال قبول کرتا ہے۔ پچھلا ٹیوٹوریل POST کو /period اختتامی نقطہ پچھلے مدت کے مخصوص ماڈل کی وضاحت کرتا ہے۔
مرحلہ 5: ٹیکس کے حسابات کو کیسے چلائیں اور پڑھیں
اپ ڈیٹ کے بعد، صارفین تقریباً یہ جاننا چاہتے ہیں کہ ان سے کتنا ٹیکس وصول کیا جائے گا۔ انفرادی کمپیوٹ API اس کا جواب متضاد طور پر دیتا ہے۔ یعنی، آپ ایک حساب کتاب کو متحرک کرتے ہیں، ID حاصل کرتے ہیں، اور پھر کچھ دیر بعد نتیجہ حاصل کرتے ہیں۔ حساب کی قسم راستے کے آخر میں آتی ہے، in-year اپنی سہ ماہی اپ ڈیٹس کے بعد ہم کیا چاہتے ہیں وہ یہ ہے:
// POST /individuals/calculations/{nino}/self-assessment/{taxYear}/trigger/in-year
// Individual Calculations API v8.0. Returns 202 Accepted with a calculationId.
const { calculationId } = await request(
'POST',
'/individuals/calculations/' + nino + '/self-assessment/' + taxYear + '/trigger/in-year',
accessToken,
req,
{}, // an empty object, not null (see the gotchas)
'8.0',
);
HMRC کی اینڈ پوائنٹس دستاویز نتائج کی بازیافت سے پہلے کم از کم 5 سیکنڈ انتظار کرنے کی سفارش کرتی ہے۔ جب تک حساب تیار نہ ہو، تلاش کا اختتامی نقطہ واپس آتا ہے: 404 Not Foundلہذا ایک مختصر، محدود دوبارہ کوشش کرنے والا لوپ اس کا خیال رکھتا ہے۔
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function waitForCalculation(nino, taxYear, calculationId, accessToken, req) {
const path="/individuals/calculations/" + nino + '/self-assessment/' + taxYear + '/' + calculationId;
await sleep(5000); // HMRC recommends waiting at least five seconds after the trigger
for (let attempt = 0; attempt < 5; attempt += 1) {
try {
return await request('GET', path, accessToken, req, null, '8.0');
} catch (err) {
// Only a 404 means "not ready yet". Anything else is a real error, so rethrow it.
if (err.response?.status !== 404 || attempt === 4) throw err;
}
await sleep(1000 * (attempt + 1));
}
}
مکمل نتائج میں آمدنی کی تمام اقسام شامل ہوں گی جن سے HMRC واقف ہے، لیکن سہ ماہی اپ ڈیٹ اسکرین کے لیے صرف چند فیلڈز کی ضرورت ہوتی ہے۔ ذیل میں مثالی اعداد و شمار کے ساتھ مختصر جوابات ہیں۔
{
"metadata": {
"calculationId": "f2fb30e5-4ab6-4a29-b3c1-c7264259ff1c",
"taxYear": "2026-27",
"calculationType": "in-year",
"periodFrom": "2026-04-06",
"periodTo": "2026-10-05"
},
"calculation": {
"taxCalculation": {
"totalIncomeTaxAndNicsDue": 3902.6
}
}
}
calculation.taxCalculation.totalIncomeTaxAndNicsDue یہ سرخی نمبر ہے۔ metadata.periodTo یہ اعداد بتاتے ہیں کہ سال میں اب تک کتنی پیش رفت ہوئی ہے۔ یعنی، یہ سب سے حالیہ جمع کرانے کے اختتام کی نمائندگی کرتا ہے، نہ کہ درخواست کردہ تاریخ کی۔
اگر جمع کردہ ڈیٹا HMRC کے چیک کو پاس نہیں کرتا ہے، تو کوئی حساب کتاب نہیں کیا جائے گا۔ اس کے بجائے، messages.errors ہمارے پاس درج ذیل فہرست ہے: { id, text } آپ کو اپنے گاہک کو متن ضرور دکھانا چاہیے تاکہ وہ اپنے ریکارڈ میں ترمیم کر سکیں۔
سال بہ سال کے اعداد و شمار دکھانے سے پہلے، HMRC کے کم از کم فنکشنل معیارات کے لیے اعلانِ دستبرداری کی ضرورت ہوتی ہے۔ مندرجہ ذیل متن HMRC سروس گائیڈ کے ٹیکس کیلکولیشن سیکشن میں فراہم کیا گیا ہے، یا آپ خود لکھ سکتے ہیں۔
"یہ حساب صرف ان معلومات پر مبنی ہے جو HMRC کو آپ کی آمدنی اور اخراجات کے بارے میں 20XX-XX-XX تک موصول ہوئی ہے۔ یہ تبدیل ہو سکتا ہے کیونکہ ہمیں ٹیکس سال کے دوران آپ کے بارے میں مزید معلومات موصول ہوتی ہیں۔"
براہ کرم تاریخ درج کریں منجانب: periodTo. یہ کہنا بھی مددگار ہے کہ یہ ایک تخمینہ ہے۔ HMRC کی رہنمائی میں کہا گیا ہے کہ صارفین کو اس وقت کچھ بھی ادا کرنے کی ضرورت نہیں ہے۔
عام مسائل
1. ڈیفالٹ سینڈ باکس ڈیٹا پرانا ہے۔
اگر آپ جانچ کے منظر نامے کے بغیر سینڈ باکس سے واجبات API کو کال کرتے ہیں، تو آپ کو پچھلے ٹیکس سالوں کا جامد ڈیٹا ملے گا جسے جمع کرنے کا اختتامی نقطہ مسترد کرتا ہے۔ RULE_TAX_YEAR_NOT_SUPPORTED. جانے دو Gov-Test-Scenario: DYNAMIC اس کے بجائے، آپ موجودہ سال کے لیے انکشاف کی ذمہ داریاں حاصل کرتے ہیں۔
مجموعی اختتامی نکات پہلے سے طے شدہ نہیں ہوتے ہیں۔ GET آپ کے بعد PUT ڈبہ بند اعداد و شمار واپس کریں۔ ایک حقیقی راؤنڈ ٹرپ کے لیے STATEFUL سیلف اسسمنٹ ٹیسٹ سپورٹ API کے ذریعے تیار کردہ کاروباری منظرنامے۔
2. نیا اپ ڈیٹ موجودہ اپ ڈیٹ کی جگہ لے لیتا ہے۔
ہر ایک کے بعد PUT آپ سال کے اعداد و شمار کو بدل کر پچھلی سہ ماہیوں کو صاف کر سکتے ہیں، ایک ایسا فارم جو خالی کھلتا ہے اور صرف وہی جمع کرتا ہے جو صارف داخل کرتا ہے۔ اگر آپ اسے تلاش کے اختتامی نقطہ یا اپنے اپنے ریکارڈ سے پہلے سے آباد کرتے ہیں، تو تمام دوبارہ جمع کرانا پورے سال کی تاریخ سے شروع ہو جائے گا۔
3. 0 بھیجیں اور کوئی فیلڈ نہ چھوڑیں۔
HMRC کے اختتامی نکات کی دستاویز میں کہا گیا ہے کہ جمع کرانے میں آمدنی اور اخراجات کی قدریں شامل ہونی چاہئیں چاہے وہ صفر ہی کیوں نہ ہوں، اس لیے بغیر آمدنی والے سہ ماہیوں کو پھر بھی بھیجا جائے گا۔ turnover اور other پسند 0. GOV.UK یہ بھی کہتا ہے کہ گذارشات کو بلاک نہ کریں کیونکہ تمام نمبرز صفر ہوں گے کیونکہ اس مدت کے دوران کچھ نہ ہونے پر صارف کو اپ ڈیٹ بھیجنا پڑے گا۔
4. آپ بہت جلد جمع نہیں کر سکتے۔
مجموعی اختتامی نقطہ مدت کے اختتام سے 10 دن پہلے کی گئی گذارشات کو مسترد کرتا ہے (RULE_EARLY_DATA_SUBMISSION_NOT_ACCEPTED) اور پہلے سے جمع کرائی گئی تاریخ سے پہلے کی آخری تاریخ (RULE_SUBMISSION_END_DATE_CANNOT_MOVE_BACKWARDS)۔ واضح طور پر مدت ختم ہونے کی تاریخ کی نشاندہی کریں اور جمع کرانے کے بٹن کو صرف جہاں قابل اطلاق ہو۔
5. "مکمل" میں ایک گھنٹہ لگ سکتا ہے۔
کامیابی کے بعد 204HMRC کو ذمہ داریوں کی تعمیل کو نشان زد کرنے میں ایک گھنٹہ تک کا وقت لگ سکتا ہے، لہذا اگر آپ انہیں فوری طور پر پڑھ لیں، تب بھی وہ بقایا کے طور پر نشان زد ہوں گے۔ اپنی جمع کرانے کی تاریخ پر بھروسہ کریں اور اپنے صارفین کو بتائیں کہ ان کی حیثیت جلد ہی اپ ڈیٹ کر دی جائے گی۔
6. خالی آبجیکٹ کا استعمال کرتے ہوئے کیلکولیشن کو متحرک کریں۔
میرے ٹیسٹوں میں null جسم 500 HMRC کے حساب کتاب کے پس منظر میں، ایک خالی JSON آبجیکٹ ({}) قبول کر لیا گیا۔ ورژن بھی دیکھیں: انفرادی کمپیوٹ 9.0 سینڈ باکس میں ہے، لیکن اس تحریر کے وقت، 8.0 پروڈکشن میں دستیاب ورژن ہے۔
آگے کہاں جانا ہے۔
اب ہمارے پاس ایک مکمل سہ ماہی لوپ ہے۔ کاروبار تلاش کریں، انکشاف کی ذمہ داریوں کو پڑھیں، ایک مجموعی خلاصہ تیار کریں جو لاگت کے متفقہ اصولوں کی تعمیل کرتی ہو، اسے جمع کروائیں، پھر درست اعلانات کے ساتھ حسابات چلائیں، انتظار کریں اور انہیں پڑھیں۔
چوتھی اپ ڈیٹ کے بعد، سال اسی انفرادی حساب کے API میں ختم ہوتا ہے۔ intent-to-finalise حساب لگانے کے بجائے in-yearگاہک کو نتائج دکھائیں اور متعلقہ کیلکولیشن ID کے لیے حتمی اعلامیہ جمع کرائیں۔
یہ اپنے آپ میں ایک ٹیوٹوریل کا مستحق ہے، اور اسی کے بارے میں میں آگے لکھنے کا ارادہ رکھتا ہوں۔
اپنے رول آؤٹ کی منصوبہ بندی کرنے سے پہلے ایک عملی نوٹ: HMRC کا API صفحہ ایک نوٹس دکھاتا ہے کہ وہ فی الحال نئی 2026-27 سہ ماہی اپ ڈیٹ کی مصنوعات کے لیے پروڈکشن کی اسناد کی درخواستیں قبول نہیں کر رہے ہیں۔ سینڈ باکس کھلا رہتا ہے، لہذا آپ مندرجہ بالا سبھی کو آج ہی بنا اور جانچ سکتے ہیں۔ تاہم، عمل درآمد کی تاریخ کی تصدیق کرنے سے پہلے براہ کرم Self-Employed Business API صفحہ پر اعلان کو پڑھیں۔
میں TapTax پر کام کر رہا ہوں، جو کہ برطانیہ کے واحد تاجروں کے لیے ٹیکس ڈیجیٹل بنانے والی ایپ ہے، اور یہیں سے اس مضمون کا کوڈ آیا ہے۔
مصنف کے بارے میں: Solomon Amos TapTax کے بانی ہیں اور انہوں نے HMRC میکنگ ٹیکس ڈیجیٹل انٹیگریشن بنایا ہے۔ انہوں نے گزشتہ تین سالوں سے HMRC کے ڈیجیٹل ماڈرنائزیشن پروگرام کے چیف ٹیکنیکل آرکیٹیکٹ کے طور پر کام کیا ہے اور مشین لرننگ میں تحقیق کے ساتھ انجینئرنگ میں پی ایچ ڈی کی ڈگری حاصل کی ہے۔ آپ اسے ڈھونڈ سکتے ہیں۔ لنکڈ.