Green Road · Order #GR-001Happy path · Private payment · Real contracts

A private order, from cart to cash.

Alberto calls Ziggy to place an order. Ziggy initializes the escrow, Alberto funds it, Ziggy delivers the product, and Buju B. receives the payment.

Green Road order

#GR-001

Irie Oregano Kit

Caribbean herbs, hot sauce, and recipe cards

Customer
Alberto
Store operator
Ziggy
Payment receiver
Buju B.
Price
25 USDC · private
Open each step in order. Every dropdown explains the story, the wallet to use, and the exact action to complete.
1Place orderAlberto calls Ziggy

Alberto calls Ziggy and orders an Irie Oregano Kit. Before checkout, prepare three separate wallets and the private balances the order needs.

Do this

  1. 1Set Freighter to Testnet.
  2. 2Create accounts labelled Alberto, Ziggy, and Buju B.
  3. 3Fund every account with Testnet XLM for transaction fees.
  4. 4Register Buju B. so he can receive privately.
  5. 5Register Alberto, deposit at least 25 Testnet USDC, and Merge it into Spendable.

Visible on-chain

  • Three public Testnet addresses

Kept confidential

  • Recovery phrases and private keys
Success looks like: Buju B. is registered, Alberto has at least 25 Spendable USDC, and all three G… addresses are different.
Prepare the order wallets
2InitializeZiggy initializes the order

Ziggy takes Alberto's order and opens a fresh escrow, assigning Alberto as payer, Buju B. as receiver, and himself as approver.

Do this

  1. 1Switch Freighter to Ziggy and refresh the Store Operator page.
  2. 2Paste Alberto's address as Customer and Buju B.'s as Payment receiver.
  3. 3Open the order escrow, sign the key message, and approve initialization.

Visible on-chain

  • Payer, receiver, and approver addresses
  • Initialized status

Kept confidential

  • Escrow confidential key
Success looks like: A fresh order contract is selected and its state says Initialized.
Initialize order escrow
3FundAlberto funds the escrow

Alberto locks the 25 USDC order payment. The network verifies the escrow is funded without publishing the amount.

Do this

  1. 1Switch Freighter to Alberto and refresh the Customer page.
  2. 2Connect and confirm the wallet matches the escrow payer.
  3. 3Enter 25 USDC and click Lock order payment.

Visible on-chain

  • Payer and escrow addresses
  • Funded status

Kept confidential

  • Order amount
  • Alberto's remaining private balance
Success looks like: The shared escrow state changes from Initialized to Funded.
Fund order escrow
4DeliverZiggy delivers the product

Ziggy delivers the Irie Oregano Kit and confirms the real-world handoff, authorizing the escrow to release its private payment.

Do this

  1. 1Switch Freighter to Ziggy and refresh the Store Operator page.
  2. 2Confirm the escrow says Funded and the product was delivered.
  3. 3Click Confirm delivery & release and wait for proof generation.

Visible on-chain

  • Approver action
  • Receiver address
  • Released status

Kept confidential

  • Released amount
  • Participant balances
Success looks like: The shared escrow state changes from Funded to Released.
Confirm delivery and release
5ReceiveBuju B. receives payment

Buju B., the boss, discovers the released confidential USDC and merges it into his spendable private balance.

Do this

  1. 1Switch Freighter to Buju B. and refresh the Payment Receiver page.
  2. 2Connect and sync until Receiving shows the private payment.
  3. 3Click Make payment spendable and approve the transaction.

Visible on-chain

  • Receiver address
  • Merge transaction

Kept confidential

  • Incoming amount
  • Buju B.'s new spendable balance
Success looks like: Receiving becomes 0 and Spendable increases. The demo is complete.
Receive private payment

What stays private?

The value moves. The amount stays hidden.

Alberto's private funds
Confidential escrow
Buju B.'s private balance

Stellar shows that the order was funded and released, but not the amount or either participant's confidential balance. Addresses and lifecycle events remain public.

See the five-part journey →
Known v0 limitation: the payer can revoke or let the confidential allowance expire before approval. Release then fails safely and the escrow remains Funded.