# تبدیلیوں کا ریکارڈ

## ستمبر 2026

### 10 ستمبر

**HTML فارم اب دستخط شدہ کنٹینر بھیجتا ہے۔** انوائس کی الگ الگ فیلڈز کے بجائے — `data` (JSON کا base64url) اور `signature` (`data` اسٹرنگ کا HMAC-SHA256)۔ endpoint اب `invoices/createFromForm` کے بجائے `invoices/form` ہے۔ پرانے فارم اب کام نہیں کرتے اور انہیں دوبارہ بنانا ضروری ہے: [HTML فارم کا دستخط](./creating-invoices/html-forms/form-signature.md) دیکھیں۔

### 8 ستمبر

**Webhook کی باڈی میں عددی فیلڈز اب نمبرز ہیں۔** چھ فیلڈز جو پہلے اسٹرنگز کے طور پر جاتی تھیں، اب نمبرز کے طور پر جاتی ہیں: `project.commissionRate`، `invoice.commissionFiatUSD`، `invoice.amountFiatUSD`، `invoice.amountFiat`، `invoice.calcAmountFiat`، `payment.amount`۔ فیلڈز کا مجموعہ، ان کے نام اور ان کی ترتیب نہیں بدلی۔

یاد رکھیں: آخر کے صفر ختم ہو جاتے ہیں، اس لیے 10.00 کی رقم 10 کے طور پر آتی ہے۔ 0.0001 سے کم رقمیں exponential نوٹیشن میں آتی ہیں، مثال کے طور پر 1.0e-6 — معیاری JSON پارسنگ درست نمبر دیتی ہے؛ صرف اسٹرنگ کی دستی پارسنگ ٹوٹتی ہے۔

رول آؤٹ سے پہلے بنی اور ابھی تک نہ پہنچی اطلاعات پرانے فارمیٹ میں آتی ہیں۔ جب تک قطار خالی نہ ہو جائے، وصول کنندہ کو دونوں صورتیں قبول کرنی چاہییں — اس میں دو دن سے زیادہ نہیں لگتے۔

### 6 ستمبر

**API کے جوابات میں عددی فیلڈز اب نمبرز ہیں۔** اس کا اثر `invoices/list`، `payments/list` اور `invoices/create` پر ہے۔

| فیلڈ               | پہلے           | اب  |
| ------------------- | ---------------- | ------ |
| `commissionFiatUSD` | `"0.10"`         | `0.1`  |
| `amountFiatUSD`     | `"10.00"`        | `10`   |
| `amountFiat`        | `"1000.00"`      | `1000` |
| `views`             | `"0"`            | `0`    |
| `payment.amount`    | `"10.500000000"` | `10.5` |

**پروجیکٹ تک محدود کلید اب تمام میتھڈز میں پابندی لاگو کرتی ہے۔** پہلے کچھ میتھڈز پروجیکٹ کو نظر انداز کرتے تھے۔ اب فہرست والے میتھڈز میں یہ فلٹر ہے، اور سرور کسی دوسرے پروجیکٹ کی انوائس یا والٹ کی درخواست کو `Restricted project` کے ساتھ رد کر دیتا ہے۔ جو میتھڈ پروجیکٹ کی پابندی کا لحاظ نہیں رکھ سکتا، وہ ایسی کلید کے لیے بند ہے۔ تفصیلات «کلید کا دائرہ» سیکشن میں ہیں۔

**ادائیگیوں کی فہرست اب غیر منسلک ادائیگیاں بھی واپس کرتی ہے۔** پہلے `payments/list` صرف وہ ادائیگیاں واپس کرتا تھا جو کسی انوائس سے منسلک تھیں۔ اب نتائج میں آپ کے تمام والٹس کی تمام ادائیگیاں شامل ہیں؛ غیر منسلک ادائیگی میں `invoice` آبجیکٹ نہیں ہوتا۔ یہی وہ ادائیگیاں ہیں جو `invoices/bindPayment` کے ذریعے دستی طور پر منسلک کرنے کے لیے درکار ہیں۔

**انوائس کی منسوخی اب انکار کی وجوہات میں فرق کرتی ہے۔** پہلے انوائس کی عدم موجودگی اور پوری نہ ہونے والی شرائط، دونوں پر عمومی `Invoice not found` واپس آتا تھا۔ اب `Invoice not found` کا مطلب صرف یہ ہے کہ انوائس موجود نہیں، جبکہ پوری نہ ہونے والی شرائط پر `Invoice cannot be canceled` واپس آتا ہے۔

**غلط شناخت کنندگان اب رد ہو جاتے ہیں۔** `invoices/list` میں `invoiceId`، `invoiceUid` اور `projectId` کی جانچ ہوتی ہے؛ `payments/list` میں — `walletId` اور `invoiceId` کی۔ غیر موزوں قدر پر فیلڈ کے نام کے ساتھ `Parameter is filled in incorrectly` واپس آتا ہے۔ پہلے ایسا پیرامیٹر خاموشی سے نظر انداز ہو جاتا تھا اور نتائج بغیر فلٹر کے واپس آتے تھے۔

**مدت کی حدود میں اب پورا مذکورہ دن شامل ہوتا ہے۔** `startDate` اور `endDate` کا مطلب `00:00:00` سے `23:59:59` تک ہے۔ پہلے آخری دن مکمل طور پر کٹ جاتا تھا، اور ایک دن کی کوئری صرف وہی ریکارڈ واپس کرتی تھی جو ٹھیک آدھی رات کو بنے تھے۔ اس کا اثر `invoices/list`، `payments/list`، `statistics/invoices` اور `statistics/payments` پر ہے۔

**بیلنس کی ہسٹری میں اب پروجیکٹ کی فیلڈ ہے۔** `billing/history` میتھڈ میں ہر آپریشن کے ساتھ اب `projectId` فیلڈ آتی ہے۔ اکاؤنٹ کی سطح کے آپریشنز — ٹاپ اپس اور بونسز — کے لیے یہ `null` ہوتی ہے۔

### 4 ستمبر

**تفصیل اور سروس ڈیٹا اپنی اصل شکل میں واپس آتے ہیں۔** `description` اور `serviceData` فیلڈز پہلے انکوڈ شدہ شکل میں محفوظ ہوتی تھیں، اور API کے جوابات میں کوٹیشن مارک `&quot;` کی صورت میں اور less-than کا نشان `<` کی صورت میں آتا تھا۔ اب بالکل وہی واپس آتا ہے جو تاجر نے بھیجا تھا۔ HTML میں دکھاتے وقت قدر کو اپنی طرف escape کریں۔

**HTML فارمز صرف POST قبول کرتے ہیں۔** ایڈریس بار میں پیرامیٹرز والے لنک پر جا کر انوائس بنانا اب کام نہیں کرتا — سروس پیرامیٹرز صرف درخواست کی باڈی سے پڑھتی ہے۔ اگر آپ لنکس استعمال کرتے تھے، تو انہیں `method="post"` والے فارم سے بدل دیں۔

### 3 ستمبر

**Webhook اطلاعات پر اب دستخط ہوتا ہے۔** اب `X-Timestamp` اور `X-Signature` ہیڈرز بھی آتے ہیں؛ دستخط کا حساب Webhook کی خفیہ کلید پر HMAC-SHA256 سے ہوتا ہے۔ دستخط کی جانچ سے آپ اصل اطلاع کو جعلی سے الگ پہچان سکتے ہیں۔ طریقہ کار اور مثالیں «Webhook کے دستخط کی جانچ» سیکشن میں ہیں۔

یہ تبدیلی پچھلے ورژن کے ساتھ مطابقت رکھتی ہے: اگر آپ جانچ شامل نہیں کرتے، تو آپ کا ہینڈلر پہلے کی طرح کام کرتا رہتا ہے۔
