Skip to content

Stripe: Create a credit grant

Stripe billing.postBillingCreditGrants: arguments, response, policy and SDK examples.

← Billing operations · Get started

Operation stripe.postbillingcreditgrants

Provider route: POST /v1/billing/credit_grants. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["billing"]["postBillingCreditGrants"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.billing.postBillingCreditGrants(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.billing.post_billing_credit_grants(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectRequired within parentAdditional keys: not allowed
body.amountobjectRequired within parentAmount of this credit grant.
body.amount.monetaryobjectOptional
body.amount.monetary.currencystringRequired within parentFormat: currency
body.amount.monetary.valueintegerRequired within parent
body.amount.typestringRequired within parentOne of: monetary
body.applicability_configobjectRequired within parentConfiguration specifying what this credit grant applies to. We currently only support `metered` prices that have a [Billing Meter](https://docs.stripe.com/api/billing/meter) attached to them.
body.applicability_config.scopeobjectRequired within parent
body.applicability_config.scope.price_typestringOptionalOne of: metered
body.applicability_config.scope.pricesarrayOptional
body.applicability_config.scope.prices[]objectEach item
body.applicability_config.scope.prices[].idstringRequired within parentMaximum length: 5000
body.categorystringOptionalThe category of this credit grant. It defaults to `paid` if not specified.
One of: paid, promotional
body.customerstringOptionalID of the customer receiving the billing credits.
Maximum length: 5000
body.customer_accountstringOptionalID of the account representing the customer receiving the billing credits.
Maximum length: 5000
body.effective_atintegerOptionalThe time when the billing credits become effective-when they’re eligible for use. It defaults to the current timestamp if not specified.
Format: unix-time
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.expires_atintegerOptionalThe time when the billing credits expire. If not specified, the billing credits don’t expire.
Format: unix-time
body.metadataobjectOptionalSet of key-value pairs that you can attach to an object. You can use this to store additional information about the object (for example, cost basis) in a structured format.
Additional keys: see wildcard field
body.metadata.*stringAdditional keys
body.namestringOptionalA descriptive name shown in the Dashboard.
Maximum length: 100
body.priorityintegerOptionalThe desired priority for applying this credit grant. If not specified, it will be set to the default value of 50. The highest priority is 0 and the lowest is 100.

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Void a credit grant — response body

Referenced models: Void a credit grant — response body

704 more schemas are linked from the tables above, on the schema pages.

Void a credit grant — response body
FieldTypePresenceDescription and constraints
$objectRootA credit grant is an API resource that documents the allocation of some billing credits to a customer.

Related guide: [Billing credits](https://docs.stripe.com/billing/subscriptions/usage-based/billing-credits)
amountModelRequired within parentExpand Void a credit grant — response body — amount
applicability_configModelRequired within parentExpand Void a credit grant — response body — applicability config
categorystringRequired within parentThe category of this credit grant. This is for tracking purposes and isn't displayed to the customer.
Known values: paid, promotional
createdJSONRequired within parent
created (anyOf 1)integerAlternativeTime at which the object was created. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
customerJSONRequired within parentID of the customer receiving the billing credits.
customer (anyOf 1)stringAlternativeMaximum length: 5000
customer (anyOf 2)ModelAlternativeExpand Create a customer — response body
customer (anyOf 3)ModelAlternativeExpand Delete a customer — response body
customer_accountJSONOptional
customer_account (anyOf 1)stringAlternativeID of the account representing the customer receiving the billing credits
Maximum length: 5000
customer_account (anyOf 2)nullAlternative
effective_atJSONOptional
effective_at (anyOf 1)JSONAlternative
effective_at (anyOf 1) (anyOf 1)integerAlternativeThe time when the billing credits become effective-when they're eligible for use.
Format: unix-time
effective_at (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
effective_at (anyOf 2)nullAlternative
expires_atJSONOptional
expires_at (anyOf 1)JSONAlternative
expires_at (anyOf 1) (anyOf 1)integerAlternativeThe time when the billing credits expire. If not present, the billing credits don't expire.
Format: unix-time
expires_at (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
expires_at (anyOf 2)nullAlternative
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
metadataobjectRequired within parentSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
Additional keys: see wildcard field
metadata.*stringAdditional keysMaximum length: 500
nameJSONOptional
name (anyOf 1)stringAlternativeA descriptive name shown in dashboard.
Maximum length: 5000
name (anyOf 2)nullAlternative
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: billing.credit_grant
priorityJSONOptional
priority (anyOf 1)JSONAlternative
priority (anyOf 1) (anyOf 1)integerAlternativeThe priority for applying this credit grant. The highest priority is 0 and the lowest is 100.
priority (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
priority (anyOf 2)nullAlternative
test_clockJSONOptional
test_clock (anyOf 1)JSONAlternativeID of the test clock this credit grant belongs to.
test_clock (anyOf 1) (anyOf 1)stringAlternativeMaximum length: 5000
test_clock (anyOf 1) (anyOf 2)ModelAlternativeExpand Create a test clock — response body
test_clock (anyOf 2)nullAlternative
updatedJSONRequired within parent
updated (anyOf 1)integerAlternativeTime at which the object was last updated. Measured in seconds since the Unix epoch.
Format: unix-time
updated (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
voided_atJSONOptional
voided_at (anyOf 1)JSONAlternative
voided_at (anyOf 1) (anyOf 1)integerAlternativeThe time when this credit grant was voided. If not present, the credit grant hasn't been voided.
Format: unix-time
voided_at (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
voided_at (anyOf 2)nullAlternative

Referenced models: Void a credit grant — response body — amount, Void a credit grant — response body — applicability config, Create a customer — response body, Delete a customer — response body, Create a test clock — response body

Void a credit grant — response body — amount
FieldTypePresenceDescription and constraints
$objectRoot
monetaryJSONOptional
monetary (anyOf 1)JSONAlternativeThe monetary amount.
monetary (anyOf 1) (anyOf 1)ModelAlternativeExpand Void a credit grant — response body — amount monetary The monetary amount currency, value
monetary (anyOf 2)nullAlternative
typestringRequired within parentThe type of this amount. We currently only support `monetary` billing credits.
Known values: monetary

Referenced models: Void a credit grant — response body — amount monetary The monetary amount currency, value

Void a credit grant — response body — applicability config
FieldTypePresenceDescription and constraints
$objectRoot
scopeModelRequired within parentExpand Void a credit grant — response body — applicability config scope

Referenced models: Void a credit grant — response body — applicability config scope

Delete a customer — response body
FieldTypePresenceDescription and constraints
$objectRoot
deletedbooleanRequired within parentAlways true for a deleted object
Known values: True
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: customer
Create a test clock — response body
FieldTypePresenceDescription and constraints
$objectRootA test clock enables deterministic control over objects in testmode. With a test clock, you can create
objects at a frozen time in the past or future, and advance to a specific future time to observe webhooks and state changes. After the clock advances,
you can either validate the current state of your scenario (and test your assumptions), change the current state of your scenario (and test more complex scenarios), or keep advancing forward in time.
createdJSONRequired within parent
created (anyOf 1)integerAlternativeTime at which the object was created. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
deletes_afterJSONRequired within parent
deletes_after (anyOf 1)integerAlternativeTime at which this clock is scheduled to auto delete.
Format: unix-time
deletes_after (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
frozen_timeJSONRequired within parent
frozen_time (anyOf 1)integerAlternativeTime at which all objects belonging to this clock are frozen.
Format: unix-time
frozen_time (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
nameJSONOptional
name (anyOf 1)stringAlternativeThe custom name supplied at creation.
Maximum length: 5000
name (anyOf 2)nullAlternative
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: test_helpers.test_clock
statusstringRequired within parentThe status of the Test Clock.
Known values: advancing, internal_failure, ready
status_detailsModelRequired within parentExpand Create a test clock — response body — status details

Referenced models: Create a test clock — response body — status details

SDK function policy ID: stripe.postbillingcreditgrants. Catalog operation: PostBillingCreditGrants. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.