Want to access your existing collection? Link your wallet in the Startale App settings.
Open settings
)
}
```
## Important constraints
* You can only **read** from a linked EOA inside a Mini App. You cannot sign or send transactions from it. See [Wallet integration](/miniapps/wallet-integration).
* Each address in `eoaWallets` is verified server-side via SIWE. Treat them as cryptographically owned: they are safe to use for eligibility checks, identity matching, and analytics.
## What you've learned
* That `eoaWallets` is the canonical bridge between a user's legacy identity and their new Startale smart account.
* How to do read-only contract calls against linked EOAs inside a Mini App.
* That EOA linking itself happens outside the Mini App, your job is to detect and react.
# Send a USDSC payment
Source: https://docs.startale.com/tutorials/code-walkthroughs/send-usdsc-payment
Charge a user in Startale USD with one click and verify the transaction on-chain.
Build a checkout button that charges a user in USDSC. Inside the Startale App, gas is sponsored by Startale, so the user pays only the stablecoin amount.
This walkthrough targets a Mini App. To ship the same flow as a standalone application, configure a paymaster through [`paymasterOptions`](/app-sdk/gasless) and send through `wallet_sendCalls` rather than the `useWriteContract` path shown here, because only batched calls carry a custom paymaster.
## What you'll build
A single button that:
1. Connects the user (if not yet connected).
2. Sends a USDSC `transfer` from the smart account to a recipient address.
3. Reads the on-chain receipt to confirm the payment.
## Prerequisites
* A working [connect button](/tutorials/code-walkthroughs/connect-and-sign).
* A recipient address controlled by your app. Your own EOA is fine.
* A smart account funded with USDSC.
## Steps
### 1. Define constants
```ts src/constants.ts theme={null}
import type { Address } from 'viem'
export const USDSC_ADDRESS: Address = '0x3f99231dD03a9F0E7e3421c92B7b90fbe012985a' // Soneium Mainnet
export const USDSC_DECIMALS = 6
export const RECIPIENT: Address = '0x...' // your collection wallet
```
### 2. Build the pay button
```tsx src/PayButton.tsx theme={null}
import { useWriteContract, useWaitForTransactionReceipt } from 'wagmi'
import { erc20Abi, parseUnits } from 'viem'
import { USDSC_ADDRESS, RECIPIENT, USDSC_DECIMALS } from './constants'
export function PayButton({ amount }: { amount: string }) {
const { writeContractAsync, data: hash, isPending } = useWriteContract()
const { isLoading, isSuccess } = useWaitForTransactionReceipt({ hash })
const onClick = async () => {
await writeContractAsync({
address: USDSC_ADDRESS,
abi: erc20Abi,
functionName: 'transfer',
args: [RECIPIENT, parseUnits(amount, USDSC_DECIMALS)],
})
}
return (