Payyo QRIS is a QRIS merchant payment provider platform for Indonesian sellers. It lets a seller register for free, top up an account balance, display a QRIS code to collect payments from their own customers, and withdraw the resulting balance out to an e-wallet or a bank account.
The product intent is a plain, sturdy money tool: money in, money out, clearly shown. Payyo QRIS is the provider that supplies the QRIS code to the seller. The QRIS code itself is sourced from iPaymu using an owner-supplied iPaymu VA and API key, but that provider origin is an internal implementation fact and must never be disclosed to sellers — the code is presented as Payyo QRIS only.
The audience is practical, mobile-first, price-sensitive Indonesian merchants: warung owners, online sellers, and side-hustle merchants who want to accept QRIS payments without paperwork. The secondary audience is the internal Payyo QRIS Operator/Admin who configures the provider credentials that keep seller QRIS provisioning working.
Payyo QRIS is delivered as a first-party web application with its own application-owned identity, backed by a server-side integration to the iPaymu provider API. Sellers self-enroll for free, verify on return visits, and work in a seller workspace covering balance top-up, QRIS display, and withdrawal. The Payyo QRIS Operator/Admin verifies on return visits and works in a restricted provider configuration workspace.
Actors
Accepted current behavior
Narrow exclusions
Payyo QRIS is a first-party web product. The seller-facing surfaces — Landing, Sign Up, Login, Top Up, QRIS, Withdraw — are owned and rendered by the Payyo QRIS application. The operator-facing Provider Settings surface is likewise first-party but restricted to the operator/admin role.
Identity is application-owned. Because sellers must privately own and resume a durable balance, a QRIS display, and withdrawal history, and because the operator must hold a durable provider credential configuration, Payyo QRIS establishes its own accounts. First use is self-service free registration for sellers; operator/admin access is provisioned before provider credentials can be configured. Returning users verify through a shared Login surface.
The iPaymu integration is server-side and provider-owned. Payyo QRIS calls iPaymu with the owner-supplied VA and API key to obtain the QRIS that is then presented to the seller. iPaymu is never a seller-facing destination, and no iPaymu name, logo, wordmark, or visual hint appears in the seller-facing UI.
Everything described in this document is current. No future-horizon capabilities were accepted.
Not applicable. No reference directive in this project declares content_source authority, so no source content inventory is included.
DAFTAR GRATIS (solid signal-orange slab, 3px ink border, 2px offset ink shadow) → Sign Up. MASUK (outlined ink slab) → Login.PAYYO QRIS, the stacked all-caps Alfa Slab One headline TERIMA QRIS. TARIK DUITNYA. with a 4px ink rule under the first line, and the two slab buttons. Right 5 columns hold a solid denim block bleeding off the right edge with a white square QRIS viewfinder with corner tick marks, a mustard AKTIF status chip, and a tabular SALDO Rp 0 line in Oswald 600. A 4px ink rule runs full width at the hero bottom; a rotated −3° stamp badge GRATIS SELAMANYA sits at the seam. Thick-line vector iconography (QRIS square, wallet, bank building, warung awning, receipt, truck) at 2.5–3px stroke; halftone-dot duotone merchant photographs cropped hard to the grid; optional topographic-line texture at 8% opacity on denim bands.GRATIS stamp badge.PENDING chip and resolves to a forest SELESAI chip when confirmed.AKTIF chip. Error — provider fetch failure shows a plain-language error inside the viewfinder frame without naming the provider. Recovery — the seller retries the fetch; the previously displayed code is not silently replaced by a stale or partial one.SELESAI chip. Error — an invalid destination or an amount exceeding the available balance is reported inline and the balance is left unchanged. Recovery — the seller corrects the destination or amount and resubmits; a pending withdrawal shows a mustard PENDING chip and resolves to SELESAI when settled.FR-01 — Free seller registration (explicit) As a prospective Seller (Merchant), I should be able to register a Payyo QRIS account for free, so that I can start accepting QRIS payments without paperwork or cost.
FR-02 — Returning verification for sellers and operator/admin (required_inference) As a Seller (Merchant) or Payyo QRIS Operator/Admin, I should be able to verify my identity on return, so that I can resume my durable balance, QRIS display, withdrawal history, or provider configuration.
FR-03 — Operator/admin access provisioning (required_inference) As a Payyo QRIS Operator/Admin, I should have my access provisioned before provider credentials can be configured, so that only an authorized operator can set the credentials that seller QRIS provisioning depends on.
FR-04 — Configure owner-supplied iPaymu VA and API key (explicit) As a Payyo QRIS Operator/Admin, I should be able to configure the owner-supplied iPaymu VA and API key, so that Payyo QRIS can provision QRIS codes for sellers.
FR-05 — Provider credentials are a prerequisite for seller QRIS provisioning (required_inference) As a Payyo QRIS Operator/Admin, I should see that the owner-supplied iPaymu VA and API key must be configured before seller QRIS provisioning can operate, so that I know why sellers may be unable to display a QRIS code.
FR-06 — Seller balance top-up (explicit) As a Seller (Merchant), I should be able to top up my Payyo QRIS balance, so that I have funds available in my Payyo QRIS account.
FR-07 — Display QRIS code for payment collection (explicit) As a Seller (Merchant), I should be able to display a QRIS code, so that my customer can scan it and pay me.
AKTIF status chip.FR-08 — QRIS is sourced from iPaymu (explicit) As a Seller (Merchant), I should receive a QRIS code that Payyo QRIS obtains from iPaymu on my behalf, so that I can collect QRIS payments through Payyo QRIS.
FR-09 — iPaymu origin is never disclosed to sellers (explicit) As a Seller (Merchant), I should never be told that the QRIS comes from iPaymu, so that the QRIS is presented to me as Payyo QRIS only.
FR-10 — Seller balance withdrawal to e-wallet or bank (explicit) As a Seller (Merchant), I should be able to withdraw my balance to an e-wallet or a bank, so that I can cash out the funds I have collected.
FR-11 — Durable seller balance and history (required_inference) As a Seller (Merchant), I should have my balance and my top-up and withdrawal history persist across sessions, so that I can trust that money in and money out are recorded.
FR-12 — Durable provider configuration (required_inference) As a Payyo QRIS Operator/Admin, I should have my saved provider configuration persist across sessions, so that seller QRIS provisioning keeps working without re-entry.
Product context. A practical, mobile-first Indonesian merchant — a warung owner, an online seller, or a side-hustle merchant — who wants to accept QRIS payments without paperwork. They are price-sensitive and slightly suspicious of fintech polish; they need to feel that money in equals money out, clearly, with no fine print games.
Primary goal. Accept QRIS payments from their own customers and cash out the collected funds to an e-wallet or a bank.
Distinct accepted responsibilities.
Relevant inputs and decisions. The top-up amount; when to show the QRIS code; the withdrawal destination type (e-wallet or bank), the destination details, and the withdrawal amount. The seller never makes a decision about the QRIS provider — that is not theirs to see or choose.
Interactions with other accepted participants. The seller's customer scans the displayed QRIS code and pays, which is the collection event the seller is waiting on. The Payyo QRIS Operator/Admin is invisible to the seller but is the reason the QRIS is available at all: if the operator has not configured valid provider credentials, the seller's QRIS surface shows a plain-language unavailable state. iPaymu is never an interaction the seller is aware of.
Observable success. The seller's balance reflects collected funds, the QRIS code displays and is scannable, and a withdrawal to the chosen e-wallet or bank settles with the balance reduced accordingly.
What makes this role different. The seller is the money-holding party and the only persona who initiates value movement in both directions — top-up in, withdrawal out — and the only persona who displays a code to a third party. Their entire experience must be free of provider disclosure, which is a constraint no other persona carries.
Product context. The internal operator behind Payyo QRIS. Because Payyo QRIS is the QRIS provider that supplies the iPaymu-backed QRIS to sellers and holds the VA and API key credentials, someone must configure those credentials and keep seller-facing QRIS provisioning working.
Primary goal. Keep seller QRIS provisioning uninterrupted so sellers can display QRIS and transact.
Distinct accepted responsibilities.
Relevant inputs and decisions. The owner-supplied iPaymu VA and API key values, and when to re-save them after a credential change. The operator decides whether the current configuration is valid enough for seller QRIS provisioning to operate.
Interactions with other accepted participants. The operator's work is the precondition for every seller's QRIS display. The operator never interacts with a seller directly; the observable effect of the operator's work is that sellers can display QRIS and transact. iPaymu is the external provider whose credential surface the operator configures.
Observable success. The configuration status reflects saved credentials and seller QRIS provisioning operates without interruption.
What makes this role different. The operator is the only persona who touches provider credentials and the only persona whose success is measured by another persona's uninterrupted service rather than by their own money movement. Their surface is restricted and never reachable by a seller, and unlike the seller they are fully aware that the QRIS originates from iPaymu.
DAFTAR GRATIS and lands on Sign Up.PENDING chip to a forest SELESAI chip when confirmed.AKTIF status chip.PENDING chip to a forest SELESAI chip when settled.MASUK, landing on Login.Muse and headline. Aaron Draplin. Thick-line field badges for a QRIS payment provider that works like a tool, not a bank. The register is trustworthy, plain-spoken, sturdy, local, unglamorous but proud — the opposite of generic blue-on-white fintech.
Colour tokens (light mode).
| Role | Hex | Use |
|---|---|---|
| Background (kraft/field-notes cream) | #F1E7D0 | Page ground |
| Surface (lighter paper) | #FBF6EA | Cards and panels, always with a 2px black border, never a soft shadow |
| Text (ink black) | #16130F | All type and thick rules |
| Primary (deep denim) | #1B2A41 | Nav bar, section bands, primary button fill |
| Accent (signal orange) | #E4572E | Reserved for money movement only: Top Up, Withdraw, the QRIS show-code action, and the balance number |
| Muted (clay) | #6B6255 | Secondary labels and metadata |
| Status — mustard | #D9A521 | Small status chips only (pending) |
| Status — forest | #2F5D3A | Small status chips only (settled) |
No gradients anywhere.
Typography. Headings and wordmark: Alfa Slab One, heavy slab, all caps, tight tracking, at poster scale. Everything else: Oswald in 400/500/600 — labels in all caps with 0.08em letterspacing, body copy at 16–18px with 1.55 line-height. Numbers (balance, amounts, VA) are always set in Oswald 600 tabular, larger than surrounding copy — the number is the headline.
Type scale (1.333 modular). 14 / 16 / 18 / 24 / 32 / 48 / 64 / 96 / 128. Display hero clamp(56px, 12vw, 128px). Section opener clamp(32px, 5vw, 64px). Card title 24px. Body 16px. Micro-label 12px all-caps with 0.1em tracking.
Shape language. Sharp corners everywhere (0px radius) with 2px solid ink borders on every panel and card. Badge and stamp motifs: circular seal badges with concentric rings for status (AKTIF, TERVERIFIKASI, SELESAI), and chunky rectangular stamps rotated −3° for one-off callouts. Thick 4px horizontal rules separate sections like a ruled ledger. Buttons are rectangular slabs with a 3px ink border and a 2px offset ink shadow (no blur) — they look pressed into the page. The QRIS code sits inside a square frame with corner tick marks, like a viewfinder.
Layout. Poster-like stacked sections on a 12-column grid with a visible 1px column rule option on desktop. The landing hero is a full-bleed kraft band with an oversized stacked headline on the left 7 columns and a solid denim block holding the QRIS viewfinder on the right 5. The seller workspace uses a persistent left rail (240px) of ruled nav items with all-caps labels and a thick active-state orange bar. Dashboard content is tabular: label/value rows aligned on a hard left edge with dotted leaders, like a receipt. Sections are separated by full-width denim or orange bands, never by whitespace alone. Mobile (375px) collapses to a single column, headline clamp 56px, cards stack full-width with the same 2px borders.
Imagery. Thick-line vector iconography drawn at 2.5–3px stroke weight: a QRIS square, a wallet, a bank building, a warung awning, a receipt, a truck. Halftone-dot photographs (duotone in denim + kraft) of real Indonesian merchants — a warung counter, a phone held over a QR code, hands counting cash — cropped hard to the grid. No stock-photo smiling people, no 3D renders, no glass. Optional topographic-line texture at 8% opacity on denim bands.
Forbidden. Blue-indigo gradients, glassmorphism, frosted panels, soft drop shadows with blur; any mention, logo, wordmark, or visual hint of iPaymu anywhere in the seller-facing UI; rounded corners above 0px on panels, cards, or buttons; pill shapes; Inter, Roboto, Poppins, system-ui, or any neutral geometric sans as the display voice; a centred hero with subtext and a single blue CTA; grids of identical hover-lift cards with uniform elevation; illustrated mascots, cartoon characters, or 3D isometric renders; photographic stock imagery of generic smiling businesspeople in offices.
The Payyo QRIS Landing hero — a stamped field instrument.
A full-bleed kraft (#F1E7D0) band, no gradient, no blob. The composition is asymmetric and block-built, split 7/5.
Left 7 columns. The wordmark PAYYO QRIS is stamped small at the top inside a black badge. Beneath it, a stacked all-caps Alfa Slab One headline reading TERIMA QRIS. TARIK DUITNYA. at clamp(56px, 12vw, 128px), each line sitting flush-left and filling the column width, with a 4px ink rule under the first line. Beneath the headline, two rectangular slab buttons sit side by side: a solid signal-orange (#E4572E) DAFTAR GRATIS with a 3px ink border and a 2px offset ink shadow, and an outlined ink MASUK.
Right 5 columns. A solid denim (#1B2A41) block that bleeds off the right edge of the viewport, holding a white square QRIS viewfinder with corner tick marks, a mustard status chip AKTIF, and a tabular balance line SALDO Rp 0 in Oswald 600. The code is presented as an instrument readout, never as a floating card with a soft shadow.
Seam and rules. A 4px ink rule runs the full width of the viewport at the bottom of the hero. A thin rotated −3° stamp badge GRATIS SELAMANYA sits at the seam between the two halves.
Hard constraint in the composition. No iPaymu name, logo, or reference appears anywhere in the composition. The QRIS is presented as Payyo QRIS only.
Readability. At 375px, 768px, and 1280px the headline, wordmark, labels, numbers, and both buttons stay entirely inside the viewport and their container, wrapping or scaling via the clamp to fit. Decoration — the denim block, the topographic texture, the halftone imagery — may bleed off the edge; readable text and controls never do.
Interaction Model: Static Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief
translateY(8px) + opacity — no bounce, no stagger theatre — so the kraft band, the stacked headline, and the denim block arrive as one sturdy printed sheet. The AKTIF badge stamp then thunks in once with a 200ms scale(1.06 → 1). The outcome is a composed, still, poster-like first frame in which the QRIS viewfinder reads as a physical instrument and the two slab buttons read as pressable hardware.translateY(8px) + opacity with no bounce. Button hover collapses the 2px offset ink shadow to 0 and translates the button 2px down/right — a physical press. Badge stamps animate once on mount with a 200ms scale(1.06 → 1) thunk. No parallax, no marquee, no gradients drifting.AKTIF chip and the tabular SALDO Rp 0 line, the full-width 4px ink rule at the hero bottom, and the rotated −3° GRATIS SELAMANYA stamp at the seam.NFR-01 — Provider origin confidentiality (explicit) The iPaymu origin of the QRIS must not be disclosed to sellers. No iPaymu name, logo, wordmark, or visual hint may appear in any seller-facing surface, including loading, empty, success, error, and recovery states. Provider errors are rendered as plain-language Payyo QRIS messages. Rationale: explicit hard constraint in the authoritative user evidence.
NFR-02 — Free seller registration (explicit) Seller registration must be free. No payment, fee, or paid tier gates the creation of a seller account. Rationale: explicit hard constraint in the authoritative user evidence.
NFR-03 — Owner-supplied provider credentials (explicit) Payyo QRIS must use the owner-supplied iPaymu VA and API key for QRIS provisioning. These credentials are configured by the Payyo QRIS Operator/Admin and are never exposed to sellers. Rationale: explicit hard constraint in the authoritative user evidence.
NFR-04 — Credential secrecy (required_inference) The iPaymu VA and API key must be stored server-side and never transmitted to or rendered in any seller-facing surface. Provider calls are made server-side. Rationale: indispensable to keep the provider origin undisclosed per NFR-01.
NFR-05 — Durable state (required_inference) Seller balance, top-up history, withdrawal history, and provider configuration must persist across sessions and be bound to the correct account. Rationale: indispensable for the accepted top-up, QRIS, withdrawal, and provider-configuration lifecycles to be usable.
NFR-06 — Access control (required_inference) Top Up, QRIS, and Withdraw are restricted to the verified Seller (Merchant). Provider Settings is restricted to the verified Payyo QRIS Operator/Admin. A seller cannot reach Provider Settings. Rationale: indispensable to keep provider credentials and seller money state bound to the correct participant.
NFR-07 — Readable text and controls at every viewport (explicit, from the creative direction)
Headlines, wordmarks, labels, numbers, cards' text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut as the direction asks, as long as they cover no readable text or control.
NFR-08 — Reduced motion (explicit, from the creative direction)
With prefers-reduced-motion, all transforms are removed and only opacity fades remain, providing a usable static arrangement.
NFR-09 — No gradients (explicit, from the creative direction) No gradients anywhere in the interface.
No separate queue worker, additional container, or Kubernetes deployment is required by the accepted behavior.
Assumptions
Constraints
Presentation and technology defaults
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!