Create Credit Entitlement

Create a new credit entitlement for the authenticated business.

Each entitlement defines how credits behave in terms of expiration, rollover, and overage.

Business Logic

  • A unique ID with prefix cde_ is automatically generated for the entitlement
  • Created and updated timestamps are automatically set
  • Currency is required when price_per_unit is set
  • price_per_unit is required when overage_enabled is true
  • rollover_timeframe_count and rollover_timeframe_interval must both be set or both be null

Request

use dodopayments_rust::{
    models::CreateCreditEntitlementRequest, to_pretty_json, DodoPaymentsClientBuilder,
};
#[tokio::main]

async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = std::env::var("DODO_API_KEY")?;

    let client = DodoPaymentsClientBuilder::new()
        .bearer_token(&api_key)
        .enviroment("test_mode")
        .build()?;

    let resp = client
        .credit_entitlements()
        .create()
        .body(CreateCreditEntitlementRequest {
            name: "Basic Credits".to_string(),
            description: Some("Monthly credit allocation".to_string()),
            unit: "credits".to_string(),
            price_per_unit: Some("1.00".to_string()),
            ..Default::default()
        })
        .send()
        .await?;

    println!("{}", to_pretty_json(&resp)?);

    Ok(())
}

Body

FieldTypeDescription
currencyobject
descriptionobjectOptional description of the credit entitlement
expires_after_daysobjectNumber of days after which credits expire (optional)
max_rollover_countobjectMaximum number of times credits can be rolled over
namestringName of the credit entitlement
overage_behaviorobject
overage_enabledbooleanWhether overage charges are enabled when credits run out
overage_limitobjectMaximum overage units allowed (optional)
precisionintegerPrecision for credit amounts (0-10 decimal places)
price_per_unitobjectPrice per credit unit
rollover_enabledbooleanWhether rollover is enabled for unused credits
rollover_percentageobjectPercentage of unused credits that can rollover (0-100)
rollover_timeframe_countobjectCount of timeframe periods for rollover limit
rollover_timeframe_intervalobject
unitstringUnit of measurement for the credit (e.g., "API Calls", "Tokens", "Credits")

Responses

201 Status

Credit entitlement created successfully

FieldTypeDescription
business_idstring-
created_atstring-
currencyobject-
descriptionobject-
expires_after_daysobject-
idstring-
max_rollover_countobject-
namestring-
overage_behaviorobjectControls how overage is handled at billing cycle end.
overage_enabledboolean-
overage_limitobject-
precisioninteger-
price_per_unitobjectPrice per credit unit
rollover_enabledboolean-
rollover_percentageobject-
rollover_timeframe_countobject-
rollover_timeframe_intervalobject-
unitstring-
updated_atstring-

422 Status

Invalid Request Object or Parameters

500 Status

Something went wrong :(