Sui and Ethereum payouts run on mainnet. Mizuhiki Awaji pays MJPY on testnet at 1 MJPY per net yen. The app shows progress, then the receipt and explorer link.
Yen takes its time.
Your next step shouldn’t.
Scan a transit card, choose a destination, and confirm an on-chain payout from a prefunded treasury. The hosted backend keeps the receipt ready for your phone and the operations dashboard.
Live payouts work today. Merchant settlement and automatic treasury replenishment are the next integration step.
Your card on the phone.
Your payout on-chain.
UnSui reads the card over NFC, prepares the payout and confirms it through the hosted backend. A prefunded contract sends the funds to your chosen address. The phone and dashboard share the same recorded result.
- 01 · SCAN & QUOTE
A balance and a destination
Read the transit card, select the network and enter a wallet address, .sui name or ENS name. Review the amount and 2% fee.
- 02 · CONFIRM
Check the same card
Re-scan to confirm. The backend checks the quote, remaining allowance and request ID. Refunds above ¥1,000 also require World ID verification.
- 03 · ISSUE THE PAYOUT
One request, one result
The operator signs the payout and waits for chain confirmation. An interrupted request reuses its saved transaction when retried.
Filter orders, choose cards and columns, or ask the workspace assistant to arrange the view. The SB extension presents merchant-shaped records for the demonstration; live SBPS settlement is not connected.
Funded before the scan. Payouts use the contract’s existing balance. Operators replenish the treasury directly. NFC reads the transit card; the refund ledger tracks the allowance without debiting the physical card.
From the first scan to the explorer.
- NFC READ
Scan the card
Read the balance and recent journeys. The shared ledger checks what remains available for refund.
- YOUR DESTINATION
Review the quote
Choose Sui, Ethereum or Awaji. Resolve a name, enter an address or use the dGen1 wallet, then review the fee and payout.
- SAME-CARD CHECK
Re-scan to confirm
Present the same card again. The backend validates the request and requires a World ID proof for refunds above ¥1,000.
- ISSUING REFUND
Wait for confirmation
The contract processes the payout while the app shows progress. Safe retries reuse the saved request and transaction.
- CONFIRMED ON-CHAIN
Open your receipt
See the amount, destination and transaction hash. Open the explorer or find the same refund in history and the dashboard.
How replenishment can follow.
The working payout path uses operator-funded liquidity. This model shows how verified merchant payments and later yen settlement could replenish it when the payment provider is connected.
Pay ahead. Settle. Refill. Repeat.
Read clockwise. Arrows connect stages in the lifecycle; yen settlement and crypto payouts use separate rails. Operator capital funds the initial buffer before the first payout.
The merchant ID identifies us.
The payment record identifies the money.
Our sandbox SBPS integration uses the identifiers supplied for the contracted service, with a backend that verifies payment results. The browser cannot authorize payouts by reporting “payment successful.”
Merchant purchase
- merchant_id
- Assigned by SBPS
- service_id
- Contracted service
- Order reference
- UNSUI-ORDER-0042
- Processor reference
- Tracking / transaction ID
- Purchase amount
- ¥1,500
- Payment state
- Verified completion
- Settlement state
- Awaiting bank settlement
Field availability and naming depend on the selected SBPS integration. The sample values are not credentials.
Accept through the right channel
Physical Suica acceptance needs a supported merchant terminal or certified payment integration. The dGen1’s current NFC reader only reads card data. An online Mobile Suica payment flow is a separate integration.
Confirm from an authoritative source
Validate the service-specific server notification and/or processor status query, match the expected merchant and order, and reconcile the amount. Do not trust a redirect page or a screenshot as proof of payment.
Map the payment to an entitlement
Store the unique processor payment reference, amount, destination wallet and quote. Retries must reuse the same entitlement. Partial payouts must never exceed its authorized total.
Crypto payout and processor refund are separate operations. This proposal pays from UnSui’s treasury. It does not describe SBPS issuing a crypto refund. Cancellations and refunds must be reconciled with the original payment flow; an already completed on-chain transfer does not reverse automatically. SBPS payment/refund functions ↗
The buffer buys time.
UnSui prefunds a crypto treasury using operator capital. User payouts reduce it; operators currently replenish it directly. The sandbox merchant integration would replenish it after bank settlement and conversion. Pending yen is not spendable crypto.
Give the buffer
a little pressure.
Adjust the opening balance and settlement delay. Watch the payout queue grow when the reserve floor would be breached.
Available crypto in the pool
10-day illustration · SUIIllustrative assumptions: ¥10,000 per SUI, 2% combined settlement/conversion cost, one purchase batch per day, and a 3 SUI minimum reserve. Fees reduce replenishment, so an equal gross payout erodes the buffer. This is not a live price, an SBPS fee quote, or an SBPS settlement promise. Whole daily batches wait in order; gas, price movements and payment reversals are excluded.
Size for the gap
Plan for payout demand across the entire settlement-and-conversion window, plus gas, market moves and a safety margin. A bank holiday or delayed conversion can extend that window.
Working buffer ≈ daily crypto demand × lag + reserveStop before empty
The sandbox service queues or pauses new authorizations below its reserve threshold. The current Move contract aborts if its SUI pool cannot cover a payout; it does not implement this model’s 3 SUI floor or queue.
Reconcile before refill
Match settled net yen against processor reports, fees and reversals. Record the conversion execution and on-chain deposit. FX changes, fees and losses need capital or an explicit pricing policy.
Sui makes the payout
and the record inseparable.
The Sui mainnet contract uses a shared Move ledger. Every successful refund updates the card’s total and sequence, consumes a request ID, creates an immutable receipt and transfers SUI in one transaction.
Authorized request
Card commitment
Request ID + recipient
Amount + observed balance
Expected sequence + expiry
Check every condition
- Authorized operator; not paused
- Request ID not already consumed
- Expected card sequence matches
- Within attested balance + expiry
- Enough SUI in the pool
Record + transfer
Advance total and sequence
Link and freeze receipt
Emit refund event
Pay the destination wallet
Prevent replay inside this ledger.
Submitting the same request ID twice cannot pay twice. A stale sequence rejects racing updates. Cumulative refunds cannot exceed the operator-attested balance for that card commitment. These checks do not authenticate the physical card balance.
Consume the payment—not just a request.
Add a unique payment commitment derived from the verified processor reference and merchant context. Enforce its payout cap on-chain so a second request ID cannot redeem the same purchase again. This merchant-payment binding is not in the current contract.
Sui and Ethereum mainnet payouts share the hosted refund allowance with MJPY payouts on Awaji testnet. Neon stores reservations and signed transactions so retries recover the same payout. Merchant payment verification remains a separate integration.
Inspect the deployed contracts MAINNET + AWAJI TESTNET
0xb4f9750ae4baf6cd1dd781f08b1d9a419c85fec62c13518b016434d8ea635ab80xa4b33876663619dd90862ab611e104258f9c366ba1c6655dfb0a4a93af94e5350x41adda2884b982235c022e286c20dcf3bd39fbff9d1d56605053434c33784fd07US1H68KHniKWxcaSM1xddBiS4Gz7e6No2yGBrQ4zLvThese links show the active Sui package, treasury and a confirmed mainnet payout. Balances change with funding and refunds. The publisher retains upgrade and administration capabilities.
Show what can be proven.
Name what still needs trust.
The contract makes crypto state inspectable. Reconciliation joins it to off-chain payment and bank records. Neither a hash nor a Merkle tree turns an unverified yen claim into verified cash.
The receipt chain
Each receipt commits to the previous receipt’s ID and hash, the current claim, sequence and timestamp. The shared ledger stores the latest head.
The claim commitment
These are the deployed Move contract’s four leaves. The receipt hash covers the full BCS-encoded receipt. The website’s local demo uses a separate illustrative format.
| Record | Where it lives | What it establishes |
|---|---|---|
| SUI pool, transfers and immutable receipts | Sui · publicly inspectable | Crypto funds and the recorded payout history; not the merchant’s bank balance. |
| Card commitment and refund sequence | Sui · publicly inspectable | Pseudonymous continuity within the ledger. It does not prove card ownership or a card debit. |
| Payment status and processor reference | Sandbox merchant backend | Verified purchase entitlement, based on authenticated processor data. |
| Yen settlement and conversion execution | Sandbox bank / provider reconciliation | What arrived, fees and reversals, and how much crypto was acquired. |
| Raw NFC ID and travel history | Off-chain | Not published in the contract; keyed commitments are pseudonyms, not guaranteed anonymity. |
The contract replaces the payout ledger—not every business record.
SBPS payment references, reconciliation, conversion orders and exception handling still need durable off-chain records. A future audit report could commit reconciliation batches on-chain, but the current prototype does not attest to fiat reserves.
A working proof.
A defined path to payments.
Explore it today
- Native FeliCa balance and history reading
- Sui and Ethereum mainnet payouts; Awaji MJPY payouts
- Request replay and sequence protection
- Immutable, linked receipts and Merkle commitments
- Hosted ledger and standalone Android app
- Customizable dashboard with a workspace assistant
- Sui names, ENS and dGen1 wallet destinations
Explore the sandbox merchant rail
- Provider acceptance of this specific use case
- Contracted merchant ID and supported acceptance channel
- Authenticated payment verification and binding
- Bank settlement and conversion reconciliation
- Liquidity policy, reversal handling and security review
Primary sources & implementation notes
Payment details below are provider documentation. The architecture, buffer model and future controls on this page are UnSui’s proposal.