Skip to main content
POST /v1/billing/estimate
Returns a plan recommendation and estimated monthly cost based on your expected usage. This is a public endpoint — no authentication is required. Use it to help users choose the right plan during onboarding or on a pricing page.

Request body

country_code
string
ISO 3166-1 alpha-2 country code (e.g., US, NG). Used to determine provider routing and regional pricing.
expected_verifications_monthly
integer
Expected number of verifications per month.
issuers_needed
integer
Number of issuers your organization requires.
webhook_endpoints_needed
integer
Number of webhook endpoints you plan to configure.
storage_gb
integer
Expected storage in gigabytes.
team_seats
integer
Number of team members.
contract_mode
string
Optional contract type: ENTERPRISE_CONTRACT or GOVERNMENT_PROCUREMENT. When set, the estimate automatically recommends the Enterprise plan.

Response

The plan that best fits your requirements (e.g., plan_starter, plan_business).
Add-ons the estimate suggests based on your needs (e.g., extra seats beyond the plan limit).
estimated_monthly_total
number
Projected monthly cost in USD.
currency
string
Currency code (USD).
assumptions
string[]
Notes about the estimate (e.g., volume discounts, custom pricing).
provider_routing
object
Payment provider information for the given country.
curl -X POST https://api.truthlocks.com/v1/billing/estimate \
  -H "Content-Type: application/json" \
  -d '{
    "country_code": "US",
    "expected_verifications_monthly": 10000,
    "team_seats": 5,
    "webhook_endpoints_needed": 5,
    "storage_gb": 10
  }'
{
  "recommended_plan_key": "plan_business",
  "recommended_addons": [],
  "estimated_monthly_total": 99.00,
  "currency": "USD",
  "assumptions": [
    "Estimates based on current list pricing.",
    "Volume discounts may apply for enterprise contracts."
  ],
  "provider_routing": {
    "default_provider": "stripe",
    "visible_providers": ["stripe"]
  }
}
For a detailed line-item breakdown of costs, use the projected invoice endpoint instead.