Recording donations

Recording a donation is the single most common operation in Sukrit Nidhi. The workflow is deliberately short — a donation becomes POSTED as soon as you save it — but every save writes a versioned snapshot and an audit row, so you never lose history.

The lifecycle

POSTEDcreated
POSTEDedited: new version
VOIDEDwith reason + step-up

Donations do not have a draft state. You record the money as soon as it has been received. Mistakes are corrected by either editing the posted row (which records a new version) or voiding it and creating a replacement.

Creating a donation

  1. Go to Donations → New.
  2. Enter the transaction date. Back-dating is allowed as long as the date falls outside any active period lock.
  3. Pick the donor. If this is a first-time donor, click + New donor to add them inline.
  4. Choose the category (General, Food, FCRA, etc.) and the payment account (cash box, bank account, UPI wallet).
  5. Pick the payment mode — cash, UPI, bank transfer, cheque, card, or in-kind.
  6. Enter the amount and any reference (UPI txn ID, UTR, cheque number).
  7. Save. The system allocates the next gap-less receipt number and writes a DONATION_CREATED audit event.
If the donor is a repeat contributor, start typing their name in the donor field — the autocomplete finds them in the first two or three characters. Creating a duplicate donor record is rarely what you want.

Receipt numbering

Receipts use a gap-less, per-fiscal-year series of the form RCP/<tenant-slug>/<FY>/000001. The series is allocated inside the same database transaction as the donation insert, so there are no gaps even under concurrent saves.

The series resets to 000001 on the first day of each new fiscal year.

PAN masking

Indian law requires you to record the donor’s PAN for 80G reporting. Sukrit Nidhi stores the PAN in two forms:

  • Raw PAN (fully encrypted at rest) — used only for statutory filings and the 80G receipt PDF.
  • Masked PAN (ABCDE****0G) — what appears in every list, statement, and audit bundle.

The masking happens automatically on save. Anyone below Platform Admin can only ever see the masked form.

Editing a donation

Open the donation and click Edit. The form is pre-filled with the current values. When you save:

  • The donation stays POSTED.
  • A new version row is written capturing the full pre-edit state.
  • An audit event of type DONATION_UPDATED is recorded with both the before and after snapshots.
  • The receipt PDF is regenerated on next download; prior versions are preserved under View versions.

Voiding a donation

Voiding is the only way to undo a posted donation. It requires step-up re-authentication and a free-text reason.

A voided donation is not deleted. The row stays, its status changes to VOIDED, the receipt is invalidated, and a DONATION_VOIDED audit event is written. All statements and the NGO dashboard exclude voided rows from totals.
  1. Open the donation and click Void.
  2. Enter an MFA code to step-up.
  3. Enter a reason (e.g. “posted to wrong donor; corrected in receipt 000142”).
  4. Confirm. The row is now VOIDED and excluded from all reports.

Exporting the donations ledger

From the list view, click Export and pick CSV or Excel. The export includes the receipt number, date, donor, masked PAN, category, mode, reference, amount, status, and FCRA flag. Every export is audit-logged and carries a SHA-256 fingerprint header so you can later prove a given file is the one you produced.