Skip to main content
The plans module handles payment plan creation, ordering, and balance management.

Methods

create_plan

Create a new payment plan.
result = payments.plans.create_plan(
    agent_id=agent_id,
    name='Pro Plan',
    description='100 queries',
    price_config=price_config,
    credits_config=credits_config,
    access_limit='credits'
)
plan_id = result['planId']
Example:
from payments_py.plans import get_erc20_price_config, get_fixed_credits_config

result = payments.plans.create_plan(
    agent_id='did:nv:agent-123',
    name='Pro Plan',
    description='100 queries for $10',
    price_config=get_erc20_price_config(10_000_000, usdc_address, builder_address),
    credits_config=get_fixed_credits_config(100, 1),
    access_limit='credits'
)

order_plan

Purchase a plan with cryptocurrency.
result = payments.plans.order_plan(plan_id)
tx_hash = result['transactionHash']

order_fiat_plan

Purchase a plan with fiat currency (Stripe).
result = payments.plans.order_fiat_plan(plan_id)
checkout_url = result['url']
# Redirect user to Stripe

get_plan_balance

Check remaining balance for a plan.
balance = payments.plans.get_plan_balance(plan_id)
credits_remaining = balance['credits']

register_credits_trial_plan

Create a free trial plan with credits.
result = payments.plans.register_credits_trial_plan(
    agent_id=agent_id,
    name='Free Trial',
    description='10 free queries',
    credits=10,
    credits_per_request=1
)

register_time_trial_plan

Create a free trial plan with time limit.
result = payments.plans.register_time_trial_plan(
    agent_id=agent_id,
    name='7-Day Trial',
    description='Full access for 7 days',
    duration=7 * 24 * 60 * 60  # seconds
)

Price Configuration Helpers

get_erc20_price_config

Configure ERC-20 token pricing.
from payments_py.plans import get_erc20_price_config

config = get_erc20_price_config(
    10_000_000,                    # amount (with decimals)
    '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',  # token address
    '0xYour...Address'             # receiver address
)

get_native_price_config

Configure native token pricing (ETH, etc.).
from payments_py.plans import get_native_price_config

config = get_native_price_config(
    1_000_000_000_000_000,  # 0.001 ETH
    '0xYour...Address'
)

Credits Configuration Helpers

get_fixed_credits_config

Fixed credits per purchase.
from payments_py.plans import get_fixed_credits_config

config = get_fixed_credits_config(
    100,  # total credits
    1     # credits per request
)

get_dynamic_credits_config

Variable credits per request.
from payments_py.plans import get_dynamic_credits_config

config = get_dynamic_credits_config(
    1,   # minimum per request
    10   # maximum per request
)

get_time_based_config

Time-based access configuration.
from payments_py.plans import get_time_based_config

config = get_time_based_config(
    30 * 24 * 60 * 60  # 30 days in seconds
)

Types

# Create plan parameters
{
    'agent_id': str,
    'name': str,
    'description': str,  # Optional
    'price_config': dict,
    'credits_config': dict,  # Optional
    'time_config': dict,     # Optional
    'access_limit': str      # 'credits' or 'time'
}

# Order result
{
    'transactionHash': str,
    'agreementId': str,
    'success': bool
}

# Balance
{
    'credits': int,
    'expiresAt': str,  # Optional, ISO timestamp
    'isActive': bool
}

Next Steps