How to issue a Transfer Certificate, end to end. A 12-minute guide for office assistants at CBSE, ICSE and State Board schools — including the bulk session-end flow.
A Transfer Certificate (TC) is the most-requested school document after the report card. Every parent leaving the school needs it within days, the receiving school refuses admission without it, and the CBSE / ICSE / State Board affiliation inspector will check the school's TC register at renewal time. This guide walks the office assistant through issuing a TC end-to-end in Inkwelly — from initiating the transfer with structured reasons and clearance checks, to the one-click Generate-and-Issue flow, to handling the bulk `Class 12` exit, to the rare-but-critical reversal when the parent comes back saying it was a mistake.

Before you start — what to have ready
Before the office assistant opens the Transfer Hub, three things should already be set up at the school. They are one-time setup tasks (per academic session for some, per school for others) and not part of the per-student TC issuance flow.
The principal-signed list of leaving students. A typical Indian school office gets a printed-and-signed list from the principal in late March, naming every student leaving by Class 10 board exit, Class 12 graduation, mid-session withdrawal, or inter-state transfer. This guide assumes that list is on the desk.
Transfer Settings configured. Open Students → Transfers → Settings once and confirm the four clearance gates the school cares about: fees outstanding (almost always required), library books (required for schools with a library module), transport (required for schools with school buses), hostel (required for residential schools). The default reversal window is 30 days from effective date — leave it as-is unless your school has a specific board requirement. Approval-required mode is off by default; turn it on if your principal wants to sign off on every transfer.
TC Configuration set. Open Transfers → TC Configs and confirm a default config is set. Most CBSE schools use the shipped CBSE template with prefix KSM/TC/{YYYY-YY}/{SEQ:5} (where KSM is the school code and 2025-26 is the session). State Board schools typically use a custom prefix matching their affiliation guidelines. The English+Hindi side-by-side render is supported — enable it on the config if your school is Hindi-medium or bilingual.
With those three in place, the per-student TC issuance becomes a 90-second flow.
Step 1 — Initiate the transfer
Navigate to Students → Transfers → Initiate Transfer. The form opens with a student picker at the top. Search by admission number or name — the picker shows the student's photo, current class, and admission number for confirmation.
Pick the exit kind. Three kinds are first-class:
- TRANSFER — student is leaving with a TC for another school. The most common case in Indian schools — family relocation, change of board, switching to a closer school. Captures destination school name, board, UDISE code, address.
- WITHDRAWAL — student is leaving without continuing studies. Health reasons, family decisions, dropping out. No destination capture; reason matters more.
- MIGRATION — student is exiting the board entirely after
Class 10orClass 12. Typical post-board-exam migration to junior college, university, or a different educational track. Reports group separately for board reporting.
Pick the structured reason. Inkwelly ships a fixed dropdown of reasons — RELOCATION, FINANCIAL, ACADEMIC, MEDICAL, DISCIPLINARY, FAMILY, BETTER_OPPORTUNITY, TRANSFERRED_TO_ANOTHER_SCHOOL, DROPPED_OUT, DECEASED, OTHER. The structured value drives separate reports for the principal and the CBSE affiliation renewal inspector.
Pick the effective date. This is the student's last working day at this school — typically March 31st for end-of-session exits, today's date for mid-session exits. The effective date drives the leaving date on the TC, the cut-off for the student's attendance and marks reports, and the start of the reversal window.
Capture destination (TRANSFER only). For external schools, type the receiving school's name, board affiliation (CBSE / ICSE / State Board / IGCSE / IB / NIOS), UDISE code if you have it, and city + state. For inter-school within your trust, pick the destination Inkwelly school from the dropdown — admission-number continuity is automatic.
Click Submit. If your school has approval-required mode on, the request enters PENDING_APPROVAL and the principal sees it in their queue. Otherwise, Inkwelly runs the clearance probes and transitions the record to COMPLETED if every required gate passes.
Walkthrough — issuing a single TC




Step 2 — Clear the four gates
Before Inkwelly transitions the transfer to COMPLETED, it probes the four configured clearance gates against the student's actual records — not a manual checklist:
Fees outstanding. Reads the Student Fee module for any unpaid fees, late fees, fines or carried-forward dues. If anything is outstanding, the gate fails with the exact amount displayed. Either ask the parent to settle (fees module accepts cash, cheque, UPI, Razorpay, PayU, Cashfree), or, if the parent has agreed to settle separately and the principal has authorised, click Override with a logged reason — the override appears in the audit trail.
Library books. Counts library transactions in ACTIVE status (issued but not returned) for the student. If anything is outstanding, the office assistant calls the parent to bring back the books before the TC is issued.
Transport assignment. Counts active transport_student_assignments. If the student is on a bus route, the gate fails until the assignment is closed in the Transport module.
Hostel allotment. For residential schools, counts active hostel allotments. If the student has a hostel room assigned, close the allotment in the Hostel module first.
Every override writes to the audit log with actor, timestamp, IP, and reason. Boards reviewing the school during affiliation renewal can pull the override report and see the reasons documented — protects the school from compliance gaps.
Step 3 — Generate & Issue the Transfer Certificate
With the transfer in COMPLETED status, open the record's detail page and click Generate TC in the action bar. A small dialog asks for two choices:
TC Configuration. The dropdown lists every active TC config for your school — typically Default CBSE TC Config for CBSE schools, an ICSE variant for ICSE schools, custom configs for state-board schools. The default is pre-selected.
Document Kind. The same template engine renders five kinds:
- Transfer Certificate — the standard TC. Most common.
- Character Certificate — for schools issuing a separate character document.
- Bonafide Certificate — student's bonafide proof for embassy / scholarship applications.
- Study Certificate — confirms the student studied at the school for a particular period.
- Migration Certificate — board exit document, typically after
Class 10orClass 12.
Click Generate & Issue TC. In a single click, Inkwelly:
- Allocates the next certificate number atomically from a per-(school, session, prefix) sequence row inside a row-level lock. No two TCs ever share a number, even with concurrent clicks.
- Renders the bilingual PDF (English+Hindi side-by-side if your config has that on) using your school's letterhead, principal's signature placeholder, and a frozen snapshot of the student profile, school identity, and academic record at the moment of issue.
- Stamps a unique QR verification token on the document. Any receiving school can scan the QR to confirm authenticity.
- Uploads the PDF to secure cloud storage and stores it in the Media Center for permanent archival.
- Flips the certificate status to ISSUED and writes the audit chain.
The office assistant gets a download link and a shareable QR. If the school still uses pre-printed TC stationery, switch the config's template type to PRE_PRINTED — Inkwelly will print only the values onto the pre-printed form, leaving the school letterhead, seal area and signature block as the printed background.
Step 4 — The bulk session-end flow
For session-end, doing 78 students one-by-one is the wrong workflow. Open Transfers → Bulk Transfer for a wizard built for cohort exits.
Phase 1 — Validate. Tick the students you're transferring (master checkbox at the top selects all visible). Pick the shared parameters that apply to every student in the batch:
- Exit kind (typically MIGRATION for
Class 12board exits) - Reason (typically OTHER + remark
'Class 12 board exit') - Effective date (typically March 31st of the current session)
- Destination type (NOT_APPLICABLE for migrations; INTRA_ORG_SCHOOL or EXTERNAL_SCHOOL for cohort moves to specific destinations)
- Auto-generate and issue TC — tick this checkbox so every successful transfer also gets a TC issued automatically
Click Validate. Inkwelly probes every student against the configured clearance gates and returns a per-student verdict — ok or blocked with a reason. The two students with pending library books show up as blocked. Send them back with the librarian to return their books, then re-validate — now all 78 are cleared.
Phase 2 — Execute. Click Execute. With one click, every passing student is transferred and their TC is generated and issued in parallel. Each TC gets its own atomically-allocated number; the generator runs in concurrent worker threads bounded by the school's bulkConcurrency setting (default 4, max 32). The result envelope reports succeeded: 78, failed: 0 with each student's TC number visible in the result table. Download the bulk ZIP archive of all 78 PDFs and either print on stationery or send each parent the digital PDF on WhatsApp Business.
Step 5 — Restoring a mistakenly transferred student
The most common Transfer support call to a school office is: 'Sir, the transfer was a mistake — can we restore the child?' A Class 6 parent calls back two days after receiving the TC saying the family job in Bangalore fell through; they're staying in Indore. The principal asks the office to undo the action without losing the child's history.
Open the transfer record. Search by student name in the Transfer Hub or open from the student's profile.
Click 'Reverse Transfer'. A confirmation dialog asks for a reversal reason — type something specific like 'Family decision changed; staying in original city'. The reversal reason is part of the audit trail.
Confirm. In a single transaction, Inkwelly:
- Restores the student's academic record to ACTIVE.
- Clears the leaving date.
- Clears the exit reason on the student profile.
- Reactivates parent portal access.
- Revokes the issued TC — status flips to REVOKED and the QR code immediately starts returning a
REVOKEDvalidity tag to anyone who scans the printed certificate. The receiving school cannot accidentally onboard the student off a revoked document. - Writes a structured RESTORATION audit entry with the reason.
The student shows up in school the next morning and is on the class roster as if nothing happened. Their marks, attendance, fees and every other record stay intact — only their status flipped back. Total time: 90 seconds.
Reversal window note. The default 30-day window from the effective date applies to standard transfers. Legacy-imported records (from your old ERP) bypass the window entirely — you can reverse a 2022 transfer in 2026 if the school has the authority. Configure the per-school window from Transfer Settings.
Common gotchas — things office assistants miss
- Wrong session in URL — the Transfer Hub auto-filters by URL slug. If you're processing
2025-26exits but the URL still says/2024-25/, switch sessions first or you'll see last year's records. - TC number gap from a discarded draft — if your school requires gap-free serial issuance for board compliance, set
tcNumberAllocateOn = ISSUEDin TC Configs so failed-and-discarded drafts don't consume numbers. - Trying to reverse a transfer with downstream data — for INTRA_ORG transfers, if the destination student has marks, attendance, or fee payments at the new school, reversal is blocked with a clear error. Resolve the downstream data first or contact support.
- Approval workflow stuck in PENDING_APPROVAL — if the principal hasn't approved, the office can't generate a TC. Either approve, reject, or send back for changes — don't leave it pending forever.
- Bulk run aborted on first failure — if you set abortOnError=true on the bulk wizard, one failed student halts the entire batch. For most cohort exits, leave it off (partial-success is the safer default).
- Public verify link not working — the QR encodes a unique token that resolves at the public verify URL. If the QR returns 'Not Found', the token may have been revoked because of a reversal. Issue a fresh duplicate TC if the original was lost.
Want a walkthrough on your school's data?
We'll set up your Transfer Settings, configure your CBSE / ICSE / State Board template, and run an end-of-session bulk live during the demo. Bring last year's TC register and your old ERP's transferred-student list — we'll show the legacy import too.
What to do next
With the TC issuance flow understood, here are the next things office assistants typically learn in their first week with Inkwelly:
- Student Promotion — the year-end lift to next academic session, very different from a transfer. Used for moving the entire school across the year boundary.
- Student Information module — the parent module that contains transfers, promotions, profiles, documents, and every other student-lifecycle screen.
- Student Fee module — fees clearance for transfers reads from here. Worth understanding the fee ledger before processing exits.
- CBSE / ICSE / State Board templates — most schools start with the shipped templates; advanced schools build custom layouts in the TC Designer. Designer guide coming in a separate LEARN page.
If any step in this guide felt confusing on your school's data, the support team is on WhatsApp during business hours — share a screenshot of where you're stuck and we'll respond within an hour.
Frequently asked
7 questionsHow long does it take to issue a single Transfer Certificate?
Once Transfer Settings and TC Configs are set up (a one-time five-minute task per session), issuing a single TC is a 90-second flow: open Initiate Transfer, pick student and reason, submit, click Generate & Issue TC. The PDF, number, QR and audit log are all produced in one click. The actual click takes 2-3 seconds; the rest is just typing the reason and effective date.
How long does the bulk session-end flow take for a Class 12 cohort of 80 students?
5–10 minutes total. Phase 1 validation runs in 2–3 seconds for 80 students — it returns the per-student verdicts almost instantly. Phase 2 execution depends on the school's bulkConcurrency setting (default 4 parallel workers). With auto-issue-TC enabled, each student takes around 5 seconds for transfer + TC generation + PDF render + storage. 80 students at 4-way concurrency takes about 100 seconds. Add the time to download the bulk ZIP and send WhatsApp Business messages to parents — most schools wrap it up in under 10 minutes.
Do I need to print the TC on pre-printed school stationery?
No — Inkwelly supports both DIGITAL and PRE_PRINTED template types. DIGITAL renders the entire certificate including school letterhead, seal placeholder and signature block; you print on plain A4. PRE_PRINTED prints only the values onto your existing pre-printed TC books, with calibration offsets in mm to handle minor printer-tray drift. Most CBSE schools moving to digital workflows use DIGITAL; older schools with TC books left over use PRE_PRINTED. Both can coexist on the same school — different configs for different use cases.
Can a parent verify a Transfer Certificate independently?
Yes — every issued TC has a QR code printed on it. The parent (or the receiving school's office) scans the QR with any phone camera, which opens a public verification URL with no login required. The default response shows TC number, school name, student name, class, board, issue date, and a validity tag (VALID, REVOKED, REPLACED, BLOCKED). Optional captcha-gated full details show parent names, conduct grade, attendance and fee status. The verify endpoint is rate-limited to prevent enumeration attacks.
What happens to the issued TC if I reverse the transfer?
The TC's status flips to REVOKED in the same transaction as the transfer reversal. The QR code on any printed copies starts returning a REVOKED status to anyone who scans — so the receiving school cannot accidentally onboard the student off a revoked document. The TC row itself is preserved (never deleted) for audit purposes. If the parent later changes their mind again and wants to leave for real, you can issue a fresh TC with a new number; the old REVOKED one stays in history.
How do I issue a duplicate TC for an alumnus who lost the original?
Find the original TC in the Transfer Certificates list — use the session filter to switch to the alumnus's leaving year. Open the record, click 'Issue Duplicate', enter a duplicate reason like `'Original lost in floods, Aug 2026'`. Inkwelly creates a new TC with the same student/school/academic snapshot, a fresh atomically-allocated certificate number, a duplicateNumber counter, a fresh QR token, and a back-link to the original. Both the original and the duplicate stay valid — verification responses correctly identify which is the original and which is a duplicate copy.
What if my school requires the principal to sign every TC manually?
Two options. (1) Use the DIGITAL template type with a signature-block placeholder — print the rendered PDF and have the principal sign the printed copy. (2) Configure approval-required mode in Transfer Settings so every transfer waits in PENDING_APPROVAL until the principal explicitly approves; the principal sees a pending-approvals screen with one-click approve/reject/request-changes. Most schools combine both — approval-required for the workflow, plus physical signature on the printed PDF.
You might also like
2 readsSee Inkwelly on your school
30-minute demo. We open your current ERP with you and load your data into Inkwelly on the call. Dated go-live plan by the end of it.