QBitFlow Documentation

    Complete guide to integrating cryptocurrency payments with QBitFlow

    Subscription Statuses

    Subscriptions have their own set of statuses that indicate the health and state of recurring billing. Understanding these statuses helps you provide the best service to your customers.

    Status Overview

    active

    Healthy

    The subscription is active and functioning normally. Billing cycles are executing successfully, and the customer has sufficient allowance.

    Action Required:

    None - continue providing service

    past_due

    Attention

    The last billing cycle failed. QBitFlow will automatically retry the billing. After a grace period, if billing still fails, the subscription will be cancelled.

    Action Required:

    Monitor the subscription. Notify the customer that billing failed and will be retried. If it transitions back to "active", billing succeeded.

    low_on_funds

    Warning

    The last billing cycle succeeded, but the customer's allowance is running low. The next billing cycle might fail if they don't increase their allowance.

    Action Required:

    Send a reminder email to the customer asking them to increase their allowance via the subscription management page.

    pending

    Critical

    The max amount limit has been reached for this billing cycle. This typically happens when cryptocurrency prices drop significantly. The customer must update their max amount before billing can proceed.

    Action Required:

    Send urgent notification to customer. They must update the max amount via the subscription management page. After grace period, subscription will be cancelled if not updated.

    cancelled

    Inactive

    The subscription has been cancelled either by the customer or automatically due to billing failures after the grace period. This is a final state.

    Action Required:

    Revoke access to the service. Archive subscription data. If customer wants to resume, they need to create a new subscription.

    trial

    Trial Period

    The subscription is in its trial period. No billing occurs during this time. When trial ends, it automatically transitions to "trial_expired".

    Action Required:

    Provide full service access. Optionally remind customer when trial is ending.

    trial_expired

    Action Needed

    The trial period has ended but the customer hasn't upgraded. They can upgrade via the subscription management page. After grace period, will be cancelled.

    Action Required:

    Send email prompting customer to upgrade. Provide link to subscription management page. Consider reducing service access.

    Status Transitions

    Normal Flow

    trial
    active
    active
    ...

    Warning States

    active
    low_on_funds
    active
    (if allowance increased)

    Billing Issues

    active
    past_due
    active
    (if retry succeeds)
    past_due
    cancelled
    (if retry fails after grace period)

    Max Amount Issues

    active
    pending
    active
    (if max amount updated)

    Trial Expiration

    trial
    trial_expired
    active
    (if upgraded)

    Recommended Monitoring Strategy

    1. 1.

      Daily Status Check

      Set up a cron job that runs once daily to fetch all active subscriptions and check their status.

    2. 2.

      Status Change Detection

      Compare current status with previous status. If changed, trigger appropriate actions.

    3. 3.

      Automated Notifications

      Send emails when status becomes "low_on_funds", "pending", or "trial_expired". Include link to management page.

    4. 4.

      Access Control

      Grant/revoke service access based on status. "active" and "trial" = full access. "cancelled" = no access.

    5. 5.

      Grace Period Handling

      For "past_due" and "pending" states, consider maintaining limited access during grace period while notifying customer.

    💡 Pro Tip: Don't wait for webhooks to check subscription status. Subscription billing happens on a schedule, and you should poll status regularly (daily is recommended). This ensures you catch status changes even if a webhook is missed.