API errors
When using the production environment moonpay.hel.io, set your API endpoint to:
api.hel.io/v1
and generate API keys there.
For the development environment, use:
api.dev.hel.io/v1
and generate API keys from moonpay.dev.hel.io.
I forgot my API keys
If you forget your keys:
Log in to the dashboard
Go to Developer → API
Toggle Enable to generate your Public (apiKey) and Secret API Key (bearer)
Note: Save your keys securely — the Secret API Key cannot be retrieved later. You can regenerate both keys if needed.
Moving funds between MoonPay Commerce wallets
If your funds are in a different MoonPay or legacy Helio wallet than the one you want to use, you may need to transfer them manually.
Move USDC from the MoonPay app to a legacy MoonPay Commerce wallet
Log in to the MoonPay Commerce dashboard
Copy the wallet address for the wallet that should receive the funds
In the MoonPay app, start a USDC withdrawal
Paste the wallet address into the destination field
Review the details and confirm the withdrawal
Transfer funds from a legacy Helio wallet to your MoonPay Commerce wallet
Log in to MoonPay Commerce at moonpay.hel.io
Go to Manage wallets
Copy your main wallet address
Go to your legacy Helio Wallet via https://legacy.hel.io/, and send the funds to your main wallet
Make sure the sending wallet has enough SOL to cover the network fee
Before you send funds
Double-check that you copied the correct destination wallet address
Make sure you’re sending the correct asset to a compatible wallet address
If you’re sending funds on Solana, ensure the sending wallet has enough SOL for network fees
Retrieving the Currency ID
To retrieve the currency ID, use our Get Currency endpoint here.
Retrieving your Wallet ID
In the dashboard, go to Settings → Manage Wallets.
Click the three dots next to your wallet and select Copy Helio ID.
Note: The Helio ID is different from your Public Key.
Paylink unauthorized?
If you ever see this error when opening a paylink, it’s because you’re using a dynamic paylink.
Important: Dynamic paylinks are designed exclusively for the checkout widget, and cannot be accessed natively via the URL.
Tip: To see a simulated checkout widget experience, enter the paylink at demo.hel.io.
The checkout widget is not loading
To ensure the checkout widget works as intended, please copy the code snippet directly from step 3 of the payment creation — without adding any customizations to the code.
Note: Editing or reformatting the code may introduce syntax errors that prevent the widget from loading.
How to verify webhook payload is from MoonPay Commerce
Each webhook request includes a unique secret token in the header:
Authorization: Bearer SHARED_TOKEN
This token verifies that the webhook originates from MoonPay Commerce.
Tip: Keep this token safe — it’s also required to authenticate and delete webhooks later.
I didn’t get assigned the role for my Discord membership
If you didn’t get assigned the Discord role automatically, you can claim the role manually via the buyers dashboard.
I can't send my USDC from my Helio Wallet, what is going on?
If you’re sending USDC on Solana from a new wallet, you’ll need a tiny amount of SOL (under $0.5) to create the USDC token account.
Note: MoonPay Commerce covers regular fees, but not this one-time setup cost.
Liquid Brokers – how to complete a deposit
If your Liquid Brokers deposit didn’t complete, your funds are likely in your Helio wallet.
To complete the transaction:
Return to the original Liquid Brokers checkout page
Select Pay with card
Choose Wallet when prompted
Log in with the same email address used for the original deposit
Enter the same amount from your original transaction
Select your available balance to complete the deposit
Note: If MoonPay Commerce detects the funds from your earlier deposit, you won’t be charged again.
Tip: If you’re unsure which email address or amount you used, check your confirmation email or transaction records.
My card was charged, but the merchant doesn’t see my purchase
When you pay with a card, the transaction happens in two steps:
Card payment (onramp): You first use your card to buy crypto — this converts your fiat currency into cryptocurrency
On-chain transaction: Once the crypto is credited to your wallet, you’ll need to complete the purchase on-chain by connecting your wallet and confirming the transaction
If your card has been charged but the merchant doesn’t see your purchase, it usually means the first step (card payment) was successful, but the second step (on-chain transaction) hasn’t been completed yet.
To fix this:
Log in with your connected wallet
Complete the transaction on-chain to finalize the payment
Tip: Return to the original checkout page and continue the payment using the same wallet or email address from your first attempt. If your crypto has already been credited, you may be able to complete the transaction using your existing balance without another card charge.
