sg-gov-transactions-payments · git:20261027.6f21efa · 2026-10-27 · sha256 f853da424a72e78f
sg-gov-transactions-payments git:20261027.6f21efaA
Immutable. This exact content never changes and is served at /api/v1/blob/f853da424a72e78f.
--- name: sg-gov-transactions-payments description: >- Build or audit the transaction and payment flows of a Singapore government digital service against the DSS Transactions & Payments controls (TX-1..TX-15): fully digital end-to-end transactions, upfront prerequisites and fees, multi-step forms with progress indicators, save-draft and resume, pre-fill with Myinfo/EDH via Singpass/Corppass, payment and refund information, managing stored payment details, success/failure messages, failure reasons and appeal channels, receipts, and status notifications and tracking. Use when building a government e-service form or wizard that ends in a submission or payment; integrating a payment gateway (PayNow, cards, PaySG); designing receipts, acknowledgement emails, or status pages; or reviewing a transactional service for DSS compliance. Triggers: multi-step form or wizard for an agency service, "save draft", progress indicator, payment or refund flow, stored card management, transaction receipt or acknowledgement, application status tracking, TX controls, DSS transactions. --- # sg-gov-transactions-payments: DSS TX controls for SG government services You are building or auditing **a transaction** (an exchange of information, goods, services, or money, or a change to Government Data) in a Singapore government digital service, against the **Transactions & Payments family (TX-1..TX-15)** of the Digital Service Standards (DSS) under the ICT&SS Policy Reform. The family covers the user journey: what users know before they start, how the form behaves while they fill it in, how payment works, and what happens after they submit. The controls group into three phases: **before** (can I do this, what will it cost, what do I need), **during** (don't lose my work, don't make me retype what the government knows), and **after** (prove it happened, tell me what's next, let me check without calling). Most audit failures are missing phases rather than broken code. ## Source and currency Control text in this skill and `references/tx-controls.md` is embedded from **info.standards.tech.gov.sg as of 2026-07-23** (TX family page last updated 5 March 2026). The standards iterate actively. For any compliance-critical decision, verify against the live page: - TX: https://info.standards.tech.gov.sg/control-catalog/dss/tx/ Read `references/tx-controls.md` for full control statements, recommendations, and rationales when you need exact wording. ## Implementable vs policy-owned Every TX control has a developer-buildable surface, but five also have an agency policy angle. Build the implementable part; **flag the policy part as an agency decision, don't invent it**: | Control | You build | The agency decides | |---|---|---| | TX-1 digital-first | The fully digital flow (Singpass signing, digital payment) | Whether a legal regulation requires a physical step | | TX-2 prerequisites | The pre-transaction info page | Eligibility criteria, fees, processing times | | TX-7 payment/refund | Where fee + refund info is displayed | The refund policy itself | | TX-10 failure details | The failure UI with reason/alternatives/appeal channel | Which rejection reasons policy allows disclosing | | TX-12 outcome timeframe | Where the estimate is displayed | The actual processing SLA | ## Procedure Work the transaction journey in order: **before → during → payment → outcome → after**. For **setup**, build each piece. For **audit**, walk the journey as a user and record pass / fail / not-applicable with evidence (the screen, the email, the missing step). ### Stage 1 — Before the user starts (TX-1, TX-2, TX-7) **1a. Fully digital, end to end (TX-1).** No printing, wet signatures, mailing, or counter visits anywhere in the flow unless a legal regulation mandates it (get that regulation named, in writing). Digital signature via **Sign with Singpass** where signing is needed; digital payment (cards, PayNow) where money moves. A single physical step fails the control for the whole journey. **1b. Publish the prerequisites (TX-2).** A start page before the first field: eligibility criteria, required documents **with accepted formats and size limits**, estimated completion time, payment modes, and all fees. A user should be able to decide "not today" before typing anything. **1c. Fees and refund policy up front (TX-7).** Payment amounts and the refund policy appear on the start page *and* again on the payment page, before the user pays, never after. ### Stage 2 — During the form (TX-3, TX-4, TX-5, TX-6) **2a. Logical steps (TX-3).** Break long transactions into steps/sections of related fields (SGDS Stepper pairs well). One 40-field page is a finding; so is a step whose fields have nothing to do with each other. **2b. Progress indicator (TX-4).** Multi-step flows show where the user is and how much remains: named steps, current position, completed states. **2c. Save draft (TX-5).** Long transactions get a visible save-draft affordance, explicit "draft saved" feedback (an accessible status message), and an obvious resume path on return. Autosave is a good supplement but the control asks for a *function the user can see and trust*. A session timeout that destroys 30 minutes of typing is the failure this control exists to prevent; pair the timeout warning with draft preservation. **2d. Pre-fill what the government knows (TX-6).** Behind Singpass, offer Myinfo pre-fill; behind Corppass, Myinfo Business/EDH. Pre-filled fields stay reviewable and (where the source permits) editable; assess accuracy/relevance per field rather than dumping every scope you can get. The **sg-gov-singpass**/**sg-gov-corppass** skills own the actual integration (scopes, consent, FAPI 2.0 wire protocol); this control owns the decision to pre-fill and the form UX around it. Don't re-ask for what you pre-filled. ### Stage 3 — Payment (TX-8, TX-11) **3a. Never hold raw card data; let users manage what is stored (TX-8).** Store payment methods only as **gateway tokens** (keeping you in the lightest PCI DSS scope), and give users an obvious way to **update and remove** stored payment details, with confirmation prompts. A saved card with no delete button is a finding. For the gateway itself, consider the whole-of-government payment service (PaySG, pay.gov.sg) or the agency's approved provider; confirm current onboarding at https://www.developer.tech.gov.sg/products/. **3b. Show the payment record (TX-11).** After payment: receipt/acknowledgement number, date and time, what was paid for, payment method, and amount, on the success screen, downloadable/printable, and in the acknowledgement channel. ### Stage 4 — The outcome (TX-9, TX-10, TX-12) **4a. Unambiguous success or failure (TX-9).** Every transaction ends on an explicit outcome screen with clear copy, iconography, and colour (green success / red failure), never a silent redirect. (Make it accessible: icon + text, not colour alone; see sg-gov-dss-accessibility.) **4b. Failures are actionable (TX-10).** Failed or rejected transactions state the reason (within policy limits), the alternative actions, and the appeal/enquiry channel. "An error occurred" with a dead end fails all three clauses. **4c. Outcome timeframe (TX-12).** If the outcome isn't immediate, show the estimated timeframe before they start, on the success screen, and in the acknowledgement. ### Stage 5 — After submission (TX-13, TX-14, TX-15) **5a. Acknowledgement they can keep (TX-13).** Send (email/SMS/push/in-app) and/or allow download of an acknowledgement containing the key submission details and reference number. **5b. Push status updates (TX-14).** Notify on every status change (received, processing, approved/rejected) via the user's channel. **5c. Self-service tracking (TX-15).** An online status page keyed by reference number (or the logged-in account): clear status labels with descriptions, estimated completion, and any actions required of the user. Users should not need to call the hotline to ask "where is my application". ## Audit checklist Walk the journey; record evidence per row. | ID | Check | |---|---| | TX-1 | No physical step (print/sign/mail/visit) unless a named legal regulation requires it; digital signing and payment offered | | TX-2 | Start page lists eligibility, documents + formats, time estimate, payment modes, fees | | TX-3 | Long transaction split into logical steps of related fields | | TX-4 | Progress indicator shows position and remaining steps | | TX-5 | Visible save-draft + saved feedback + easy resume; timeout doesn't destroy work | | TX-6 | Myinfo/EDH pre-fill offered behind Singpass/Corppass; pre-filled data reviewable; nothing re-asked | | TX-7 | Fees and refund policy visible before start and on the payment page | | TX-8 | Stored payment details tokenised; user can update and remove them with confirmation | | TX-9 | Explicit success/failure screen with clear cues (not colour alone) | | TX-10 | Failure shows reason, alternatives, and appeal/enquiry channel | | TX-11 | Post-payment: receipt number, date, items, method, amount; downloadable | | TX-12 | Estimated outcome timeframe shown pre-start, on success, in acknowledgement | | TX-13 | Acknowledgement sent and/or downloadable with key details | | TX-14 | Notifications on status changes | | TX-15 | Online status tracking with labels, timelines, required actions | Report per control ID with pass / fail / not-applicable, the evidence, and the fix. Where a pass depends on agency policy (refund policy, disclosure limits, SLAs), ask for the policy value rather than inventing it. ## Related skills in this repo - **sg-gov-singpass** / **sg-gov-corppass** — the TX-6 pre-fill integration itself: Myinfo (persons) and Myinfo Business/EDH (entities), consent, scopes, and the FAPI 2.0 flow. This skill decides *to* pre-fill and shapes the form; those skills own the protocol. Use **sg-gov-singpass-legacy**/**sg-gov-corppass-legacy** for pre-FAPI integrations. - **sg-gov-dss-accessibility** — the WCAG-derived DSS controls the same forms must meet: labels, error identification, focus, status messages (a "draft saved" toast is a WR status message), timeout handling. Load both when building any TX flow. - **sg-gov-service-shell** — the TL/BD/PR shell around the transaction: banner, footer, WOGAA, mandatory/optional field indication (BD-7), logged-in identity (BD-8), contact channels (BD-9), availability. TX assumes that shell exists. - **sg-gov-ssp-navigator** — whether a DSS profile applies at all and at which level each TX control sits for this service. - **sg-gov-data-protection** / **sg-gov-secure-coding-as** — where payment records live (residency, encryption, retention) and the CSRF/session/validation hardening of the form handlers. A payments flow needs both; neither is TX scope.