Cryptocurrency Payments (USDC)
Complete guide to paying for FortiBlox Nexus with cryptocurrency - USDC, USDT, and PYUSD on X1 Blockchain
Cryptocurrency Payments (USDC)
FortiBlox Nexus accepts cryptocurrency payments via stablecoins on X1 Blockchain, offering an 8% discount compared to credit card pricing. Pay from any wallet you control - no KYC, no credit card required.
Why Pay with Crypto?
Advantages
Cost Savings:
- 8% discount on all tiers
- No credit card processing fees
- No international transaction fees
Privacy:
- No credit card required
- Minimal personal information
- Pseudonymous payments
Flexibility:
- Pay from any X1 Blockchain wallet
- No automatic billing (you stay in control)
- Pay when convenient
Transparency:
- All transactions on-chain
- Verifiable payment records
- No hidden fees
Self-Custody:
- You control your funds
- No chargebacks or payment failures
- No bank intermediaries
Disadvantages
Manual Renewal:
- Must manually renew each month
- No automatic billing
- Risk of forgetting renewal
Crypto Volatility:
- Stablecoins recommended (USDC, USDT)
- Price pegged to USD
- Minimal volatility risk
Technical Knowledge:
- Requires X1 Blockchain wallet
- Understanding of transactions
- Gas fees (SOL) required
Supported Tokens
FortiBlox accepts these stablecoins on X1 Blockchain:
USDC (USD Coin)
Most Popular Choice
- Issuer: Circle
- Blockchain: X1 Blockchain
- Backed by: US Dollar reserves
- 1:1 peg: 1 USDC = $1 USD
- Recommended: ✅ Best choice for most users
Token Address:
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1vUSDT (Tether)
Widely Available
- Issuer: Tether
- Blockchain: X1 Blockchain
- Backed by: US Dollar reserves
- 1:1 peg: 1 USDT = $1 USD
- Recommended: ✅ Good alternative
Token Address:
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYBPYUSD (PayPal USD)
PayPal Stablecoin
- Issuer: PayPal
- Blockchain: X1 Blockchain
- Backed by: US Dollar reserves
- 1:1 peg: 1 PYUSD = $1 USD
- Recommended: ✅ Reliable option
Token Address:
2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXoCrypto Pricing (8% Discount)
Enjoy 8% savings compared to credit card pricing:
| Tier | Credit Card | Crypto Price | You Save |
|---|---|---|---|
| Free | $0/month | $0/month | $0 |
| Developer | $49/month | $45/month | $4/month |
| Business | $499/month | $459/month | $40/month |
| Professional | $999/month | $919/month | $80/month |
Annual Savings:
- Developer: $48/year
- Business: $480/year
- Professional: $960/year
How to Pay with Crypto
Prerequisites
Before paying with crypto, you'll need:
-
X1 Blockchain wallet with USDC, USDT, or PYUSD
-
SOL for gas fees (≈0.00001 SOL = $0.0001)
- Required to pay transaction fees
- Minimal amount needed
-
FortiBlox account
- Sign up at nexus.fortiblox.com/signup
Step-by-Step Payment Process
Step 1: Choose Your Tier
- Log into Developer Portal
- Navigate to Billing → Pricing
- Note the Crypto Price for your chosen tier
- Click "Pay with Crypto" button
Step 2: Initiate Payment
You'll see the payment details page:
Subscription: Developer Tier
Amount: 45 USDC
Payment Address: [Unique address for your payment]
Valid for: 1 hour
[QR Code]
[Copy Address Button]Important: This payment address is unique to your transaction and expires in 1 hour.
Step 3: Send Payment from Your Wallet
Option A: Using Phantom Wallet
- Open Phantom wallet (mobile or browser extension)
- Click "Send"
- Paste the payment address
- Select token: USDC (or USDT/PYUSD)
- Enter amount:
45(for Developer tier) - Review transaction:
- Recipient address (verify it matches)
- Amount: 45 USDC
- Network fee: ≈0.00001 SOL
- Click "Send"
- Approve transaction
- Wait for confirmation (usually 1-2 seconds)
Option B: Using Solflare Wallet
- Open Solflare wallet
- Click "Send" tab
- Select token: USDC
- Enter recipient address
- Enter amount:
45 - Click "Continue"
- Review and confirm transaction
- Wait for confirmation
Option C: Programmatically
import { Connection, PublicKey, Transaction, sendAndConfirmTransaction } from '@solana/web3.js';
import { getAssociatedTokenAddress, createTransferInstruction } from '@solana/spl-token';
async function payWithUSDC(wallet, recipientAddress, amount) {
// Connect to X1 Blockchain
const connection = new Connection('https://api.mainnet-beta.solana.com');
// USDC token mint on X1 Blockchain
const USDC_MINT = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');
// Convert amount to smallest unit (6 decimals for USDC)
const amountInLamports = amount * Math.pow(10, 6);
// Get token accounts
const fromTokenAccount = await getAssociatedTokenAddress(
USDC_MINT,
wallet.publicKey
);
const toTokenAccount = await getAssociatedTokenAddress(
USDC_MINT,
new PublicKey(recipientAddress)
);
// Create transfer instruction
const transferInstruction = createTransferInstruction(
fromTokenAccount,
toTokenAccount,
wallet.publicKey,
amountInLamports
);
// Create transaction
const transaction = new Transaction().add(transferInstruction);
// Send transaction
const signature = await sendAndConfirmTransaction(
connection,
transaction,
[wallet]
);
console.log('Transaction signature:', signature);
return signature;
}
// Usage (for Developer tier)
await payWithUSDC(myWallet, paymentAddress, 45);Step 4: Wait for Confirmation
After sending payment:
- On-chain confirmation: 1-2 seconds
- FortiBlox verification: 30 seconds - 2 minutes
- Account activation: Automatic after verification
You'll see:
✅ Payment received!
Transaction: [signature link]
Activating your subscription...
✅ Subscription activated!
Tier: Developer
Credits: 50,000,000
Next payment due: December 21, 2025Step 5: Confirmation Email
You'll receive an email with:
- Payment confirmation
- Transaction signature
- Subscription details
- Next payment due date
- Payment address for next month
Screenshot Placeholders
[IMAGE: Crypto payment page with QR code and address]
Location: /docs/images/billing/crypto-payment-page.png
[IMAGE: Phantom wallet send screen]
Location: /docs/images/billing/phantom-send.png
[IMAGE: Payment confirmation screen]
Location: /docs/images/billing/crypto-confirmed.pngSubscription Management
View Subscription Details
- Navigate to Billing → Subscription
- See your crypto subscription details:
- Current tier
- Payment token (USDC/USDT/PYUSD)
- Amount paid
- Transaction signature
- Next payment due date
- Auto-renew status (on/off)
// Get subscription details via API
const response = await fetch('https://nexus.fortiblox.com/api/crypto/subscription', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const subscription = await response.json();
console.log(subscription);
/*
{
subscription_id: 'crypto_sub_xxx',
tier: 'developer',
status: 'active',
payment_method: 'crypto',
token: 'USDC',
amount: 45,
current_period_start: '2025-11-21T00:00:00Z',
current_period_end: '2025-12-21T00:00:00Z',
next_payment_due: '2025-12-21T00:00:00Z',
last_transaction: '5KmT...',
auto_renew: false
}
*/Renew Subscription
Crypto subscriptions require manual renewal each month:
7 Days Before Expiration
You'll receive email reminder:
- Subject: "Renew your FortiBlox subscription"
- Content: Payment address, amount, due date
On Expiration Day
- Log into Developer Portal
- Navigate to Billing
- See renewal prompt:
⚠️ Your subscription expires today Renew now to maintain access [Pay with Crypto] [Switch to Credit Card] - Click "Pay with Crypto"
- Follow payment process (same as initial payment)
After Expiration (Grace Period)
- Day 0-3: Full access continues, daily email reminders
- Day 4: Rate limits reduced to Free tier
- Day 7: Subscription cancelled, downgraded to Free tier
Enable Auto-Renew (Optional)
For convenience, set up automatic payment:
- Navigate to Billing → Subscription
- Toggle "Auto-renew" on
- Approve wallet spending limit
How it works:
- 3 days before expiration, payment is automatically initiated
- Transaction is sent from your connected wallet
- You must keep sufficient USDC/USDT/PYUSD in wallet
- You'll receive notification before each payment
Limitations:
- Requires wallet connection (Phantom, Solflare)
- Must keep wallet funded
- Can disable anytime
// Enable auto-renew via API
const response = await fetch('https://nexus.fortiblox.com/api/crypto/auto-renew', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
enabled: true,
wallet_address: 'your_solana_wallet_address',
token: 'USDC'
})
});Cancel Subscription
To cancel crypto subscription:
- Navigate to Billing → Subscription
- Click "Cancel Subscription"
- Choose cancellation type:
- Cancel immediately: Lose access now
- Cancel at period end: Keep access until expiration (recommended)
- Confirm cancellation
- Receive confirmation email
No refunds: Unused time is not refunded
See complete cancellation guide →
Change Subscription Tier
Upgrade
- Navigate to Billing → Pricing
- Click "Upgrade" on higher tier
- See prorated amount:
Current tier: Developer ($45/month) New tier: Business ($459/month) Days remaining: 15 Amount due: $207 (prorated) - Click "Pay with Crypto"
- Send prorated USDC amount
- Upgrade activates immediately
Downgrade
- Navigate to Billing → Pricing
- Click "Downgrade" on lower tier
- Confirm downgrade
- Change takes effect at end of current period
- No refund for unused time
Payment History
View all your crypto payments:
- Navigate to Billing → Payment History
- See list of all payments:
- Date
- Amount
- Token (USDC/USDT/PYUSD)
- Transaction signature
- Status
- Tier
// Get payment history via API
const response = await fetch('https://nexus.fortiblox.com/api/crypto/payments', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const payments = await response.json();
console.log(payments);
/*
{
payments: [
{
id: 'pay_xxx',
date: '2025-11-21T00:00:00Z',
amount: 45,
token: 'USDC',
signature: '5KmT7eQxQ...',
status: 'confirmed',
tier: 'developer',
explorer_url: 'https://solscan.io/tx/5KmT7eQxQ...'
},
// ... more payments
]
}
*/Export Transactions
For accounting/tax purposes:
- Navigate to Billing → Payment History
- Click "Export CSV"
- Select date range
- Download CSV file with all transactions
CSV includes:
- Date
- Transaction signature
- Amount
- Token
- USD value at time of payment
- Tier
- Solscan link
Security Best Practices
Verify Payment Address
Always verify the payment address before sending:
- ✅ Address is displayed in Developer Portal
- ✅ Address matches QR code
- ✅ Address starts with valid X1 Blockchain characters (base58)
- ✅ You received address from official fortiblox.com domain
- ❌ Never send to address from email/DM (could be phishing)
Double-Check Amount
Before confirming transaction:
- ✅ Amount matches tier price
- ✅ Token is correct (USDC/USDT/PYUSD)
- ✅ Network fee is reasonable (<$0.01)
- ✅ Total deduction from wallet is expected
Use Secure Wallets
Recommended practices:
- ✅ Use reputable wallets (Phantom, Solflare, Backpack)
- ✅ Store seed phrase securely offline
- ✅ Enable wallet password/biometric
- ✅ Use hardware wallet for large amounts
- ❌ Don't share seed phrase with anyone
- ❌ Don't use custodial wallets for large amounts
Protect Your Account
FortiBlox account security:
- ✅ Enable 2FA (two-factor authentication)
- ✅ Use strong unique password
- ✅ Don't share API keys
- ✅ Review API key permissions
- ❌ Don't click suspicious links
- ❌ Don't share account credentials
Verify Transactions On-Chain
After payment, verify on X1 Blockchain explorer:
- Copy transaction signature from confirmation
- Visit Solscan.io
- Paste signature in search
- Verify:
- ✅ Transaction succeeded
- ✅ Amount is correct
- ✅ Recipient address matches
- ✅ Token is correct
- ✅ Transaction is recent
Example transaction:
https://solscan.io/tx/5KmT7eQxQhdvaBhZkbmfxvExZQq4YCL4Zd2kZzZGpPZQxMwQp7LZkwZQxZQxZQxTroubleshooting
Payment Not Confirmed
Issue: Sent payment but subscription not activated
Solutions:
- Wait longer: Verification can take up to 5 minutes
- Check transaction: Verify transaction succeeded on Solscan
- Verify amount: Ensure you sent exact amount required
- Check token: Verify you sent correct token (USDC/USDT/PYUSD)
- Contact support: If >10 minutes, email support with transaction signature
Sent Wrong Amount
Issue: Sent more or less than required amount
Solutions:
Sent less:
- Subscription won't activate
- Contact support with transaction signature
- Send additional payment for difference
- Or request refund (minus network fees)
Sent more:
- Subscription activates with tier amount
- Excess funds credited to account
- Used for next payment automatically
- Or request refund of excess
Sent to Wrong Address
Issue: Sent funds to incorrect address
Unfortunately: Blockchain transactions are irreversible
Prevention:
- Always double-check recipient address
- Copy-paste, don't type manually
- Scan QR code when possible
- Send small test transaction first if unsure
Transaction Failed
Issue: Transaction failed on-chain
Common reasons:
-
Insufficient SOL: Need SOL for gas fees
- Solution: Add 0.001 SOL to wallet
-
Insufficient token balance: Not enough USDC/USDT
- Solution: Add more tokens to wallet
-
Network congestion: X1 Blockchain network busy
- Solution: Wait a few minutes and retry
-
Wrong token account: Sending from wrong wallet
- Solution: Switch to correct wallet in extension
Payment Address Expired
Issue: Payment address expired (>1 hour old)
Solution:
- Return to Developer Portal
- Click "Pay with Crypto" again
- Get new payment address
- Complete payment with new address
Can't Find Transaction
Issue: Don't remember transaction signature
Solutions:
- Check wallet history: Transaction listed in wallet
- Check email: Confirmation email has signature
- Check Developer Portal: Billing page shows recent transactions
- Search on Solscan: Search by your wallet address
Code Examples
Complete Payment Flow
import { Connection, PublicKey, Transaction } from '@solana/web3.js';
import { getAssociatedTokenAddress, createTransferInstruction } from '@solana/spl-token';
// Step 1: Get payment details from FortiBlox API
async function initiatePayment(tier) {
const response = await fetch('https://nexus.fortiblox.com/api/crypto/initiate-payment', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ tier })
});
const paymentDetails = await response.json();
return paymentDetails;
/*
{
payment_id: 'pay_xxx',
amount: 45,
token: 'USDC',
payment_address: 'FortiBlox_payment_address',
expires_at: '2025-11-21T01:00:00Z'
}
*/
}
// Step 2: Create and send transaction
async function sendPayment(paymentDetails, wallet) {
const connection = new Connection('https://api.mainnet-beta.solana.com');
// Token mints
const TOKEN_MINTS = {
USDC: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
USDT: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
PYUSD: '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo'
};
const mintAddress = new PublicKey(TOKEN_MINTS[paymentDetails.token]);
const recipientAddress = new PublicKey(paymentDetails.payment_address);
// Get token accounts
const fromTokenAccount = await getAssociatedTokenAddress(
mintAddress,
wallet.publicKey
);
const toTokenAccount = await getAssociatedTokenAddress(
mintAddress,
recipientAddress
);
// Convert amount (6 decimals for stablecoins)
const amount = paymentDetails.amount * Math.pow(10, 6);
// Create transaction
const transaction = new Transaction().add(
createTransferInstruction(
fromTokenAccount,
toTokenAccount,
wallet.publicKey,
amount
)
);
// Send transaction
const signature = await wallet.sendTransaction(transaction, connection);
// Wait for confirmation
await connection.confirmTransaction(signature, 'confirmed');
return signature;
}
// Step 3: Verify payment with FortiBlox
async function verifyPayment(paymentId, signature) {
const response = await fetch('https://nexus.fortiblox.com/api/crypto/verify-payment', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payment_id: paymentId,
signature: signature
})
});
const result = await response.json();
return result;
/*
{
success: true,
message: 'Payment verified',
subscription: {
tier: 'developer',
status: 'active',
expires_at: '2025-12-21T00:00:00Z'
}
}
*/
}
// Complete flow
async function completeCryptoPayment(tier, wallet) {
try {
// Step 1: Initiate payment
console.log('Initiating payment...');
const paymentDetails = await initiatePayment(tier);
// Step 2: Send payment
console.log('Sending payment...');
const signature = await sendPayment(paymentDetails, wallet);
console.log('Transaction sent:', signature);
// Step 3: Verify payment
console.log('Verifying payment...');
const result = await verifyPayment(paymentDetails.payment_id, signature);
if (result.success) {
console.log('Payment successful!');
console.log('Subscription activated:', result.subscription);
return result;
}
} catch (error) {
console.error('Payment failed:', error);
throw error;
}
}
// Usage with Phantom wallet
const wallet = window.solana; // Phantom wallet
await completeCryptoPayment('developer', wallet);Check Payment Status
// Poll payment status until confirmed
async function waitForPaymentConfirmation(paymentId) {
const maxAttempts = 60; // 5 minutes (5 second intervals)
let attempts = 0;
while (attempts < maxAttempts) {
const response = await fetch(`https://nexus.fortiblox.com/api/crypto/payment/${paymentId}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const payment = await response.json();
switch (payment.status) {
case 'confirmed':
return { success: true, payment };
case 'pending':
// Wait and retry
await new Promise(resolve => setTimeout(resolve, 5000));
attempts++;
break;
case 'failed':
return { success: false, error: payment.error };
case 'expired':
return { success: false, error: 'Payment address expired' };
}
}
return { success: false, error: 'Payment confirmation timeout' };
}Support
Need help with crypto payments?
Documentation:
Contact:
- Email: [email protected]
- Live Chat: Available in Developer Portal
- Response Time: Within 24 hours
Include when contacting support:
- Transaction signature
- Amount sent
- Token used (USDC/USDT/PYUSD)
- Expected tier
- Your account email
X1 Blockchain Resources:
Last Updated: 2025-11-21