Skip to content
vocapable.Docs

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", "return_context": { "destination": "billing", "setup_service": "receptionist", "setup_number": "new", "workspace_id": "example", "order_id": "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
return_context
FundingReturnContext
object
destination
Destination
string
default: billing
Allowed values: billing company_setup receptionist_setup agent_setup
setup_service
Any of:
string
Allowed values: receptionist workforce both
setup_number
Any of:
string
Allowed values: new existing twilio
workspace_id
Any of:
string
/^[A-Za-z0-9_:-]{1,100}$/
order_id
Any of:
string
/^[A-Za-z0-9_:-]{1,100}$/

Successful Response

Media typeapplication/json
PrepaidFundingIntent
object
id
required
Id
string
company_id
required
Company 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
return_to
required
Return To
string
can_resume
Can Resume
boolean
recovery_status
Any of:
string
Allowed values: checkout_ready awaiting_settlement expired reconciliation_required
Example
{
"pending": false,
"can_resume": false,
"recovery_status": "checkout_ready"
}

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": {}
}
]
}