# Solana Pay payment links, step by step | Cosmos Pay

URL: https://payments.cosmospay.lat/learn/accept-usdc-with-solana-pay

> Charge in USDC on Solana with a Solana Pay link and QR code: what the link holds, how to test on Devnet and how each payment is confirmed.

## How to accept USDC with Solana Pay links

With Cosmos Pay, a payment link on Solana is a Solana Pay transfer request: your customer scans its QR code or opens it in a wallet such as Phantom or Solflare and approves the USDC payment there. The USDC goes straight to your wallet, and Cosmos Pay marks the link as paid once Solana confirms the transaction. Try it on Devnet before you charge real money.

Updated November 2, 2026 · By Cosmos Pay

### What a Solana Pay link holds

Solana Pay is a standard for payment requests that Solana wallets read: a solana: link, or its QR code, with the address to pay, the amount, the token and a message.

Cosmos Pay adds a reference key made for each link. The wallet includes it in the transaction, and Cosmos Pay looks for that key on Solana to match the payment to its link. It accepts the payment only when the transaction succeeded and the exact amount reached your address.

- [The Solana Pay specification](https://solana.com/docs/tools/solana-pay/specification/version1-1)
- [Solana payments](https://payments.cosmospay.lat/solana)

### What you and your customer need

- You: a Solana address that receives the money, added to your organization in the dashboard and proved yours with a signature.
- Your customer: a Solana wallet that reads Solana Pay links, such as Phantom or Solflare, holding the USDC and a little SOL for the network fee. No account with Cosmos Pay.
- For tests: Sandbox, where links run on Solana Devnet. USDC has a preset there too, so you can test with Devnet USDC.

### Accept your first Solana Pay payment

1. **Switch to Sandbox**: Sign in to the dashboard and choose Sandbox at the top. Links you create there run on Solana Devnet and move no real money.
2. **Add your Solana wallet**: In your organization’s settings, add the Solana address that will receive the money and sign what the dashboard asks for, which proves the wallet is yours.
3. **Create the link**: In Payments, choose Create payment link, pick Solana and change the asset to USDC (the picker starts on SOL). Enter the amount, or leave it empty for your customer to choose, then pick your wallet and, if you like, a message.
4. **Pay it from a wallet**: Open the checkout page and scan its QR code with a Solana wallet, or open the link on the same device. Approve the payment in the wallet, and the checkout turns to Paid once Solana confirms it.
5. **Confirm it on your server**: Add a webhook endpoint in the dashboard. When the payment is confirmed, Cosmos Pay sends PAYMENT_INTENT_SUCCEEDED, signed with HMAC-SHA256. Deliver the order when it arrives.
6. **Switch to Production**: Choose Production and create a live API key (it starts with prod_). Links now run on Solana’s main network, where USDC has its own preset.

- [How to confirm a payment on your server](https://payments.cosmospay.lat/learn/confirm-stablecoin-payments)
- [API keys](https://dev.cosmospay.lat/docs/api-keys/)

### Create the link from your server

With the Payments API, call POST /v1/payment-intents/pay with chain set to solana, your address as the destination and, for USDC, the asset code USDC with its mint as the issuer. With the TypeScript SDK (version 2.2 or later), pass chain: 'solana' to client.paymentIntents.createPay.

The response carries the link (its uri starts with solana:) and its QR code. Show the QR code, open the link in your customer’s wallet, or send them to the hosted checkout: payments.cosmospay.lat followed by the link’s id.

- [Payment intents API](https://dev.cosmospay.lat/docs/api/payment-intents/)
- [Payment intents in the SDK](https://dev.cosmospay.lat/docs/sdk/server/payment-intents/)

### Good to know

- You can leave the amount empty and let your customer choose it, as for donations. A link that adds your own fee needs an amount.
- A message of up to 300 characters, such as an order number, shows in your customer’s wallet.
- With your own fee on the payment, the link becomes a Solana Pay transaction request that pays your wallet and your fee wallet in one transaction.
- A link is open for a limited time, shown on the checkout as a countdown. A payment that still arrives and is confirmed marks it as paid.
- Your customer’s wallet pays the Solana network fee, in SOL. Each payment pays your plan’s rate, the same as on every network.

- [Pricing and fee calculator](https://payments.cosmospay.lat/fees)
- [Stellar vs Solana vs Monad](https://payments.cosmospay.lat/learn/stellar-vs-solana-vs-monad)

### Questions and answers.

Payments by network: [Stellar payments](https://payments.cosmospay.lat/stellar), [Solana payments](https://payments.cosmospay.lat/solana), [Monad payments](https://payments.cosmospay.lat/monad)

#### Which wallets can pay a Solana Pay link?

Any Solana wallet that reads Solana Pay links, such as Phantom or Solflare. Your customer scans the QR code or opens the link, and approves the payment in the wallet.

#### Does my customer need SOL?

Yes, a little. Their wallet pays the Solana network fee in SOL, on top of the USDC they send.

#### Does the USDC pass through Cosmos Pay?

No. On Solana your customer’s wallet sends the USDC straight to your address. Cosmos Pay finds the payment on the network by the link’s reference key.

#### Can I test without real money?

Yes. In Sandbox and with test keys (dv_), links run on Solana Devnet, where USDC has a preset, and the checkout says that no real funds move.

### More guides

[See every guide](https://payments.cosmospay.lat/learn)

#### [How to accept USDC payments online](https://payments.cosmospay.lat/learn/accept-usdc-payments)

Charge in USDC with a payment link, the hosted checkout or the API, and try it on a test network first.

#### [How to confirm a stablecoin payment on your server](https://payments.cosmospay.lat/learn/confirm-stablecoin-payments)

Deliver orders from a signed webhook, not from your customer’s page: verify it, answer fast and skip duplicates.

#### [Stellar vs Solana vs Monad for accepting payments](https://payments.cosmospay.lat/learn/stellar-vs-solana-vs-monad)

The three networks side by side, as Cosmos Pay supports them: link format, assets, test networks and fees.

### Start accepting stablecoins.

Create a free account, mint a test key and send your first payment link today.

[Create a payment link](https://dev.cosmospay.lat/login?next=%2Fdashboard%3Fview%3Dpayments)

#### Write to us

Questions about plans, integration or protected payments? Tell us and we will reply by email.

[organization@cosmospay.lat](mailto:organization@cosmospay.lat)
