What your client sees
The payment page at/pay/{linkId} shows:
- The purpose and client name you set when creating the link
- The amount in XLM (or an amount input field if the link is flexible)
- A Connect Freighter button to connect their Stellar wallet
- The destination address (Hypertron’s shared pool) and the pre-filled memo
Clients must have the Freighter browser extension installed. Hypertron uses Freighter to request the transaction signature — no private keys are ever exposed to Hypertron.
The payment flow, step by step
Client opens the payment link
Your client visits the URL (e.g.
https://your-domain/pay/clx9z2a0f...) in any browser with Freighter installed. The page loads the link details from Hypertron and displays the amount and purpose.Client connects Freighter
Clicking Connect wallet triggers the Freighter permission prompt. Once the client approves, their public key is used only to pre-fill the transaction — it is never stored or shared with you.
Client reviews and signs the transaction
Freighter shows the transaction details:
- Destination: Hypertron’s shared pool address (
GXXXXXX...) - Amount: the XLM amount from the link (or the amount the client entered for flexible links)
- Memo text: the link’s unique
hpl_memo (e.g.hpl_lf2k3x_a9bc12de)
Hypertron detects the payment
Hypertron monitors the Stellar Horizon event stream for the pool account. When it detects an incoming payment, it reads the transaction memo and looks up the matching payment link.
Attribution and commitment
Once the payment is matched, Hypertron:
- Generates a Poseidon commitment from the payment data
- Generates a nullifier unique to this payment
- Registers both on-chain via the Soroban PoolManager contract
- Marks the payment link as
paidAtwith the transaction hash - Credits your virtual balance with the received amount
How memo attribution works
Every payment link carries a unique memo in the formathpl_{timestamp_base36}_{random_suffix}. For example: hpl_lf2k3x_a9bc12de.
When a payment lands in the pool, Hypertron reads the memo field of the Stellar transaction and queries the database for a link with a matching linkMemo. This is the only mechanism that ties a Stellar payment to your business — no wallet addresses are logged or compared.
Because attribution is memo-only, your business never learns the payer’s wallet address. An on-chain observer can see that funds entered the pool, but cannot determine which business received them or link inflows to outflows.
Privacy guarantees
| Actor | Can see | Cannot see |
|---|---|---|
| You (the business) | Payment confirmed, amount, workflow stage | Payer wallet address |
| Your client | Payment sent to pool | Your balances or withdrawal activity |
| On-chain observer | Pool received XLM | Which business or link it belongs to |
Viewing payments in the dashboard
Go to Dashboard → Payment Links to see all your links and their payment status. Each row shows:- Status: Unpaid or Paid
- Amount: XLM amount for the link
- Purpose / client name: what you entered when creating the link
- Paid at: timestamp of the confirmed Stellar transaction
- Payment TX hash: the Stellar transaction hash, useful for on-chain verification
Payment events and confirmation timing
Stellar transactions confirm in roughly 3–7 seconds under normal network conditions. Hypertron’s Horizon listener picks up the event within seconds of ledger close. In practice, you should see the Paid status appear in your dashboard within 10–15 seconds of your client clicking Confirm in Freighter. If a payment does not appear after a few minutes, check:- The client completed the Freighter signing step (not just connected their wallet)
- The memo was not altered before signing
- The Stellar network is not experiencing unusual congestion (visible on
dashboard.stellar.org)
