This is certificate useful for ISEE
python3 -c " import pdfplumber with pdfplumber.open('/home/daytona/workspace/attachments/5868ce09-5d6a-42ff-84d4-efa7059cdab3/Bankstatement.pdf') as pdf: for i, page in enumerate(pdf.pages): print(f'--- Page {i+1} ---') print(page.extract_text()) "
ISEE bank statement requirements financial documents accepted
| Criterion | Status |
|---|---|
| Official bank letterhead | Yes (Union Bank of India) |
| Account holder name | Yes (Mr. Thota Gangajalam) |
| Account balance figures | Yes (two dates provided) |
| Authorised signatures/stamp | Yes (two signatories) |
| Date of issue | Yes (21-02-2026) |
| Balance recency | Concern - balances shown are for 31.12.2024 and 31.12.2025, not a current/recent date |
| Balance amount | Concern - Rs. 1,525.09 ( |
Create an ISEE filing checklist for Indian resident assets
ISEE dichiarazione patrimonio estero India documenti necessari DSU 2025 2026
ls /home/daytona/workspace/ && ls /home/daytona/skills/docx/scripts/office/ 2>/dev/null || echo "No scripts dir"
mkdir -p /home/daytona/workspace/isee-checklist && cat > /home/daytona/workspace/isee-checklist/build.js << 'EOF' const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType, VerticalAlign, Header, PageNumber } = require('docx'); const fs = require('fs'); // ─── Helpers ─────────────────────────────────────────────────────────────── const BLUE = "1F497D"; const LBLUE = "D9E2F3"; const GREEN = "E2EFDA"; const AMBER = "FFF2CC"; const GRAY = "F2F2F2"; const RED = "FCE4D6"; const WHITE = "FFFFFF"; function heading1(text) { return new Paragraph({ heading: HeadingLevel.HEADING_1, spacing: { before: 320, after: 120 }, children: [new TextRun({ text, bold: true, size: 28, color: WHITE, font: "Calibri" })], shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, indent: { left: 120, right: 120 } }); } function heading2(text, fillColor) { return new Paragraph({ spacing: { before: 240, after: 80 }, children: [new TextRun({ text, bold: true, size: 22, color: BLUE, font: "Calibri" })], shading: { type: ShadingType.SOLID, color: fillColor || LBLUE, fill: fillColor || LBLUE }, indent: { left: 80 } }); } function note(text, color) { return new Paragraph({ spacing: { before: 60, after: 60 }, indent: { left: 200 }, shading: { type: ShadingType.SOLID, color: color || AMBER, fill: color || AMBER }, children: [new TextRun({ text: " " + text, italics: true, size: 18, color: "595959", font: "Calibri" })] }); } function checkRow(label, details, status, rowColor) { const cellShade = (c) => ({ type: ShadingType.SOLID, color: c, fill: c }); return new TableRow({ children: [ // Checkbox cell new TableCell({ width: { size: 5, type: WidthType.PERCENTAGE }, verticalAlign: VerticalAlign.CENTER, shading: cellShade(rowColor || WHITE), children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "☐", size: 24, font: "Segoe UI Symbol" })] })] }), // Document / requirement new TableCell({ width: { size: 55, type: WidthType.PERCENTAGE }, shading: cellShade(rowColor || WHITE), children: [ new Paragraph({ spacing: { before: 40, after: 20 }, children: [new TextRun({ text: label, bold: true, size: 20, font: "Calibri" })] }), ...details.map(d => new Paragraph({ spacing: { before: 20, after: 20 }, indent: { left: 120 }, children: [new TextRun({ text: "• " + d, size: 18, font: "Calibri", color: "404040" })] })) ] }), // Status / notes new TableCell({ width: { size: 40, type: WidthType.PERCENTAGE }, shading: cellShade(rowColor || WHITE), children: [new Paragraph({ spacing: { before: 60 }, children: [new TextRun({ text: status, size: 18, font: "Calibri", color: "595959", italics: true })] })] }) ] }); } function tableHeader() { return new TableRow({ tableHeader: true, children: [ new TableCell({ width: { size: 5, type: WidthType.PERCENTAGE }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: "✓", bold: true, color: WHITE, font: "Calibri", size: 20 })] })] }), new TableCell({ width: { size: 55, type: WidthType.PERCENTAGE }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [new Paragraph({ children: [new TextRun({ text: "Document / Requirement", bold: true, color: WHITE, font: "Calibri", size: 20 })] })] }), new TableCell({ width: { size: 40, type: WidthType.PERCENTAGE }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [new Paragraph({ children: [new TextRun({ text: "Status / Notes", bold: true, color: WHITE, font: "Calibri", size: 20 })] })] }) ] }); } function makeTable(rows) { return new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, borders: { top: { style: BorderStyle.SINGLE, size: 4, color: BLUE }, bottom: { style: BorderStyle.SINGLE, size: 4, color: BLUE }, left: { style: BorderStyle.SINGLE, size: 4, color: BLUE }, right: { style: BorderStyle.SINGLE, size: 4, color: BLUE }, insideH:{ style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" }, insideV:{ style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" } }, rows: [tableHeader(), ...rows] }); } function spacer() { return new Paragraph({ spacing: { before: 80, after: 40 }, children: [new TextRun("")] }); } // ─── Document ────────────────────────────────────────────────────────────── const doc = new Document({ styles: { default: { document: { run: { font: "Calibri", size: 20 } } } }, sections: [{ headers: { default: new Header({ children: [ new Paragraph({ alignment: AlignmentType.RIGHT, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [ new TextRun({ text: "ISEE 2026 — Indian Resident Assets Filing Checklist | ", size: 16, color: WHITE, font: "Calibri" }), new TextRun({ text: "Prepared: July 2026", size: 16, color: WHITE, font: "Calibri", italics: true }) ] }) ] }) }, children: [ // Title block new Paragraph({ alignment: AlignmentType.CENTER, spacing: { before: 200, after: 60 }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [ new TextRun({ text: "ISEE 2026 Filing Checklist", bold: true, size: 52, color: WHITE, font: "Calibri" }) ] }), new Paragraph({ alignment: AlignmentType.CENTER, spacing: { before: 0, after: 40 }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [new TextRun({ text: "Indian Resident & Foreign Assets — DSU Declaration Guide", size: 24, color: "BDD7EE", font: "Calibri", italics: true })] }), new Paragraph({ alignment: AlignmentType.CENTER, spacing: { before: 0, after: 200 }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [new TextRun({ text: "Reference Period: 1 January – 31 December 2025 | Asset snapshot date: 31.12.2025", size: 18, color: "BDD7EE", font: "Calibri" })] }), // ── SECTION 1: Personal Identity ── heading1("SECTION 1 — Personal Identity Documents"), spacer(), makeTable([ checkRow("Valid Identity Document (Declarant)", [ "Passport — must be current and not expired", "OR Italian residence permit (if applicable)" ], "Original + photocopy required at CAF", WHITE), checkRow("Codice Fiscale (Tax Code)", [ "Italian Codice Fiscale card or certificate", "Required for every family member in the DSU nucleo" ], "All members — including minors", GREEN), checkRow("State of Family / Stato di Famiglia", [ "Official certificate from your Italian municipality (Comune)", "Or self-declaration (autocertificazione) listing all members" ], "Must match the nucleo declared in DSU", WHITE), checkRow("Residence Permit / Permesso di Soggiorno", [ "Required if non-EU citizen residing in Italy", "Must be valid at time of DSU submission" ], "Include all pages with endorsements", GREEN), ]), spacer(), // ── SECTION 2: Income ── heading1("SECTION 2 — Income Documents (Reference Year 2024)"), note("For DSU filed in 2026: income reference year is 2024. Indian income must be declared even if taxed in India."), spacer(), makeTable([ checkRow("Italian Income — CU 2025 (redditi 2024)", [ "Certificazione Unica issued by employer or INPS", "Covers employment, pension, and welfare income in Italy" ], "Collect from all employers / INPS", WHITE), checkRow("Italian Tax Return — 730/2025 or Modello Redditi 2025", [ "Complete copy if filed; covers income year 2024", "Not required if all income is on CU 2025" ], "Provide if filed separately", GREEN), checkRow("Indian Employment Income (redditi prodotti all'estero)", [ "Form 16 issued by Indian employer (FY 2024-25 = Apr 2024–Mar 2025)", "Pay slips or salary certificate if Form 16 not yet issued", "Bank credit entries confirming salary receipt" ], "Must declare even if exempt in Italy under DTTP", WHITE), checkRow("Indian Tax Return — ITR (Income Tax Return)", [ "ITR-1 / ITR-2 filed for AY 2024-25 (FY 2023-24) for income matching", "ITR-V (acknowledgement) as proof of filing" ], "AY 2024-25 corresponds to Italian income year 2024", GREEN), checkRow("Foreign Income — Certified Translation", [ "All Indian income documents must have certified Italian translation", "Translator must be sworn (giurato) or notarised" ], "Arrange via Italian Embassy / authorised translator", RED), checkRow("Maintenance / Alimony received or paid", [ "Court order or legal agreement (sentenza di separazione)", "Bank statements proving payments made or received" ], "Only if applicable", GRAY), ]), spacer(), // ── SECTION 3: Indian Bank Accounts ── heading1("SECTION 3 — Indian Bank Accounts (Patrimonio Mobiliare Estero)"), note("Declare ALL Indian accounts held by ANY family member at 31.12.2025. Include accounts closed during 2025 too."), spacer(), makeTable([ checkRow("Bank Balance Certificate (Saldo al 31.12.2025)", [ "Official letter on bank letterhead", "Must state: account holder name, account number, balance as of 31 December 2025", "Signed and stamped by authorised bank official", "Example: Union Bank of India balance letter — balance Rs. 659.79 as at 31.12.2025" ], "One letter per bank account", WHITE), checkRow("Average Annual Balance — Giacenza Media 2025", [ "Bank-issued certificate of average balance for full year 2025", "Required in addition to the 31.12.2025 snapshot", "Some Indian banks: request 'Annual Average Balance Certificate'" ], "Critical — CAFs require both balance + average", RED), checkRow("NRE / NRO Accounts (if applicable)", [ "NRE (Non-Resident External) account statement", "NRO (Non-Resident Ordinary) account statement", "Both types must be declared separately" ], "Request from your Indian bank's NRI services desk", GREEN), checkRow("Fixed Deposits / FD (Depositi Vincolati)", [ "FD certificate showing principal + accrued interest", "Date of maturity — must declare if held at 31.12.2025", "Premature closure value if closed during 2025" ], "Each FD requires a separate certificate", WHITE), checkRow("Recurring Deposits / RD", [ "RD passbook or certificate with balance at 31.12.2025", "Monthly instalment amount and maturity date" ], "Include if held during 2025", GREEN), checkRow("Post Office Savings (India Post)", [ "NSC, PPF, KVP, Post Office Savings Account", "Balance certificate or passbook copy as at 31.12.2025" ], "PPF partial withdrawals also reportable", WHITE), ]), note("TIP: Request all certificates from your Indian bank branch well in advance — allow 2-4 weeks. Many branches require written/email application for official certificates."), spacer(), // ── SECTION 4: Indian Investments ── heading1("SECTION 4 — Indian Financial Investments"), spacer(), makeTable([ checkRow("Mutual Funds — Statement of Account", [ "CAMS / KFintech consolidated account statement (CAS)", "NAV-based valuation as at 31 December 2025", "Declare each fund separately or use consolidated value" ], "Download free from CAMS/KFintech online", WHITE), checkRow("Equity Shares (listed on NSE/BSE)", [ "Demat account statement from broker (Zerodha, HDFC Sec, etc.)", "Closing price of each holding as at 31.12.2025", "Annual Holding Statement (Form 10B/broker report)" ], "Use NSE/BSE official closing prices for valuation", GREEN), checkRow("Equity Shares (unlisted / private companies)", [ "Share certificate copies", "Last audited balance sheet to estimate value (book value)", "Director certificate if no market price available" ], "Unlisted shares are harder to value — consult CAF", AMBER), checkRow("Provident Fund — EPF / GPF", [ "EPF passbook from EPFO portal (epfindia.gov.in)", "Balance as at 31.12.2025 (not FY end — calendar year end)", "Must clearly state the withdrawable amount" ], "Only withdrawable balance is countable for ISEE", WHITE), checkRow("Public Provident Fund (PPF)", [ "PPF passbook or bank statement showing PPF account", "Balance as at 31.12.2025", "Note: PPF is partially locked — state withdrawable amount" ], "Partial withdrawal rules apply after year 7", GREEN), checkRow("National Pension Scheme (NPS)", [ "NPS account statement from NSDL/PFRDA portal", "Tier I and Tier II balances separately as at 31.12.2025" ], "Tier I is locked till 60 — disclose both tiers", AMBER), checkRow("Life Insurance (investment / endowment type)", [ "Surrender value / cash value certificate as at 31.12.2025", "Issued by LIC or private insurer on letterhead", "Not required for pure term (risk-only) policies" ], "LIC bonus statement counts towards value", WHITE), ]), spacer(), // ── SECTION 5: Indian Real Estate ── heading1("SECTION 5 — Indian Real Estate (Patrimonio Immobiliare Estero)"), note("Indian property owned by ANY family member as at 31.12.2025 must be declared. Use official government valuation, not market price."), spacer(), makeTable([ checkRow("Property Registration Document", [ "Sale deed (registered copy) or gift deed", "Shows purchase price and ownership details" ], "Registered at Sub-Registrar office", WHITE), checkRow("Government Valuation / Stamp Duty Value", [ "State government's guidance value / circle rate as at 31.12.2025", "Certificate from Sub-Registrar or Revenue Department", "Used for ISEE as official declared value" ], "This is the value used for ISEE — not market price", RED), checkRow("Khata / Patta / Property Tax Receipt", [ "Municipal property tax receipt (latest, 2025)", "Khata certificate from BBMP/municipality", "Confirms legal title and municipal registration" ], "Required to confirm ownership details", GREEN), checkRow("Encumbrance Certificate (EC)", [ "EC from Sub-Registrar — last 13 years", "Confirms no outstanding loans / mortgages on the property" ], "Optional but useful if property is mortgaged", WHITE), checkRow("Land Survey / Mutation Records", [ "Pahani / 7/12 extract (for agricultural land)", "RTC (Record of Rights, Tenancy and Crops)" ], "Required only for agricultural land", GRAY), checkRow("Rental Income Documentation (if property is rented)", [ "Registered rental agreement", "Bank statements showing rental receipts in 2024", "Must declare as foreign income (see Section 2)" ], "Rental income is both income AND asset-related", AMBER), ]), spacer(), // ── SECTION 6: Vehicles ── heading1("SECTION 6 — Vehicles & Other Durable Assets"), spacer(), makeTable([ checkRow("Motor Vehicles Registered in India", [ "RC Book (Registration Certificate) copy", "Vehicles with engine capacity >= 500cc must be declared", "Applies to cars, motorcycles >= 500cc, jeeps, etc." ], "Include vehicles owned in India", WHITE), checkRow("Boats / Watercraft Registered in India", [ "Registration certificate from Indian port authority", "Applicable only for pleasure/leisure craft" ], "Commercial vessels generally excluded", GRAY), ]), spacer(), // ── SECTION 7: Translation & Legalisation ── heading1("SECTION 7 — Translation & Legalisation Requirements"), note("All Indian documents in regional languages (Telugu, Hindi, Tamil, etc.) or English must be translated into Italian by a sworn translator."), spacer(), makeTable([ checkRow("Certified Italian Translation of ALL Indian Documents", [ "Translator must be registered with Italian Court (Tribunale)", "Or use an officially recognised translation agency", "Self-translation is NOT accepted" ], "Budget 2-3 weeks and €15-40 per page", RED), checkRow("Apostille (for property documents)", [ "Apostille stamp from Ministry of External Affairs (India)", "Required for property deeds, valuation certificates", "Apply online at mea.gov.in or through authorised agents" ], "Processing: 5-7 business days in India", AMBER), checkRow("Embassy Legalisation (alternative to Apostille)", [ "Italian Embassy in New Delhi / Mumbai / Chennai can legalise", "Used when Apostille is not available for a specific document type" ], "Check Italian Embassy website for current fees", WHITE), checkRow("Currency Conversion to Euro", [ "Use ECB (European Central Bank) exchange rate for 31 December 2025", "EUR/INR rate on 31.12.2025 — record the exact rate used", "Attach printed rate confirmation to your documentation" ], "ECB rate: check ecb.europa.eu for historical rates", GREEN), ]), spacer(), // ── SECTION 8: CAF Submission ── heading1("SECTION 8 — CAF Submission Checklist"), note("Submit DSU at a CAF (Centro di Assistenza Fiscale) such as CAF CGIL, CAF CISL, or CAF UIL. Service is free for standard DSU."), spacer(), makeTable([ checkRow("Book CAF Appointment", [ "Call or book online at your local CAF", "Ask specifically for ISEE with patrimonio estero", "ISEE with foreign assets takes longer — allow 60-90 min" ], "Book early — January-March is peak season", WHITE), checkRow("Bring ALL Original Documents + Copies", [ "Originals for verification; copies for submission", "Folder organised by section (Identity / Income / Assets)" ], "Use this checklist as your organiser", GREEN), checkRow("Bring All Certified Italian Translations", [ "Each translated document stapled with original", "Translator's stamp and signature on every page" ], "Separate folder recommended", WHITE), checkRow("Obtain DSU Protocol Number", [ "After submission, you receive a protocollo number", "Keep this safe — required for university / scholarship applications" ], "Save both paper and digital copies", AMBER), checkRow("Verify ISEE Attestation for 'Omissioni/Difformita'", [ "If INPS flags discrepancies, the ISEE is not 'conforme'", "Common cause: undeclared foreign assets or mismatched data", "Resolve before the university/scholarship deadline" ], "Check INPS portal after 10-15 days", RED), ]), spacer(), // ── SECTION 9: Key Deadlines ── heading1("SECTION 9 — Key Deadlines & Reminders"), spacer(), makeTable([ checkRow("DSU Validity", [ "Valid from submission date until 31 December of the same year", "For AY 2025/26 scholarships and fees: submit before institution deadline" ], "Typically by March-September depending on institution", AMBER), checkRow("University Fee Reduction Deadline", [ "Most Italian universities: February-April 2026", "Check your specific university's website" ], "Late submission often means 25% surcharge", RED), checkRow("DSU for Dormitories / Alloggi", [ "Usually earlier deadline: July-August 2025 for AY 2025/26", "ISEE universitario richiesto (not standard ISEE)" ], "Confirm with your university's DSU office", AMBER), checkRow("Request Indian Documents Early", [ "Bank certificates: 2-4 weeks", "Apostille: 5-7 business days (India)", "Certified translation: 1-2 weeks", "Allow 6-8 weeks total from first request to CAF submission" ], "Start collecting documents by November-December", GREEN), ]), spacer(), // Legend new Paragraph({ spacing: { before: 160, after: 60 }, children: [new TextRun({ text: "COLOUR LEGEND:", bold: true, size: 20, color: BLUE, font: "Calibri" })] }), new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, borders: { top: { style: BorderStyle.SINGLE, size: 2, color: "AAAAAA" }, bottom: { style: BorderStyle.SINGLE, size: 2, color: "AAAAAA" }, left: { style: BorderStyle.SINGLE, size: 2, color: "AAAAAA" }, right: { style: BorderStyle.SINGLE, size: 2, color: "AAAAAA" }, insideH:{ style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" }, insideV:{ style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" } }, rows: [ new TableRow({ children: [ new TableCell({ width: {size:20,type:WidthType.PERCENTAGE}, shading:{type:ShadingType.SOLID,color:RED,fill:RED}, children:[new Paragraph({children:[new TextRun({text:" Red — Critical / Do not miss",size:18,font:"Calibri"})]})] }), new TableCell({ width: {size:20,type:WidthType.PERCENTAGE}, shading:{type:ShadingType.SOLID,color:AMBER,fill:AMBER}, children:[new Paragraph({children:[new TextRun({text:" Amber — Important / Check carefully",size:18,font:"Calibri"})]})] }), new TableCell({ width: {size:20,type:WidthType.PERCENTAGE}, shading:{type:ShadingType.SOLID,color:GREEN,fill:GREEN}, children:[new Paragraph({children:[new TextRun({text:" Green — Standard required item",size:18,font:"Calibri"})]})] }), new TableCell({ width: {size:20,type:WidthType.PERCENTAGE}, shading:{type:ShadingType.SOLID,color:GRAY,fill:GRAY}, children:[new Paragraph({children:[new TextRun({text:" Grey — Situational / if applicable",size:18,font:"Calibri"})]})] }), new TableCell({ width: {size:20,type:WidthType.PERCENTAGE}, shading:{type:ShadingType.SOLID,color:WHITE,fill:WHITE}, children:[new Paragraph({children:[new TextRun({text:" White — Standard item",size:18,font:"Calibri"})]})] }), ]}) ] }), spacer(), new Paragraph({ alignment: AlignmentType.CENTER, spacing: { before: 120, after: 60 }, shading: { type: ShadingType.SOLID, color: BLUE, fill: BLUE }, children: [new TextRun({ text: "This checklist is for guidance only. Verify requirements with your CAF and Italian institution. | July 2026", size: 16, italics: true, color: "BDD7EE", font: "Calibri" })] }) ] }] }); Packer.toBuffer(doc).then(buf => { fs.writeFileSync('/home/daytona/workspace/isee-checklist/ISEE_2026_Indian_Assets_Checklist.docx', buf); console.log('Done'); }); EOF cd /home/daytona/workspace/isee-checklist && node build.js
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/isee-checklist/ISEE_2026_Indian_Assets_Checklist.docx
# Quick sanity check — unzip and see word/document.xml exists python3 -c " import zipfile, os path = '/home/daytona/workspace/isee-checklist/ISEE_2026_Indian_Assets_Checklist.docx' print('File size:', os.path.getsize(path), 'bytes') with zipfile.ZipFile(path) as z: names = z.namelist() print('Contents:', names[:10]) # Try reading the doc XML xml = z.read('word/document.xml') print('document.xml length:', len(xml), 'chars') print('First 200 chars:', xml[:200]) "
ISEE 2026 Indian Assets Checklist
Word Document · DOCX
| Section | Contents |
|---|---|
| 1 - Personal Identity | Passport, Codice Fiscale, Stato di Famiglia, Permesso di Soggiorno |
| 2 - Income (2024) | CU 2025, 730/Modello Redditi, Form 16, ITR, certified translations |
| 3 - Indian Bank Accounts | Balance certificate (31.12.2025), average annual balance (giacenza media), NRE/NRO, FDs, RDs, Post Office savings |
| 4 - Indian Investments | Mutual funds (CAS statement), listed/unlisted shares, EPF, PPF, NPS, LIC/endowment policies |
| 5 - Indian Real Estate | Sale deed, government stamp duty valuation (circle rate), Khata, rental income docs |
| 6 - Vehicles | RC Book for cars/bikes >= 500cc registered in India |
| 7 - Translation & Legalisation | Sworn Italian translator, Apostille via MEA India, ECB EUR/INR rate on 31.12.2025 |
| 8 - CAF Submission | Appointment tips, organising originals + translations, getting DSU protocol number, checking for ISEE omissioni |
| 9 - Deadlines | DSU validity, university fee deadlines, document collection lead times (6-8 weeks total) |