FortiBlox LogoFortiBlox Docs
NexusBilling & Pricing

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:

EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

USDT (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:

Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB

PYUSD (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:

2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo

Crypto Pricing (8% Discount)

Enjoy 8% savings compared to credit card pricing:

TierCredit CardCrypto PriceYou 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:

  1. X1 Blockchain wallet with USDC, USDT, or PYUSD

  2. SOL for gas fees (≈0.00001 SOL = $0.0001)

    • Required to pay transaction fees
    • Minimal amount needed
  3. FortiBlox account

Step-by-Step Payment Process

Step 1: Choose Your Tier

  1. Log into Developer Portal
  2. Navigate to BillingPricing
  3. Note the Crypto Price for your chosen tier
  4. 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
  1. Open Phantom wallet (mobile or browser extension)
  2. Click "Send"
  3. Paste the payment address
  4. Select token: USDC (or USDT/PYUSD)
  5. Enter amount: 45 (for Developer tier)
  6. Review transaction:
    • Recipient address (verify it matches)
    • Amount: 45 USDC
    • Network fee: ≈0.00001 SOL
  7. Click "Send"
  8. Approve transaction
  9. Wait for confirmation (usually 1-2 seconds)
Option B: Using Solflare Wallet
  1. Open Solflare wallet
  2. Click "Send" tab
  3. Select token: USDC
  4. Enter recipient address
  5. Enter amount: 45
  6. Click "Continue"
  7. Review and confirm transaction
  8. 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:

  1. On-chain confirmation: 1-2 seconds
  2. FortiBlox verification: 30 seconds - 2 minutes
  3. 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, 2025

Step 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.png

Subscription Management

View Subscription Details

  1. Navigate to BillingSubscription
  2. 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

  1. Log into Developer Portal
  2. Navigate to Billing
  3. See renewal prompt:
    ⚠️ Your subscription expires today
    Renew now to maintain access
    [Pay with Crypto] [Switch to Credit Card]
  4. Click "Pay with Crypto"
  5. 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:

  1. Navigate to BillingSubscription
  2. Toggle "Auto-renew" on
  3. 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:

  1. Navigate to BillingSubscription
  2. Click "Cancel Subscription"
  3. Choose cancellation type:
    • Cancel immediately: Lose access now
    • Cancel at period end: Keep access until expiration (recommended)
  4. Confirm cancellation
  5. Receive confirmation email

No refunds: Unused time is not refunded

See complete cancellation guide →

Change Subscription Tier

Upgrade

  1. Navigate to BillingPricing
  2. Click "Upgrade" on higher tier
  3. See prorated amount:
    Current tier: Developer ($45/month)
    New tier: Business ($459/month)
    Days remaining: 15
    
    Amount due: $207 (prorated)
  4. Click "Pay with Crypto"
  5. Send prorated USDC amount
  6. Upgrade activates immediately

Downgrade

  1. Navigate to BillingPricing
  2. Click "Downgrade" on lower tier
  3. Confirm downgrade
  4. Change takes effect at end of current period
  5. No refund for unused time

Payment History

View all your crypto payments:

  1. Navigate to BillingPayment History
  2. 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:

  1. Navigate to BillingPayment History
  2. Click "Export CSV"
  3. Select date range
  4. 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:

  1. ✅ Address is displayed in Developer Portal
  2. ✅ Address matches QR code
  3. ✅ Address starts with valid X1 Blockchain characters (base58)
  4. ✅ You received address from official fortiblox.com domain
  5. ❌ Never send to address from email/DM (could be phishing)

Double-Check Amount

Before confirming transaction:

  1. ✅ Amount matches tier price
  2. ✅ Token is correct (USDC/USDT/PYUSD)
  3. ✅ Network fee is reasonable (<$0.01)
  4. ✅ 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:

  1. Copy transaction signature from confirmation
  2. Visit Solscan.io
  3. Paste signature in search
  4. Verify:
    • ✅ Transaction succeeded
    • ✅ Amount is correct
    • ✅ Recipient address matches
    • ✅ Token is correct
    • ✅ Transaction is recent

Example transaction:

https://solscan.io/tx/5KmT7eQxQhdvaBhZkbmfxvExZQq4YCL4Zd2kZzZGpPZQxMwQp7LZkwZQxZQxZQx

Troubleshooting

Payment Not Confirmed

Issue: Sent payment but subscription not activated

Solutions:

  1. Wait longer: Verification can take up to 5 minutes
  2. Check transaction: Verify transaction succeeded on Solscan
  3. Verify amount: Ensure you sent exact amount required
  4. Check token: Verify you sent correct token (USDC/USDT/PYUSD)
  5. 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:

  1. Insufficient SOL: Need SOL for gas fees

    • Solution: Add 0.001 SOL to wallet
  2. Insufficient token balance: Not enough USDC/USDT

    • Solution: Add more tokens to wallet
  3. Network congestion: X1 Blockchain network busy

    • Solution: Wait a few minutes and retry
  4. 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:

  1. Return to Developer Portal
  2. Click "Pay with Crypto" again
  3. Get new payment address
  4. Complete payment with new address

Can't Find Transaction

Issue: Don't remember transaction signature

Solutions:

  1. Check wallet history: Transaction listed in wallet
  2. Check email: Confirmation email has signature
  3. Check Developer Portal: Billing page shows recent transactions
  4. 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