Give me the flowchart of what all registrations I should do fron the very first day I reach italy till my classes start
Indian student arriving Italy registration checklist 2025 permesso soggiorno codice fiscale university enrollment
Italy student visa non-EU arrival registration steps dichiarazione presenza comune 2025
A detailed vertical flowchart titled "Indian Student in Italy: Registration Roadmap (Day 1 to Classes Start)" with the following steps in sequential boxes connected by arrows, using color-coded phases: PHASE 1 - ARRIVAL (Days 1-2) in blue: Box 1: "Day 1 - Arrive in Italy | Check into accommodation | Get entry stamp (Non-Schengen = automatic presence registration)" Box 2: "Day 1-2 - Codice Fiscale | Go to Agenzia delle Entrate with passport | Issued same day, FREE | This unlocks everything else" PHASE 2 - LEGAL STAY (Days 1-8) in red/orange: Box 3: "Within 8 DAYS of arrival - Permesso di Soggiorno Application | Buy 'Kit Giallo' at Post Office (€16 marca da bollo + postal fee) | Submit completed form at Post Office (Sportello Amico) | You receive a RICEVUTA (receipt) immediately | Actual permit takes 3-6 months" PHASE 3 - UNIVERSITY ENROLLMENT (Week 1-2) in green: Box 4: "University Enrollment / Immatricolazione | Visit International Students Office | Submit: passport, visa, codice fiscale, Ricevuta, degree certificates, photos | Pay university fees | Get Student ID + enrollment certificate" PHASE 4 - HEALTH (Week 2-3) in purple: Box 5: "SSN Registration at ASL (Local Health Authority) | Pay €700 via F24 form (student health contribution) | Bring: passport, codice fiscale, Ricevuta, enrollment certificate, address proof | Choose your Medico di Base (GP) | Receive Tessera Sanitaria (health card)" PHASE 5 - RESIDENCE (Within 20 days) in teal: Box 6: "Residenza Anagrafica at Comune (Town Hall) | Register your Italian address | Bring: passport, Ricevuta, rental contract or host declaration | Municipality verifies your address (may send officer to check)" PHASE 6 - PRACTICAL SETUP (Ongoing, Week 1-3) in gray: Box 7: "Italian SIM Card | Open Italian Bank Account (ISEE statement needed for scholarship/benefits) | Get Student Transport Card (if available in your city)" Final box in dark green: "CLASSES START - You are legally registered, insured, and enrolled!" Include small warning icons: "⚠ 8-day deadline for Permesso is strict" and "⚠ Keep photocopies of ALL documents"

| Task | Where | Notes |
|---|---|---|
| Italian SIM card | Any phone shop | Bring passport + Codice Fiscale |
| Bank account | BancoPosta/UniCredit/BPER etc. | Bring Codice Fiscale + Ricevuta |
| ISEE declaration | CAF office (free assistance centers) | Needed for reduced fees, DSU scholarships |
| Student transport card | Local transport authority | Discounted yearly pass |
| Day/Period | Action | Deadline |
|---|---|---|
| Day 1-2 | Codice Fiscale | ASAP |
| Day 1-8 | Permesso di Soggiorno application | STRICT - do not miss |
| Week 1-2 | University enrollment | Per university schedule |
| Week 2-3 | ASL health registration | Before needing a doctor |
| Within 20 days | Residenza at Comune | Legally required |
| Ongoing | SIM, bank, ISEE | No hard deadline |
Well how much I should pay to the university for registration and collecting id card
Italian public university tuition fees non-EU international student 2025 2026 registration enrollment cost
| Fee | Amount | Notes |
|---|---|---|
| 1st Tuition Instalment (30%) | €0 - €1,200 | Paid at enrollment; depends on ISEE |
| Marca da bollo (stamp duty) | €16 | Fixed, mandatory every year |
| Regional tax (Tassa Regionale) | €100 - €200 | Paid to the regional government, not the university |
| Student ID card issuance | €0 - €20 | Many universities issue it free; some charge a small admin fee |
| Enrollment admin fee | €0 - €50 | Varies by institution |
| University Type | Annual Tuition Range | Examples |
|---|---|---|
| Budget public universities | €1,200 - €2,500/yr | University of Calabria, Palermo, Messina |
| Mid-tier public universities | €2,500 - €4,000/yr | Bologna, Turin, Florence, Padova |
| Premium public | up to €4,000/yr | Politecnico di Milano, Politecnico di Torino |
| Private universities | €8,000 - €20,000/yr | Bocconi (€15-20k), LUISS (€12-15k), Cattolica |
| ISEE Parificato Value | Annual Tuition |
|---|---|
| Below €13,000 | €0 (exempt) |
| €13,000 - €22,000 | €500 - €1,000 |
| €22,000 - €35,000 | €1,000 - €2,000 |
| €35,000 - €50,000 | €2,000 - €3,000 |
| Above €50,000 | Full rate (max €3,000 - €4,000) |
| No ISEE filed | Automatic maximum rate |
Important: If you do not file an ISEE Parificato, the university will charge you the maximum rate automatically. Filing it is in your interest even if your income is moderate.
| Installment | Percentage | Typical Deadline |
|---|---|---|
| 1st (at enrollment) | 30% | September - October |
| 2nd | 35% | December - January |
| 3rd | 35% | March - April |
| University | Approx. Annual Fee (non-ISEE/max rate) | Notes |
|---|---|---|
| Sapienza, Rome | €300 - €1,500 | One of the lowest in Italy |
| University of Bologna | €1,500 - €3,000 | Varies by programme |
| Politecnico di Milano | €2,500 - €4,000 | Engineering/Architecture premium |
| University of Turin | €1,500 - €3,000 | |
| University of Milan (Statale) | €1,500 - €3,500 |
Give information about about university of eastern piedmont novara
University of Eastern Piedmont Novara UPO tuition fees international students 2025 2026 enrollment
Università del Piemonte Orientale Novara programs English courses campus facilities 2026
https://www.uniupo.it/en/studentinfo/enrolments/internationa…
| Detail | Info |
|---|---|
| Full name | Università degli Studi del Piemonte Orientale "Amedeo Avogadro" |
| Short name | UPO |
| Founded | 1998 |
| Type | Public state university |
| Main headquarters | Vercelli (rector's office) |
| Novara campus | One of 3 main campuses (alongside Alessandria and Vercelli) |
| Total students | ~10,000 - 14,999 |
| Global ranking | ~#1,337 globally, #48 in Italy (EduRank) |
| Complex | What's Inside |
|---|---|
| Complesso Perrone (Via E. Perrone 18) | Classrooms, offices, lecture halls, student residences (EDISU), "Rita Fossaceca" library, auditorium, canteen, gym. Houses DISEI (Economics & Business) and Medicine + Law teaching |
| Complesso di Sant'Agabio (Largo Donegani 2/3 & Via G. Bovio 6) | Department of Pharmaceutical Sciences (DSF) - labs and teaching activities; includes the iconic Renzo Piano building |
| Palazzo Bellini (Via Solaroli 17) | Main medical hub - School of Medicine, Departments of Translational Medicine & Health Sciences |
| Program Level | Approximate Annual Fee (max rate, no ISEE) |
|---|---|
| Bachelor's Degree | ~€2,800/year |
| Master's Degree | ~€3,500/year |
| PhD | ~€4,000/year |
| Medicine (Single-Cycle) | First instalment at enrollment: €156 (then further installments) |
The Medicine enrollment process generates a PagoPA payment notice for the first instalment of €156 at the time of online enrollment.
| Office | Contact |
|---|---|
| International Students Office | international.students@uniupo.it |
| Degree evaluation (foreign titles) | extratitoli@apienotitolo.org / +39 320 825 1188 |
| EDISU Piemonte (scholarships/housing) | edisu.piemonte.it |
| UPO official website | uniupo.it |
Give fee details for UNIVERSITY OF EASTERN PIEDMONT NOVARA AFTER REGISTRATION AND GETTING ID CARD
UPO Università Piemonte Orientale tasse universitarie contribuzione studentesca 2025 2026 importi ISEE
UPO uniupo.it tuition fees contribution installments 2025 2026 international non-EU students payment
https://www.uniupo.it/en/studentinfo/fees-and-taxes
| Component | Amount |
|---|---|
| Tassa Regionale (Regional study tax) | €140.00 |
| Marca da Bollo (stamp duty) | €16.00 |
| Total 1st Installment | €156.00 (fixed for everyone) |
This is the same amount for ALL students regardless of income. Your academic career and student ID only become active after this payment is made via PagoPA.
| ISEE Parificato | Annual COA (approx.) | 2nd Installment (approx.) |
|---|---|---|
| €0 - €24,000 | €0 (No-Tax Area - EXEMPT) | €0 |
| €24,001 - €35,000 | €200 - €700 | €200 - €700 |
| €35,001 - €55,000 | €700 - €1,500 | varies |
| €55,001 - €75,000 | €1,500 - €2,200 | varies |
| No ISEE filed / above max | ~€2,800 (Bachelor's) / ~€3,500 (Master's) | max rate |
If you do NOT submit an ISEE Parificato by the deadline (typically 31 October), you are automatically placed at the maximum fee bracket.
| Remaining Balance | Number of Extra Installments | Deadlines |
|---|---|---|
| €10 - €200 | 1 lump sum | 31 March |
| €200 - €400 | 2 installments | 31 March + 30 April |
| €400 - €800 | 3 installments | 31 March + 30 April + 29 May |
| Over €800 | 4 installments | 31 March + 30 April + 29 May + 30 June |
| Fee | Amount | When Paid |
|---|---|---|
| 1st installment (fixed, everyone) | €156 | At enrollment / ID activation |
| 2nd installment (ISEE-based COA) | €0 - ~€1,000 | Dec - Jan |
| Remaining installments (3-6) | Depends on total COA | March - June |
| Total annual cost (low ISEE) | ~€156 | - |
| Total annual cost (no ISEE filed) | ~€2,956 - €3,656 | - |
| Category | Benefit |
|---|---|
| ISEE below No-Tax threshold | Full COA exemption (pay only €156/year) |
| Disability ≥ 66% / L.104 | Full exemption (only €16 marca da bollo) |
| Refugee / asylum seeker | Full exemption |
| Medical Specialisation students | Different rates: 2nd installment = €720 (within 180 days of contract renewal) |
| Pharmacy Specialisation | 2nd installment = €625 |
| Late ISEE submission (after Oct 31) | €50 fine, increasing €2.50/day up to max €100 |
| Fee paid late | €65 penalty, doubles to €130 if over 60 days late |
What is meant by ISEE PARIfICATO
In short: ISEE Parificato = ISEE for people with foreign income
| Regular ISEE | ISEE Parificato | |
|---|---|---|
| For | Italian residents / EU students | Non-EU students with foreign income |
| Income source | Italy | Abroad (India) |
| Certification needed | Italian tax data (automatic) | Dichiarazione di Valore from Italian consulate |
| Where to apply | CAF office | CAF office (with extra foreign documents) |
| Cost | Free | Free at CAF; consulate fee in India |
| Action | When |
|---|---|
| Gather Indian income documents | Before leaving India |
| Get Dichiarazione di Valore from Italian consulate | 2-3 months before departure (allow time for processing) |
| Visit CAF in Italy to file ISEE Parificato | Within first 2-3 weeks of arriving |
| Submit to UPO | Before 31 October (strict deadline) |
Difference between ISEE PARIFICATO VS SCHOLARSHIP
| ISEE Parificato | Scholarship (Borsa di Studio) | |
|---|---|---|
| What it is | A document proving your family's financial situation | Money given to you to support your studies |
| What it does | Reduces or eliminates your tuition fee | Pays you cash + may cover housing & meals |
| Direction of money | You pay LESS to the university | University / government GIVES you money |
| Who provides it | INPS (Italian govt calculates it via CAF) | EDISU, Italian govt, university, private bodies |
| Based on | Income + assets of your family | Income (ISEE) + academic merit (grades) |
| Is it automatic? | Yes - once you file it, fee reduction is automatic | No - you must apply separately every year |
| Is it money in hand? | No - it only affects your bill | Yes - cash transferred to your bank account |
| Deadline | 31 October each year | Usually June - September (before the year starts) |
ISEE Parificato = like a discount coupon on your university bill Scholarship = like someone handing you cash to cover your expenses
| Detail | Info |
|---|---|
| Amount | ~€4,000 - €7,000/year (varies by income & housing situation) |
| Application period | Usually June - September (before the academic year) |
| Who can apply | Any enrolled student with low ISEE Parificato |
| Requirements | ISEE Parificato below threshold + minimum CFU credits (from 2nd year onward) |
| What you get | Cash + possible free room in EDISU dormitory + subsidized canteen |
| How to apply | edisu.piemonte.it |
| Detail | Info |
|---|---|
| Offered by | Italian Ministry of Foreign Affairs |
| Amount | ~€900/month + tuition waiver |
| Who can apply | Indian students before arriving - apply through Italian Embassy in India |
| When to apply | Usually October - November for the following academic year |
| Website | esteri.it/en |
| Without anything | Annual fee = €3,500 |
|---|---|
| With ISEE Parificato filed | Annual fee drops to = ~€200 (No-Tax Area or near it) |
| + EDISU Scholarship granted | You RECEIVE = +€5,000 cash + free dormitory room |
| Net result | You pay only €156 and receive thousands in support |
| What | When | Where |
|---|---|---|
| Get Dichiarazione di Valore (for ISEE Parificato) | Before leaving India | Italian Consulate in India |
| Apply for EDISU scholarship | June - September (do this URGENTLY before arrival) | edisu.piemonte.it |
| File ISEE Parificato at CAF | First 2-3 weeks after arriving | Any CAF office in Novara |
| Submit ISEE to UPO | Before 31 October | UPO Student Portal |
The EDISU scholarship application often opens in summer - if you are arriving in September/October, check the EDISU website NOW and apply before you even land in Italy. Missing this window means waiting a full year.
Give clear information about ISEE PARIFICATO STEP BY STEP AND CAN I APPLY BOTH SCHOLARSHIP AND ISEE PARIFICATO IN CAF OFFICE WHAT IS THE PROCESS AND I SHOULD REALLLY ISEE PAROFICATO EVERY YEAR LIKE SCHOLARSHIP
ISEE parificato how to apply step by step CAF documents required Indian student Italy 2025 2026
| Document | Details |
|---|---|
| Income Tax Returns (ITR) | Parents' ITR for the relevant year |
| Form 16 / Salary Slips | If parents are salaried employees |
| Bank Statements | Last 6-12 months of all accounts |
| Property documents | Any land, house, flat owned by family |
| Business income proof | If parents run a business |
| Pension documents | If applicable |
| Any other assets | Investments, fixed deposits, vehicles |
Original document
↓
State Home Department attestation
(State government stamps the document)
↓
MEA Apostille
(Ministry of External Affairs, New Delhi)
(This is the internationally recognized stamp)
↓
Document is now legally valid abroad
| Document | Needed For |
|---|---|
| Passport (original + photocopy) | Identity |
| Codice Fiscale | Identity |
| Permesso di Soggiorno Ricevuta | Legal stay proof |
| All apostilled + translated Indian income documents | ISEE calculation |
| Proof of Italian address (rental contract) | Filing requirement |
| University enrollment certificate | Student status |
CAF Office Visit
↓
CAF files your DSU → INPS generates ISEE Parificato certificate
↓
This ONE certificate does TWO things simultaneously:
├── → Submitted to UPO → reduces your tuition fee
└── → Submitted to EDISU → used as basis for scholarship application
Important: The EDISU scholarship has its own separate application portal at edisu.piemonte.it - the CAF does not apply for the scholarship on your behalf. But CAF gives you the ISEE certificate you need to complete that application.
ISEE Parificato from CAF
↓
You go to edisu.piemonte.it
↓
Fill scholarship application form
↓
Upload ISEE Parificato certificate
↓
EDISU evaluates your application
(by income + by academic merit from Year 2 onward)
↓
Scholarship granted → cash transferred to your bank account
| ISEE Parificato | EDISU Scholarship | |
|---|---|---|
| Must renew every year? | YES | YES |
| Why? | ISEE reflects current year's income, which changes | Income + merit eligibility must be re-verified |
| Where to renew? | CAF office again | EDISU portal again |
| New documents needed? | Yes - fresh ITR, bank statements for new income year | Yes - new ISEE Parificato + CFU credits proof |
| Deadline | 31 October | Usually June - September (before you even arrive in Year 2) |
| Is it automatic? | No - you must go back to CAF each year | No - you must re-apply each year |
Generate a timeline PDF showing all deadlines (ISEE, EDISU, enrollment, visa steps)
mkdir -p /home/daytona/workspace/italy-student-timeline && ls /home/daytona/work…
~/italy-student-timeline/generate_timeline.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import KeepTogether
OUTPUT = "/home/daytona/workspace/italy-student-timeline/Italy_Student_Timeline.pdf"
# ── Colour palette ──────────────────────────────────────────────
C_NAVY = colors.HexColor("#1B3A6B")
C_ORANGE = colors.HexColor("#E85D04")
C_GREEN = colors.HexColor("#2D6A4F")
C_PURPLE = colors.HexColor("#6A0572")
C_TEAL = colors.HexColor("#0077B6")
C_RED = colors.HexColor("#C1121F")
C_GOLD = colors.HexColor("#E9C46A")
C_LIGHT = colors.HexColor("#F0F4F8")
C_WHITE = colors.white
C_BLACK = colors.HexColor("#1A1A1A")
C_MUTED = colors.HexColor("#555555")
PAGE_W, PAGE_H = A4
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=1.5*cm, bottomMargin=1.5*cm,
)
styles = getSampleStyleSheet()
def ps(name, **kw):
return ParagraphStyle(name, **kw)
TITLE_STYLE = ps("Title",
fontSize=20, fontName="Helvetica-Bold",
textColor=C_WHITE, alignment=TA_CENTER,
spaceAfter=2, leading=24)
SUB_STYLE = ps("Sub",
fontSize=10, fontName="Helvetica",
textColor=C_GOLD, alignment=TA_CENTER,
spaceAfter=4, leading=13)
PHASE_STYLE = ps("Phase",
fontSize=11, fontName="Helvetica-Bold",
textColor=C_WHITE, alignment=TA_LEFT,
leading=14)
ITEM_HEAD = ps("ItemHead",
fontSize=9, fontName="Helvetica-Bold",
textColor=C_BLACK, leading=12)
ITEM_BODY = ps("ItemBody",
fontSize=8, fontName="Helvetica",
textColor=C_MUTED, leading=11)
DEADLINE_STYLE = ps("Deadline",
fontSize=8, fontName="Helvetica-Bold",
textColor=C_RED, leading=11, alignment=TA_RIGHT)
FOOTER_STYLE = ps("Footer",
fontSize=7, fontName="Helvetica-Oblique",
textColor=C_MUTED, alignment=TA_CENTER, leading=9)
NOTE_STYLE = ps("Note",
fontSize=8, fontName="Helvetica",
textColor=C_BLACK, leading=11)
WARN_STYLE = ps("Warn",
fontSize=8, fontName="Helvetica-Bold",
textColor=C_RED, leading=11)
# ── Timeline data ────────────────────────────────────────────────
# Each phase: (phase_label, color, [(month, title, details, deadline_flag)])
phases = [
(
"PHASE 1 — IN INDIA | Nov 2025 – Jul 2026",
C_NAVY,
[
("Nov – Dec 2025",
"University Application",
"Apply on university portal (UPO Novara). Submit academic transcripts, SOP, language certificate (IELTS/TOEFL). Pay application fee if required.",
False),
("Nov 2025 – Mar 2026",
"Universitaly Pre-Enrollment",
"Register on universitaly.it portal. Complete pre-enrollment for your chosen course. Upload Dichiarazione di Valore (DoV) if required by UPO.",
False),
("Nov 2025 onward",
"Start Document Apostille Chain",
"Collect ITR (2023/24), Form 16, bank statements, property documents. Get State Home Dept attestation → MEA Apostille. Get Italian-certified translation. Allow 4–8 weeks total.",
False),
("Mar – Jun 2026",
"Dichiarazione di Valore (DoV) from Italian Consulate",
"Visit Italian Consulate (Mumbai/Delhi/Kolkata/Chennai). Submit family income + asset documents. DoV is official Italian certification of your Indian income. Required for ISEE Parificato.",
False),
("Jun – Aug 2026",
"Apply for Type D Student Visa",
"Book VFS Global appointment (3–4 months before arrival). Mandatory biometric fingerprinting + video interview (Mumbai consulate). Processing time: up to 90 days. Submit: admission letter, DoV, accommodation proof, financial proof (€6,000+/yr), health insurance.",
True),
("Jun – Sep 2026",
"⚠ EDISU Scholarship Application Opens",
"Apply BEFORE arriving in Italy at edisu.piemonte.it. This is the Piedmont regional scholarship (€4,000–€7,000/yr + housing + meals). Application window typically June–September. Missing this = wait a full year. Upload ISEE Parificato once available.",
True),
]
),
(
"PHASE 2 — ARRIVAL IN ITALY | Days 1–8 (CRITICAL WINDOW)",
C_RED,
[
("Day 1",
"Arrive in Italy — Entry Stamp",
"Non-Schengen entry stamp = automatic presence declaration. Collect rental contract / dormitory letter. This is needed for every subsequent step.",
False),
("Day 1–2",
"Get Codice Fiscale",
"Go to nearest Agenzia delle Entrate. Bring: passport + photocopy. Issued same day, FREE. This unlocks everything else: SIM card, bank, enrollment, healthcare.",
False),
("⚠ Within 8 DAYS of arrival",
"Permesso di Soggiorno — STRICT LEGAL DEADLINE",
"Buy 'Kit Giallo' at Post Office. Fill form + attach €16 marca da bollo. Go to Post Office 'Sportello Amico'. Bring: passport, Type D visa, 4 passport photos, accommodation proof, enrollment confirmation. Receive RICEVUTA (receipt) immediately. Actual permit card arrives in 3–6 months.",
True),
]
),
(
"PHASE 3 — UNIVERSITY & HEALTH REGISTRATION | Weeks 1–3",
C_GREEN,
[
("Week 1–2",
"University Enrollment (Immatricolazione) at UPO",
"Visit Segreteria Studenti at UPO Novara. Documents: passport, Type D visa, Codice Fiscale, Ricevuta, academic certificates + DoV, 2 passport photos. Pay 1st installment: €156 (€140 regional tax + €16 marca da bollo) via PagoPA. Receive Student ID card. Academic career activates only after payment.",
False),
("Week 1–2 (URGENT)",
"Visit CAF Office — File ISEE Parificato",
"Book appointment at CAF in Novara (CAF-ACLI, CAF-CISL, CAF-UIL, or CAF-CGIL). Bring: passport, Codice Fiscale, Ricevuta, ALL apostilled+translated Indian income documents, rental contract, university enrollment certificate. CAF files DSU → INPS generates ISEE certificate in 7–15 days. Service is FREE. Ask CAF to also prepare DSU for university benefits (scholarship link).",
False),
("Week 2–3",
"SSN Health Registration at ASL",
"Find ASL covering your residential address (not the university address). Pay €700 contribution via F24 form at a bank (ask UPO for correct regional tax code). Bring: passport, Codice Fiscale, Ricevuta, enrollment certificate, address proof, F24 receipt, 2 passport photos. Choose Medico di Base (GP). Receive Tessera Sanitaria — plastic card arrives by post in 4–6 weeks.",
False),
("Within 20 days of settling",
"Residenza Anagrafica at Comune (Town Hall)",
"Go to Comune Novara — Ufficio Anagrafe. Register your Italian address. Bring: passport, Ricevuta, rental contract or host's Dichiarazione di Ospitalità. Municipality may send officer to verify address. Gives official Italian residency status.",
False),
]
),
(
"PHASE 4 — ONGOING DEADLINES | Every Academic Year",
C_PURPLE,
[
("Sep (BEFORE classes start)",
"⚠ EDISU Scholarship Application Deadline",
"Apply / re-apply every year at edisu.piemonte.it. From Year 2 onward: also need minimum CFU credits (exam credits). Upload new ISEE Parificato. Missing this window = no scholarship for that year.",
True),
("⚠ 31 October — EVERY YEAR",
"ISEE Parificato Submission Deadline to UPO",
"Download ISEE certificate from INPS portal. Upload to UPO Student Portal before 31 October. After this date: €50 fine + €2.50/day (up to €100 max) + risk of maximum fee bracket. ISEE must be issued in current calendar year — old certificates not accepted.",
True),
("Dec – Jan",
"2nd Tuition Installment (COA) Due",
"Amount depends on ISEE Parificato bracket. With No-Tax Area ISEE (below ~€24,000): €0. Without ISEE filed: up to €2,800–€3,500 total annual fee. Late penalty: €65 (doubles to €130 if >60 days late).",
False),
("Mar – Jun",
"Remaining Tuition Installments (3rd–6th) Due",
"Split based on remaining COA balance. Up to 4 additional installments if COA balance exceeds €800. Final installment due 30 June.",
False),
("Jun – Sep (Year 2 onward)",
"Permesso di Soggiorno Renewal",
"Apply to renew permit before expiry. Go to Post Office again with new Kit Giallo. Bring: current Permesso, enrollment certificate, financial proof. Also re-apply for EDISU scholarship at same time.",
False),
("Sep – Oct annually",
"Gather Fresh Indian Income Documents",
"Start collecting new ITR, bank statements for the next ISEE Parificato cycle. Get Apostille again on fresh documents. These must be issued in the CURRENT year — prior year documents rejected.",
False),
]
),
(
"PHASE 5 — PRACTICAL SETUP | Weeks 1–3 (No Hard Deadline)",
C_TEAL,
[
("Week 1",
"Italian SIM Card",
"Any phone shop (TIM, Vodafone, WindTre, Iliad). Bring: passport + Codice Fiscale. €5–€15/month plans available. Needed for OTP verifications on Italian government portals.",
False),
("Week 1–2",
"Open Italian Bank Account",
"Options: BancoPosta (Post Office), UniCredit, BPER, N26 (online). Bring: passport, Codice Fiscale, Ricevuta, enrollment certificate. Needed to receive EDISU scholarship payments and pay tuition via PagoPA.",
False),
("After ISEE issued",
"ISEE / ISEEU at CAF for Canteen & Transport Benefits",
"Some benefits (subsidized canteen, student transport card, reduced museum entry) also require ISEE on file. Ask CAF to authorize benefits when filing ISEE Parificato.",
False),
]
),
]
# ── Helper: phase header row ─────────────────────────────────────
def phase_header(label, color):
return Table(
[[Paragraph(label, PHASE_STYLE)]],
colWidths=[PAGE_W - 3*cm],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("ROUNDEDCORNERS", [4]),
])
)
# ── Helper: single timeline item ────────────────────────────────
def timeline_item(month, title, details, is_critical, phase_color):
bg = colors.HexColor("#FFF3F3") if is_critical else C_LIGHT
badge_color = C_RED if is_critical else phase_color
month_cell = Table(
[[Paragraph(month, ps("mc",
fontSize=8, fontName="Helvetica-Bold",
textColor=C_WHITE, alignment=TA_CENTER, leading=10)
)],
[Paragraph("DEADLINE" if is_critical else "", ps("dc",
fontSize=6, fontName="Helvetica-Bold",
textColor=C_GOLD if is_critical else badge_color,
alignment=TA_CENTER, leading=8)
)]],
colWidths=[2.8*cm],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), badge_color),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
])
)
content_cell = Table(
[
[Paragraph(title, ITEM_HEAD)],
[Paragraph(details, ITEM_BODY)],
],
colWidths=[PAGE_W - 3*cm - 2.8*cm - 0.5*cm],
style=TableStyle([
("TOPPADDING", (0,0), (-1,-1), 2),
("BOTTOMPADDING",(0,0), (-1,-1), 2),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 4),
])
)
row = Table(
[[month_cell, content_cell]],
colWidths=[2.8*cm, PAGE_W - 3*cm - 2.8*cm - 0.3*cm],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING",(0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
("VALIGN", (0,0), (-1,-1), "TOP"),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
])
)
return row
# ── Build document ───────────────────────────────────────────────
story = []
# ── Title block ─────────────────────────────────────────────────
title_table = Table(
[
[Paragraph("INDIAN STUDENT — ITALY MASTER'S DEGREE", TITLE_STYLE)],
[Paragraph("Complete Deadline Timeline: Visa → ISEE Parificato → EDISU Scholarship → UPO Enrollment", SUB_STYLE)],
[Paragraph("University of Eastern Piedmont (UPO) · Novara Campus · Academic Year 2026/2027", SUB_STYLE)],
],
colWidths=[PAGE_W - 3*cm],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
])
)
story.append(title_table)
story.append(Spacer(1, 0.3*cm))
# ── Legend ──────────────────────────────────────────────────────
legend_data = [[
Paragraph(" 🔴 RED = Strict Deadline / Critical Action", ps("leg", fontSize=8, fontName="Helvetica-Bold", textColor=C_RED, leading=11)),
Paragraph(" 🔵 Colored badge = Phase-specific step", ps("leg2", fontSize=8, fontName="Helvetica", textColor=C_MUTED, leading=11)),
Paragraph(" ✅ All fees via PagoPA (Italian payment platform)", ps("leg3", fontSize=8, fontName="Helvetica", textColor=C_MUTED, leading=11)),
]]
legend_tbl = Table(legend_data, colWidths=[(PAGE_W-3*cm)/3]*3,
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FFFDE7")),
("BOX", (0,0), (-1,-1), 0.5, C_GOLD),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
])
)
story.append(legend_tbl)
story.append(Spacer(1, 0.4*cm))
# ── Phase blocks ────────────────────────────────────────────────
for phase_label, phase_color, items in phases:
block = [phase_header(phase_label, phase_color), Spacer(1, 0.1*cm)]
for month, title, details, is_critical in items:
block.append(timeline_item(month, title, details, is_critical, phase_color))
block.append(Spacer(1, 0.15*cm))
block.append(Spacer(1, 0.3*cm))
story.append(KeepTogether(block[:4])) # try to keep phase header with first items
for item in block[4:]:
story.append(item)
# ── Key Contacts box ────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=1, color=C_NAVY))
story.append(Spacer(1, 0.2*cm))
contacts_data = [
[Paragraph("<b>Key Contacts — UPO Novara</b>", ps("ch", fontSize=9, fontName="Helvetica-Bold", textColor=C_NAVY, leading=12)), "", ""],
[
Paragraph("<b>International Office</b><br/>international.students@uniupo.it", NOTE_STYLE),
Paragraph("<b>EDISU Piemonte (Scholarship)</b><br/>edisu.piemonte.it", NOTE_STYLE),
Paragraph("<b>CAF (ISEE Parificato)</b><br/>inps.it → find local CAF<br/>Free service", NOTE_STYLE),
],
[
Paragraph("<b>Agenzia delle Entrate</b><br/>Codice Fiscale (Day 1)", NOTE_STYLE),
Paragraph("<b>Questura / Post Office</b><br/>Permesso di Soggiorno<br/>Kit Giallo form", NOTE_STYLE),
Paragraph("<b>ASL Novara</b><br/>Health registration<br/>€700 via F24", NOTE_STYLE),
],
]
contacts_tbl = Table(contacts_data,
colWidths=[(PAGE_W-3*cm)/3]*3,
style=TableStyle([
("BACKGROUND", (0,0), (2,0), colors.HexColor("#E8F0FE")),
("SPAN", (0,0), (2,0)),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("BOX", (0,0), (-1,-1), 0.5, C_NAVY),
("INNERGRID", (0,1), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
("VALIGN", (0,0), (-1,-1), "TOP"),
])
)
story.append(contacts_tbl)
story.append(Spacer(1, 0.3*cm))
# ── Annual renewal reminder box ─────────────────────────────────
renewal_data = [[
Paragraph(
"<b>⚠ ANNUAL RENEWAL REMINDER</b> — Both ISEE Parificato AND EDISU Scholarship must be renewed EVERY academic year.<br/>"
"ISEE Parificato: visit CAF again with fresh documents (current year ITR + bank statements + new Apostille). "
"EDISU Scholarship: re-apply on edisu.piemonte.it every June–September. "
"From Year 2 onward: EDISU also requires minimum CFU (exam credits) earned.",
WARN_STYLE
)
]]
renewal_tbl = Table(renewal_data, colWidths=[PAGE_W-3*cm],
style=TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FFF3F3")),
("BOX", (0,0), (-1,-1), 1, C_RED),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
])
)
story.append(renewal_tbl)
story.append(Spacer(1, 0.3*cm))
# ── Footer ──────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=C_MUTED))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
"Generated July 2026 · University of Eastern Piedmont (UPO) Novara · For Indian (Non-EU) Master's Students · "
"Always verify deadlines directly with UPO at uniupo.it and EDISU at edisu.piemonte.it",
FOOTER_STYLE
))
# ── Render ──────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/italy-student-timeline && python generate_timeline.py
ls -lh /home/daytona/workspace/italy-student-timeline/Italy_Student_Timeline.pdf
Italy Student Timeline
PDF Document · PDF
| Phase | Color | Coverage |
|---|---|---|
| Phase 1 - In India | Navy | Nov 2025 - Jul 2026: Applications, Apostille, Visa, DoV, EDISU pre-application |
| Phase 2 - Arrival | Red | Days 1-8: Codice Fiscale + Permesso di Soggiorno (8-day deadline) |
| Phase 3 - Registration | Green | Weeks 1-3: UPO enrollment, CAF/ISEE Parificato, ASL health, Comune residency |
| Phase 4 - Annual Deadlines | Purple | Every year: EDISU (Sep), ISEE to UPO (31 Oct), Tuition installments |
| Phase 5 - Practical Setup | Teal | SIM card, bank account, transport benefits |