Skip to main content

Payments Management Commands

Commands for managing payments, currencies, providers, and transactions.

Currency Management

currency_stats

Display currency statistics and usage metrics.

python manage.py currency_stats [OPTIONS]

Options:

  • --format [json|yaml|table] - Output format (default: table)

Examples:

# Show currency stats
python manage.py currency_stats

# Export as JSON
python manage.py currency_stats --format json

# Export as YAML
python manage.py currency_stats --format yaml

manage_currencies

Manage payment currencies.

python manage.py manage_currencies [ACTION] [OPTIONS]

Actions:

  • list - List all currencies
  • add - Add new currency
  • update - Update currency
  • remove - Remove currency

Options:

  • --code TEXT - Currency code (BTC, ETH, USD, etc.)
  • --name TEXT - Currency name
  • --network TEXT - Network for crypto currencies

Examples:

# List all currencies
python manage.py manage_currencies list

# Add fiat currency
python manage.py manage_currencies add --code USD --name "US Dollar"

# Add crypto currency
python manage.py manage_currencies add --code BTC --name Bitcoin

# Add crypto with network
python manage.py manage_currencies add --code USDT --name "Tether" --network TRC20

# Update currency
python manage.py manage_currencies update --code BTC --name "Bitcoin (Updated)"

# Remove currency
python manage.py manage_currencies remove --code DOGE

Provider Management

manage_providers

Manage payment providers and their configurations.

python manage.py manage_providers [ACTION] [OPTIONS]

Actions:

  • list - List all providers
  • add - Add new provider
  • update - Update provider
  • remove - Remove provider

Options:

  • --name TEXT - Provider name
  • --type TEXT - Provider type (crypto, fiat)
  • --api-key TEXT - API key

Examples:

# List all providers
python manage.py manage_providers list

# Add crypto provider
python manage.py manage_providers add \
--name NowPayments \
--type crypto

# Add fiat provider
python manage.py manage_providers add \
--name Stripe \
--type fiat

# Update provider API key
python manage.py manage_providers update \
--name Stripe \
--api-key sk_live_new_key

# Remove provider
python manage.py manage_providers remove --name PayPal

test_providers

Test payment provider integrations.

python manage.py test_providers [OPTIONS]

Options:

  • --provider TEXT - Specific provider to test

Examples:

# Test all providers
python manage.py test_providers

# Test specific provider
python manage.py test_providers --provider nowpayments

# Test Stripe
python manage.py test_providers --provider stripe

Output:

🚀 Testing payment providers...

✅ NowPayments - Connection successful
API Status: Active
Supported currencies: 150+

✅ Stripe - Connection successful
API Status: Active
Account: live_mode

❌ PayPal - Connection failed
Error: Invalid API credentials

Payment Processing

process_pending_payments

Process pending payment transactions.

python manage.py process_pending_payments [OPTIONS]

Options:

  • --limit INTEGER - Maximum payments to process

Examples:

# Process all pending payments
python manage.py process_pending_payments

# Process up to 100 payments
python manage.py process_pending_payments --limit 100

# Process up to 10 (testing)
python manage.py process_pending_payments --limit 10

Cron Setup:

# Process every 5 minutes
*/5 * * * * cd /path/to/project && python manage.py process_pending_payments

# Process every minute (high volume)
* * * * * cd /path/to/project && python manage.py process_pending_payments --limit 50

Data Management

cleanup_expired_data

Cleanup expired payment data and old records.

python manage.py cleanup_expired_data [OPTIONS]

Options:

  • --days INTEGER - Days to keep (default: 90)
  • --dry-run - Show what would be deleted

Examples:

# Cleanup data older than 90 days (default)
python manage.py cleanup_expired_data

# Keep only last 30 days
python manage.py cleanup_expired_data --days 30

# Keep last 180 days
python manage.py cleanup_expired_data --days 180

# Dry run to see what would be deleted
python manage.py cleanup_expired_data --dry-run

# Dry run for 30 days
python manage.py cleanup_expired_data --days 30 --dry-run

Cron Setup:

# Daily cleanup at 3 AM
0 3 * * * cd /path/to/project && python manage.py cleanup_expired_data

# Weekly cleanup (Sundays at 2 AM)
0 2 * * 0 cd /path/to/project && python manage.py cleanup_expired_data --days 60

Common Workflows

Initial Payment Setup

# 1. Add currencies
python manage.py manage_currencies add --code BTC --name Bitcoin
python manage.py manage_currencies add --code ETH --name Ethereum
python manage.py manage_currencies add --code USDT --name Tether --network TRC20

# 2. Add providers
python manage.py manage_providers add --name NowPayments --type crypto
python manage.py manage_providers add --name Stripe --type fiat

# 3. Test providers
python manage.py test_providers

# 4. Check stats
python manage.py currency_stats

Add New Crypto Currency

# 1. Add currency with network
python manage.py manage_currencies add \
--code USDC \
--name "USD Coin" \
--network ERC20

# 2. Verify addition
python manage.py manage_currencies list

# 3. Test payment flow
python manage.py test_providers --provider nowpayments

Production Maintenance

# 1. Process pending payments
python manage.py process_pending_payments

# 2. Check currency stats
python manage.py currency_stats

# 3. Cleanup old data
python manage.py cleanup_expired_data --dry-run
python manage.py cleanup_expired_data

Configuration

Django Configuration

# config.py
class MyConfig(DjangoConfig):
# Enable payments app
enable_payments: bool = True

# Provider API keys
nowpayments_api_key: str = env.payments.nowpayments_key
stripe_api_key: str = env.payments.stripe_key

Environment Variables

# config.dev.yaml
payments:
nowpayments_key: "your_nowpayments_api_key"
stripe_key: "sk_test_..."

Best Practices

1. Always Test Providers First

# Test before going live
python manage.py test_providers

2. Regular Payment Processing

# Setup cron for automatic processing
*/5 * * * * python manage.py process_pending_payments

3. Monitor Currency Stats

# Export stats for monitoring
python manage.py currency_stats --format json > /var/log/currency_stats.json

4. Use Dry Run for Cleanup

# Always check before deleting
python manage.py cleanup_expired_data --dry-run

5. Keep Reasonable Data Retention

# Balance between storage and audit needs
# 90 days for regular transactions
# 365 days for compliance requirements
python manage.py cleanup_expired_data --days 365

Monitoring

Payment Processing Metrics

# Check processing status
python manage.py currency_stats

# Export for monitoring
python manage.py currency_stats --format json | \
jq '{total_payments, successful_payments, failed_payments}'

Provider Health Check

# Regular provider testing
0 * * * * python manage.py test_providers > /var/log/provider_health.log

Storage Monitoring

# Monitor data growth
python manage.py currency_stats --format json | \
jq '.storage_used_mb'

Troubleshooting

Provider Connection Failed

# Test specific provider
python manage.py test_providers --provider stripe

# Check API keys in config
python manage.py show_config --section payments

Pending Payments Not Processing

# Check payment status
python manage.py currency_stats

# Manually trigger processing
python manage.py process_pending_payments --limit 10

Cleanup Issues

# Dry run first
python manage.py cleanup_expired_data --dry-run

# Check database space
python manage.py currency_stats


Payments made easy! 💳