Back to the project
HOW UNSUI WORKS

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.

Sui + Ethereum: mainnet payouts Mizuhiki Awaji: MJPY testnet payouts

Live payouts work today. Merchant settlement and automatic treasury replenishment are the next integration step.

01 / FROM A TAP TO A TRANSACTION

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.

HOW UNSUI WORKS TODAYScan → confirm → follow the transaction.
  1. 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.

  2. 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.

  3. 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.

Transaction confirmed
One result, two views
ON THE PHONEFunds and a receipt
Funded treasurySUI · ETH · MJPY
Payout contractCheck → record → transfer
Destination walletConfirmed transaction

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.

IN OPERATIONSThe same receipt, ready to inspect
Hosted ledgerDurable refund history
DashboardOrders, recipients, hashes
ExplorerInspect the chain record

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.

ONE REFUND, START TO FINISH

From the first scan to the explorer.

  1. 1
    NFC READ

    Scan the card

    Read the balance and recent journeys. The shared ledger checks what remains available for refund.

  2. 2
    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.

  3. 3
    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.

  4. 4
    ISSUING REFUND

    Wait for confirmation

    The contract processes the payout while the app shows progress. Safe retries reuse the saved request and transaction.

  5. 5
    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.

Keep the receipt, even if the connection drops. The hosted ledger preserves confirmed refunds. Retry an interrupted request to recover its result without issuing another payout.
THE MERCHANT SETTLEMENT MODEL

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.

THE MONEY CYCLE

Pay ahead. Settle. Refill. Repeat.

SANDBOX PAYMENT FLOW
The prefunded payout and settlement cycleA supported merchant purchase charges the card. After verification, the existing Sui buffer pays the customer. Yen later settles to the merchant bank account. A separate provider converts settled yen into crypto, which replenishes the treasury for another purchase. Connecting arrows show stages, not one continuous transfer of the same asset.Verify paymentSettlement lagNet of fees & adjustmentsCrypto depositNext purchaseTWO CLOCKS.ONE TREASURY.Payouts use crypto already funded.Yen replenishes it afterward.01Customer purchaseApproved channel charges the card02Pay from the bufferSui treasury → customer wallet03Yen settles laterSBPS → merchant bank account04Convert settled yenSeparate conversion provider05Refill the treasuryAcquired crypto → Sui pool

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.

02 / THE MERCHANT RECORD

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.”

ILLUSTRATIVE RECORD · NO LIVE ACCOUNT

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.

1

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.

2

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.

3

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.

SBPS merchant_id / service_id definitions SBPS Mobile Suica service overview

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 ↗

03 / LIQUIDITY BEFORE SPEED

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.

TRY THE TREASURY MODEL

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 · SUI
06121723StartD1D2D3D4D5D6D7D8D9D10
Crypto available3 SUI reserve floorPayouts queued
Paid over 10 days50 SUI
End-of-day pool4.3 SUI
Waiting for liquidity0 SUI

Illustrative 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 + reserve

Stop 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.

04 / ONE CLAIM, ONE PAYOUT

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.

INPUT

Authorized request

Card commitment
Request ID + recipient
Amount + observed balance
Expected sequence + expiry

CONTRACT GATES

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
ATOMIC RESULT

Record + transfer

Advance total and sequence
Link and freeze receipt
Emit refund event
Pay the destination wallet

Any check failsTransaction abortsNo partial payout or partial ledger update. Transaction gas may still be charged.
DEPLOYED ON MAINNET

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.

REQUIRED FOR THE PAYMENT INTEGRATION

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.

05 / TRANSPARENCY WITH A CLEAR BOUNDARY

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

Receipt #1Hash A
Receipt #2Includes Hash A
Receipt #3Includes Hash B

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

Four claim fields connected to one Merkle rootCard commitment and recipient connect to the left parent hash. JPY amount and observed JPY balance connect to the right parent hash. Both parent hashes connect to the SHA-256 Merkle root.SHA-256 Merkle rootParent hashParent hashCardcommitmentRecipientJPY amountObserved JPYbalance

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.

RecordWhere it livesWhat it establishes
SUI pool, transfers and immutable receiptsSui · publicly inspectableCrypto funds and the recorded payout history; not the merchant’s bank balance.
Card commitment and refund sequenceSui · publicly inspectablePseudonymous continuity within the ledger. It does not prove card ownership or a card debit.
Payment status and processor referenceSandbox merchant backendVerified purchase entitlement, based on authenticated processor data.
Yen settlement and conversion executionSandbox bank / provider reconciliationWhat arrived, fees and reversals, and how much crypto was acquired.
Raw NFC ID and travel historyOff-chainNot 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.

06 / TODAY & THE NEXT STOP

A working proof.
A defined path to payments.

BUILT

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
SANDBOX

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.

SBPS · merchant and service identifiers ↗SBPS · settlement and deposit schedules ↗SBPS · transaction and tracking records ↗SBPS · payment, capture and refund functions ↗PayCAS · supported payment brands ↗UnSui · deployed Move package on mainnet ↗

Watch Demo / UnSui