Skip to content

Open Stripe Checkout for manual prepaid managed-call credit

POST
/v1/billing/prepaid/funding-intents
curl --request POST \
--url https://api.vocapable.com/v1/billing/prepaid/funding-intents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "amount_minor": 1, "currency": "usd", "idempotency_key": "example" }'

Create/recover one funding intent, then ask Stripe for its hosted Checkout URL.

A transport timeout deliberately returns 202 without rolling the new intent back. Stripe may have accepted the request, so retrying the same key reuses the local intent id and Stripe idempotency key instead of risking a second charge.

Media typeapplication/json
PrepaidFundingRequest

One manual top-up. The browser supplies no price id or currency conversion.

object
amount_minor
required
Amount Minor
integer
>= 1
currency
Currency
string
default: usd
Allowed value: usd
idempotency_key
required
Idempotency Key
string
>= 8 characters <= 160 characters

Successful Response

Media typeapplication/json
PrepaidFundingIntent
object
id
required
Id
string
amount_minor
required
Amount Minor
integer
currency
required
Currency
string
status
required
Status
string
checkout_url
Any of:
string
expires_at
Any of:
string format: date-time
pending
Pending
boolean
Example
{
"pending": false
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}