ssUSD FAQ & Troubleshooting

Find answers to common questions and solutions to typical issues when working with StateSet USD.

❓ Frequently Asked Questions

General Questions

StateSet USD (ssUSD) is a fully-backed, regulatory-compliant stablecoin pegged 1:1 to the US Dollar. It’s a stablecoin issued under the GENIUS Act, featuring:
  • 1:1 USD backing with audited reserves
  • Monthly CPA attestations published on-chain
  • Criminal penalties for reserve misreporting
  • Instant settlement on StateSet Network
  • Multi-chain support (Base, Solana, Cosmos)
  • Full KYC/AML compliance
Yes, ssUSD has multiple safety layers:
  1. Regulatory Safety: Federal oversight by OCC
  2. Reserve Safety: 100% backed by US Dollars and T-Bills
  3. Legal Safety: Criminal penalties for misreporting
  4. Technical Safety: Audited smart contracts
  5. Operational Safety: Segregated customer assets
See our security audits and reserve reports.
ssUSD Use Cases:
  • Payments: Instant, low-cost transactions globally
  • E-commerce: Accept payments without chargebacks
  • Payroll: Pay employees instantly worldwide
  • Treasury: Hold stable, liquid reserves
  • Cross-border: Send money internationally

Technical Questions

Supported Chains:
  1. StateSet (Native): Instant, $0.01 fees
  2. Base: Coinbase’s L2, low fees
  3. Solana: High-speed DeFi
  4. Cosmos IBC: 50+ connected chains
  5. Ethereum (Coming Q2 2024)
  6. Polygon (Coming Q2 2024)
Use our bridge to move between chains.
Limits by Account Type:
Account TypeDailyMonthlyPer Transaction
Basic$10,000$50,000$5,000
Verified$100,000$500,000$50,000
Premium$1,000,000$10,000,000$500,000
BusinessCustomCustomCustom
Request limit increase β†’
Transfer Speeds:
  • On StateSet: < 1 second finality
  • To Base: ~2 seconds
  • To Solana: ~3 seconds
  • Cross-chain: 1-5 minutes (via bridge)
  • Bank redemption: T+1 business day
Fee Structure:
  • Transfers on StateSet: $0.01 flat
  • Cross-chain bridge: 0.1% (min 1,max1, max 100)
  • Issuance: 0% (no fees)
  • Redemption: 0% (no fees)
  • Inactive account: $0/month
No hidden fees, no minimum balance requirements.

Compliance Questions

KYC Requirements:
  • Required for: Issuance, redemption, > $1,000 daily volume
  • Not required for: Transfers between verified users < $1,000
  • Process time: 5-10 minutes automated
  • Documents needed: Government ID, proof of address
  • Business accounts: Additional docs (formation, tax ID)
Start KYC β†’
Supported Regions:βœ… Fully Supported: USA, Canada, UK, EU, Singapore, Japan, Australia⚠️ Limited Support: China, India, Brazil (transfers only)❌ Not Supported: North Korea, Iran, Syria, Cuba, Russia (sanctioned)See full country list
Tax Reporting:
  • US Persons: 1099 forms for > $600 annual volume
  • Non-US: Comply with local regulations
  • API Access: Download transaction history anytime
  • Export Formats: CSV, PDF, JSON
ssUSD transactions may be taxable events. Consult your tax advisor.

πŸ”§ Troubleshooting Guide

Common Errors

Problem: Transaction fails with insufficient funds errorSolutions:
  1. Check your balance including pending transactions:
const balance = await stateset.stablecoin.balance({
  address: yourAddress,
  include_pending: true
});
  1. Ensure you’re accounting for fees ($0.01 per transaction)
  2. Check if funds are locked or vesting:
console.log('Available:', balance.balances.available);
console.log('Locked:', balance.balances.locked);
Problem: Address validation failsSolutions:
  1. Verify address format for the chain:
    • StateSet: stateset1... (45 chars)
    • Ethereum/Base: 0x... (42 chars)
    • Solana: base58... (44 chars)
  2. Use address validation:
const isValid = stateset.utils.validateAddress(
  address,
  'stateset' // or 'ethereum', 'solana'
);
  1. Check for typos or extra spaces
Problem: Transaction blocked due to KYC requirementsSolutions:
  1. Complete KYC verification:
const kycUrl = await stateset.compliance.getKYCUrl({
  redirect_url: 'https://yourapp.com/kyc-complete'
});
window.location.href = kycUrl;
  1. Check KYC status:
const status = await stateset.compliance.getKYCStatus();
console.log('KYC Status:', status); // pending, approved, rejected
  1. For business accounts, ensure all beneficial owners are verified
Problem: Too many API requestsSolutions:
  1. Check rate limit headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1640995200
  1. Implement exponential backoff:
async function retryWithBackoff(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.code === 'rate_limit' && i < maxRetries - 1) {
        await sleep(Math.pow(2, i) * 1000);
      } else {
        throw error;
      }
    }
  }
}
  1. Use batch operations when possible
  2. Upgrade to higher tier for increased limits
Problem: Transaction blocked for compliance reasonsSolutions:
  1. Check transaction details for flags:
const screening = await stateset.compliance.getScreening(transactionId);
console.log('Risk factors:', screening.risk_factors);
  1. Common causes:
    • Sanctioned entity involvement
    • Unusual transaction pattern
    • Missing Travel Rule info (> $3,000)
    • Exceeding velocity limits
  2. Contact compliance team:

Integration Issues

Problem: Webhook endpoint not receiving eventsSolutions:
  1. Verify webhook signature:
const isValid = stateset.webhooks.verifySignature(
  payload,
  headers['x-stateset-signature'],
  webhookSecret
);
  1. Check webhook status:
const webhooks = await stateset.webhooks.list();
webhooks.forEach(w => {
  console.log(`${w.url}: ${w.status}, last error: ${w.last_error}`);
});
  1. Common issues:
    • Firewall blocking StateSet IPs
    • SSL certificate problems
    • Timeout (must respond in 20s)
    • Wrong content-type (expects JSON)
Problem: Balance appears incorrect or not updatingSolutions:
  1. Check if including pending transactions:
const balance = await stateset.stablecoin.balance({
  address: yourAddress,
  include_pending: true,
  chains: ['stateset', 'base', 'solana'] // Check all chains
});
  1. Subscribe to real-time updates:
const ws = stateset.subscriptions.connect();
ws.subscribe('balance.updated', (event) => {
  console.log('New balance:', event.balance);
});
  1. Clear cache if using one
  2. Verify transaction actually completed on-chain

🎯 Best Practices

Security

API Key Management

  • Never expose secret keys in client code
  • Use environment variables
  • Rotate keys regularly
  • Use restricted keys with minimal permissions

Transaction Security

  • Always verify recipient addresses
  • Use idempotency keys for retries
  • Implement transaction limits
  • Monitor for unusual patterns

Performance

Optimize API Calls

  • Use batch operations when possible
  • Implement caching for read operations
  • Use webhooks instead of polling
  • Parallelize independent operations

Error Handling

  • Implement proper retry logic
  • Log all errors with context
  • Have fallback mechanisms
  • Monitor error rates

πŸ†˜ Getting Help

Support Channels

Emergency Contacts

Debug Information

When contacting support, include:
const debugInfo = {
  sdk_version: stateset.version,
  api_endpoint: stateset.apiEndpoint,
  timestamp: new Date().toISOString(),
  request_id: response.headers['x-request-id'],
  error_code: error.code,
  error_message: error.message,
  stack_trace: error.stack
};

πŸ“š Additional Resources