Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/maxio:maxio-billing-portal-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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: Maxio Billing Portal API
version: '1.0'
contact:
email: support@maxio.com
description: 'Operations tagged Billing Portal across 2 of this provider''s published API definitions: maxio-advanced-billing-openapi31json.json, maxio-advanced-billing-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{site}.chargify.com
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://{site}.ebilling.maxio.com
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
security:
- BasicAuth: []
tags:
- name: Billing Portal
description: The Billing Portal object allows you to enable, disable, and manage customer access to the self-service Billing Portal, where customers can view invoices and manage their own payment details. For more information, see Understand the Billing Portal.
paths:
/portal/customers/{customer_id}/enable.json:
parameters: []
post:
tags:
- Billing Portal
summary: enableBillingPortalForCustomer
description: 'Enables Billing Portal access for a customer, with an option to send an invitation email at the same time.
## Billing Portal Security
If your customer has been invited to the Billing Portal, they receive a link to manage their subscription (the “Management URL”) automatically at the bottom of their statements, invoices, and receipts. **This link changes periodically for security and is only valid for 65 days.**
If you need to provide your customer their Management URL through other means, you can retrieve it via the API. Because the URL is cryptographically signed with a timestamp, merchants cannot generate the URL without requesting it through the API.
To prevent abuse and overuse, request a new URL only when absolutely necessary. Management URLs are good for 65 days, so you should re-use a previously generated one as much as possible. If you use the URL frequently (such as to display on your website), **do not** make an API request every time.
For more information configuring the Billing Portal, see Billing Portal Overview.'
operationId: enableBillingPortalForCustomer
parameters:
- name: customer_id
in: path
description: The Chargify id of the customer
required: true
schema:
type: integer
contentEncoding: int32
- name: auto_invite
in: query
description: 'When set to 1, an Invitation email will be sent to the Customer.
When set to 0, or not sent, an email will not be sent.
Use in query: `auto_invite=1`.'
style: form
explode: true
schema:
allOf:
- $ref: '#/components/schemas/AutoInvite'
- description: 'When set to 1, an Invitation email will be sent to the Customer.
When set to 0, or not sent, an email will not be sent.
Use in query: `auto_invite=1`.'
responses:
'200':
description: OK
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerResponse'
'422':
description: Unprocessable Entity (WebDAV)
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorListResponse1'
- description: Error which contains list of messages.
examples:
- errors:
- Portal is already enabled for this customer.
contentMediaType: application/json
examples:
Example:
value:
errors:
- Portal is already enabled for this customer.
deprecated: false
servers:
- url: https://{site}.chargify.com
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://{site}.ebilling.maxio.com
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
/portal/customers/{customer_id}/management_link.json:
parameters: []
get:
tags:
- Billing Portal
summary: readBillingPortalLink
description: 'Returns the exact URL required for a subscriber to access the Billing Portal.
## Management Link Request Rules
+ When retrieving a management URL, multiple requests for the same customer in a short period return the **same** URL
+ A new URL is not generated for 15 days
+ You must cache and remember this URL if you are going to need it again within 15 days
+ Only request a new URL after the `new_link_available_at` date
+ You are limited to 15 requests for the same URL. If you make more than 15 requests before `new_link_available_at`, you are blocked from further Management URL requests (with a response code `429`).'
operationId: readBillingPortalLink
parameters:
- name: customer_id
in: path
description: The Chargify id of the customer
required: true
schema:
type: integer
contentEncoding: int32
responses:
'200':
description: OK
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PortalManagementLink'
- examples:
- url: https://www.billingportal.com/manage/19804639/1517596469/bd16498719a7d3e6
fetch_count: 1
created_at: '2018-02-02T18:34:29Z'
new_link_available_at: '2018-02-17T18:34:29Z'
expires_at: '2018-04-08T17:34:29Z'
last_invite_sent_at: '2018-02-02T18:34:29Z'
contentMediaType: application/json
examples:
Example:
value:
url: https://www.billingportal.com/manage/19804639/1517596469/bd16498719a7d3e6
fetch_count: 1
created_at: '2018-02-02T18:34:29Z'
new_link_available_at: '2018-02-17T18:34:29Z'
expires_at: '2018-04-08T17:34:29Z'
last_invite_sent_at: '2018-02-02T18:34:29Z'
'422':
description: Unprocessable Entity (WebDAV)
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorListResponse1'
- description: Error which contains list of messages.
examples:
- errors:
- Billing Portal is not enabled for this customer.
contentMediaType: application/json
examples:
Example:
value:
errors:
- Billing Portal is not enabled for this customer.
'429':
description: Too Many Requests
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/TooManyManagementLinkRequestsError1'
- examples:
- errors:
error: Too many requests for this customer's management link
new_link_available_at: '2023-10-20T10:46:56Z'
contentMediaType: application/json
examples:
Example:
value:
errors:
error: Too many requests for this customer's management link
new_link_available_at: '2023-10-20T10:46:56Z'
deprecated: false
servers:
- url: https://{site}.chargify.com
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://{site}.ebilling.maxio.com
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
/portal/customers/{customer_id}/invitations/invite.json:
parameters: []
post:
tags:
- Billing Portal
summary: resendBillingPortalInvitation
description: 'Resends a customer''s Billing Portal invitation.
If you attempt to resend an invitation 5 times within 30 minutes, you will receive a `422` response with an `error` message in the body.
If you attempt to resend an invitation when the Billing Portal is already disabled for a Customer, you will receive a `422` error response.
If you attempt to resend an invitation when the Customer does not exist, you will receive a `404` error response.
## Limitations
This endpoint will only return a JSON response.'
operationId: resendBillingPortalInvitation
parameters:
- name: customer_id
in: path
description: The Chargify id of the customer
required: true
schema:
type: integer
contentEncoding: int32
responses:
'200':
description: OK
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ResentInvitation'
- examples:
- last_sent_at: enim Duis esse dolore
last_accepted_at: adipisicing magna do in irure
send_invite_link_text: veniam sit
uninvited_count: 66254678
contentMediaType: application/json
examples:
Example:
value:
last_sent_at: enim Duis esse dolore
last_accepted_at: adipisicing magna do in irure
send_invite_link_text: veniam sit
uninvited_count: 66254678
'404':
description: Not Found
headers: {}
content: {}
'422':
description: Unprocessable Entity (WebDAV)
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ErrorListResponse1'
- description: Error which contains list of messages.
examples:
- errors:
- Too many requests for this customer. You can perform 5 requests within 00:30:00.
contentMediaType: application/json
examples:
Example:
value:
errors:
- Too many requests for this customer. You can perform 5 requests within 00:30:00.
deprecated: false
servers:
- url: https://{site}.chargify.com
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://{site}.ebilling.maxio.com
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
/portal/customers/{customer_id}/invitations/revoke.json:
parameters: []
delete:
tags:
- Billing Portal
summary: revokeBillingPortalAccess
description: 'Revokes a customer''s Billing Portal invitation.
If you attempt to revoke an invitation when the Billing Portal is already disabled for a Customer, you will receive a 422 error response.
## Limitations
This endpoint will only return a JSON response.'
operationId: revokeBillingPortalAccess
parameters:
- name: customer_id
in: path
description: The Chargify id of the customer
required: true
schema:
type: integer
contentEncoding: int32
responses:
'200':
description: OK
headers: {}
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RevokedInvitation'
- examples:
- last_sent_at: Not Invited
last_accepted_at: Invite Revoked
uninvited_count: 8
contentMediaType: application/json
examples:
Example:
value:
last_sent_at: Not Invited
last_accepted_at: Invite Revoked
uninvited_count: 8
deprecated: false
servers:
- url: https://{site}.chargify.com
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Default Advanced Billing environment hosted in US. Valid for the majority of our customers.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://{site}.ebilling.maxio.com
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
- url: https://events.chargify.com/{site}
description: Advanced Billing environment hosted in EU. Use only when you requested EU hosting for your AB account.
variables:
site:
default: subdomain
description: The subdomain for your Advanced Billing site.
components:
schemas:
ErrorListResponse1:
title: ErrorListResponse1
required:
- errors
type: object
properties:
errors:
type: array
items:
type: string
description: ''
description: Error which contains list of messages.
RevokedInvitation:
title: RevokedInvitation
type: object
properties:
last_sent_at:
type: string
last_accepted_at:
type: string
uninvited_count:
type: integer
contentEncoding: int32
ResentInvitation:
title: ResentInvitation
type: object
properties:
last_sent_at:
type: string
deprecated: true
last_accepted_at:
type: string
deprecated: true
send_invite_link_text:
type: string
uninvited_count:
type: integer
contentEncoding: int32
last_invite_sent_at:
type: string
contentEncoding: date-time
examples:
- '2024-01-01T00:30:00-04:00'
last_invite_accepted_at:
type: string
contentEncoding: date-time
examples:
- '2024-01-01T00:35:00-04:00'
AutoInvite:
title: AutoInvite
enum:
- 0
- 1
type: integer
EntityIdentifierKind:
title: EntityIdentifierKind
enum:
- vat_eu
- national_tax
- company_reg
- gln
- duns
- lei
type: string
description: 'The kind of tax or business identifier held by the customer:
- `vat_eu`: an EU VAT number. Requires `vat_country` to be an EU member state code or `GB`.
- `national_tax`: a national tax ID registered outside the EU. Requires `vat_country` to be one of `AL`, `AM`, `AR`, `AU`, `BR`, `CA`, `CH`, `DZ`, `IN`, `MX`, `NO`, `NZ`, or `ZA`.
- `company_reg`: a company registration number, such as a French SIREN. No `vat_country` is required.
- `gln`: a Global Location Number. The value must be 13 digits.
- `duns`: a D-U-N-S Number. The value must be 9 digits.
- `lei`: a Legal Entity Identifier. The value must be 20 characters: 18 letters or digits followed by 2 digits.
A customer holds one identifier at a time. Saving an identifier of a different kind replaces the existing one.'
TooManyManagementLinkRequestsError1:
title: TooManyManagementLinkRequestsError1
required:
- errors
type: object
properties:
errors:
$ref: '#/components/schemas/TooManyManagementLinkRequests'
TooManyManagementLinkRequests:
title: TooManyManagementLinkRequests
required:
- error
- new_link_available_at
type: object
properties:
error:
type: string
new_link_available_at:
type: string
contentEncoding: date-time
PortalManagementLink:
title: PortalManagementLink
type: object
properties:
url:
type: string
fetch_count:
type: integer
contentEncoding: int32
created_at:
type: string
contentEncoding: date-time
new_link_available_at:
type: string
contentEncoding: date-time
expires_at:
type: string
contentEncoding: date-time
last_invite_sent_at:
type:
- string
- 'null'
contentEncoding: date-time
CustomerResponse:
title: CustomerResponse
required:
- customer
type: object
properties:
customer:
$ref: '#/components/schemas/Customer'
Customer:
title: Customer
type: object
properties:
first_name:
type: string
description: The first name of the customer
last_name:
type: string
description: The last name of the customer
email:
type: string
description: The email address of the customer
cc_emails:
type:
- string
- 'null'
description: “A comma-separated list of emails that should be cc’d on all customer communications (e.g., “joe@example.com, sue@example.com”)”
organization:
type:
- string
- 'null'
description: The organization of the customer. If no value, `null` or empty string is provided, `organization` will be populated with the customer's first and last name, separated with a space.
reference:
type:
- string
- 'null'
description: The unique identifier used within your own application for this customer
id:
type: integer
description: The customer ID in Chargify
contentEncoding: int32
created_at:
type: string
description: The timestamp in which the customer object was created in Chargify
contentEncoding: date-time
updated_at:
type: string
description: The timestamp in which the customer object was last edited
contentEncoding: date-time
address:
type:
- string
- 'null'
description: The customer’s shipping street address (e.g., “123 Main St.”)
address_2:
type:
- string
- 'null'
description: Second line of the customer’s shipping address e.g., “Apt. 100”
city:
type:
- string
- 'null'
description: The customer’s shipping address city (e.g., “Boston”)
state:
type:
- string
- 'null'
description: The customer’s shipping address state (e.g., “MA”)
state_name:
type:
- string
- 'null'
description: The customer's full name of state
zip:
type:
- string
- 'null'
description: The customer’s shipping address zip code (e.g., “12345”)
country:
type:
- string
- 'null'
description: The customer shipping address country
country_name:
type:
- string
- 'null'
description: The customer's full name of country
phone:
type:
- string
- 'null'
description: The phone number of the customer
verified:
type:
- boolean
- 'null'
description: Is the customer verified to use ACH as a payment method.
portal_customer_created_at:
type:
- string
- 'null'
description: The timestamp of when the Billing Portal entry was created at for the customer
contentEncoding: date-time
portal_invite_last_sent_at:
type:
- string
- 'null'
description: The timestamp of when the Billing Portal invite was last sent at
contentEncoding: date-time
portal_invite_last_accepted_at:
type:
- string
- 'null'
description: The timestamp of when the Billing Portal invite was last accepted
contentEncoding: date-time
tax_exempt:
type: boolean
description: The tax exempt status for the customer. Acceptable values are true or 1 for true and false or 0 for false.
surcharging:
type: boolean
description: Whether surcharging is enabled for the customer. Only included on sites where surcharging control is enabled.
vat_number:
type:
- string
- 'null'
description: The VAT business identification number for the customer. This number is used to determine VAT tax opt out rules. It is not validated when added or updated on a customer record. Instead, it is validated via VIES before calculating taxes. Only valid business identification numbers will allow for VAT opt out. When the customer holds an entity identifier, this field returns that identifier's value, whatever its kind.
vat_country:
type:
- string
- 'null'
description: The two-letter ISO 3166-1 country code that qualifies the customer's VAT number. Set to `null` when an identifier is stored through `entity_identifier_kind` for a kind that is not tied to a VAT country, meaning `company_reg`, `gln`, `duns`, or `lei`.
entity_identifier_kind:
allOf:
- oneOf:
- {}
- $ref: '#/components/schemas/EntityIdentifierKind'
- description: The kind of tax or business identifier held by the customer. Returned as `null` when the customer has no entity identifier, including a legacy customer whose `vat_number` predates entity identifiers.
entity_identifier_value:
type:
- string
- 'null'
description: The value of the customer's tax or business identifier. Returned as `null` when the customer has no entity identifier.
parent_id:
type:
- integer
- 'null'
description: The parent ID in Chargify if applicable. Parent is another Customer object.
contentEncoding: int32
locale:
type:
- string
- 'null'
description: The locale for the customer to identify language-region
default_subscription_group_uid:
type:
- string
- 'null'
salesforce_id:
type:
- string
- 'null'
description: The Salesforce ID for the customer
tax_exempt_reason:
type:
- string
- 'null'
description: The Tax Exemption Reason Code for the customer
default_auto_renewal_profile_id:
type:
- integer
- 'null'
description: The default auto-renewal profile ID for the customer
contentEncoding: int32
maxioid:
type:
- string
- 'null'
description: The Maxio-generated unique identifier for the customer.
branding_theme_id:
type:
- integer
- 'null'
description: The ID of the Branding Theme assigned to this customer as the customer's default Branding Theme. This customer-level Branding Theme is used when a subscription does not have its own subscription-level Branding Theme. Available only when Branding Themes are enabled for the site.
contentEncoding: int32
securitySchemes:
BasicAuth:
type: http
description: The `username` is a Maxio Chargify API key. The `password` is `x`.
scheme: basic
x-refined-from:
- maxio-advanced-billing-openapi31json.json
- maxio-advanced-billing-openapi.yml
x-provenance:
method: harvested
publisher: Maxio
source: https://developers.maxio.com/static/exports/maxio-advanced-billing-openapi31json.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)