betteroff-finance Billing API
The billing API from betteroff-finance — 10 operation(s) for billing.
The billing API from betteroff-finance — 10 operation(s) for billing.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/betteroff-finance:betteroff-finance-billing-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: BetterOff Billing API
version: 0.5.0+cd65185c
servers:
- url: https://api.betteroff.finance
tags:
- name: Billing
paths:
/billing/details:
get:
operationId: getBillingDetails
tags:
- Billing
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get billing details
x-summary-source: derived
/billing/checkout-status:
get:
operationId: getBillingCheckoutStatus
tags:
- Billing
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get billing checkout status
x-summary-source: derived
/billing/checkout:
post:
operationId: postBillingCheckout
tags:
- Billing
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
tier:
default: core
type: string
enum:
- core
interval:
type: string
const: monthly
source:
default: app_upgrade
type: string
enum:
- app_upgrade
- post_import
- signup
returnTo:
type: string
enum:
- /connect
- /connect?view=plaid&returnTo=/overview
- /assistant
- /money
- /settings
- /settings#billing
- /settings#documents
- /settings/imessage
- /recurring/bills
- /checklist
- /todo
- /taxes
- /taxes/planning
surface:
type: string
enum:
- chat_subscription_paywall
- ai_usage_banner
- connection_gate
- money_gate
- export_gate
- settings_billing
- connect_bank_gate
- connect_plan_notice
- imessage_gate
- overview_core_rail
- household_invite_gate
- recurring_gate
- checklist_gate
- todo_gate
- tax_planning_gate
- cashflow_gate
- debts_gate
promoCode:
type: string
minLength: 1
maxLength: 64
pattern: ^[A-Za-z0-9_-]+$
reward:
type: boolean
const: true
required:
- interval
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post billing checkout
x-summary-source: derived
/billing/assistant-boost:
post:
operationId: postBillingAssistantBoost
tags:
- Billing
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
checkoutAttemptId:
type: string
minLength: 16
maxLength: 128
pattern: ^[A-Za-z0-9_-]+$
required:
- checkoutAttemptId
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post billing assistant boost
x-summary-source: derived
/billing/taxes:
post:
operationId: postBillingTaxes
tags:
- Billing
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
taxYear:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
checkoutAttemptId:
type: string
minLength: 16
maxLength: 128
pattern: ^[A-Za-z0-9_-]+$
required:
- taxYear
- checkoutAttemptId
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post billing taxes
x-summary-source: derived
/billing/cancel-intent:
post:
operationId: postBillingCancelIntent
tags:
- Billing
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
step:
type: string
enum:
- opened
- continued
reason:
type: string
enum:
- too_expensive
- not_using_it
- missing_something
- switching_tool
- sync_problems
- temporary
- other
interval:
type: string
enum:
- monthly
required:
- step
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post billing cancel intent
x-summary-source: derived
/billing/pause:
post:
operationId: postBillingPause
tags:
- Billing
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post billing pause
x-summary-source: derived
/billing/portal:
get:
operationId: getBillingPortal
tags:
- Billing
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get billing portal
x-summary-source: derived
/billing/subscription:
get:
operationId: getBillingSubscription
tags:
- Billing
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get billing subscription
x-summary-source: derived
/billing/comp-claim:
post:
operationId: postBillingCompClaim
tags:
- Billing
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
token:
type: string
required:
- token
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post billing comp claim
x-summary-source: derived
components:
schemas:
ProblemDetails:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
type:
type: string
description: Always "about:blank"; branch on `code`.
title:
type: string
status:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
detail:
type: string
code:
type: string
description: Stable UPPER_SNAKE code.
error:
type: string
description: Older clients' copy of `detail`.
message:
type: string
description: Older clients' copy of `detail`.
requestId:
description: Diagnostic only; quote it to support.
type: string
instance:
type: string
details:
type: object
propertyNames:
type: string
additionalProperties: {}
required:
- type
- title
- status
- detail
- code
- error
- message
additionalProperties: {}
description: RFC 9457 problem details. Some refusals add fields; ignore ones you don't know.
securitySchemes:
session:
type: http
scheme: bearer
description: 'The BetterOff app acting for its signed-in user. Not available to integrations: Better Auth session tokens and browser session cookies are rejected. Use an API token or agent OAuth.'
apiToken:
type: http
scheme: bearer
description: Personal API token (bo_pat_), created in BetterOff settings with the scopes it may use.
agentOAuth:
type: openIdConnect
openIdConnectUrl: https://app.betteroff.finance/api/auth/.well-known/openid-configuration
description: Agent OAuth grant; the same token and scopes as /mcp.