Billing

Review billing summaries, invoices, transactions, and plan operations. The examples use A2A code mode. MCP exposes the same code mode through its execute tool.

Functions

billing.current_plan.get

billing.current_plan.get(account_id: str) -> BillingResult
Get the current billing plan.
PropertyValuePropertyValue
Requires permissionbilling.viewAuth requiredyes
Execution modesyncCapabilitybilling.view
Resource typeaccountResource ID fieldaccount_id
Public API routeGET /v1/public/accounts/{account_id}/billing/current-plan
NameTypeRequiredDescription
account_idstryesAccount UUID from the route path
FieldTypeRequiredDescription
billing_periodstryesBilling period for the current plan
currencystryesBilling currency code
plan_idstryesCurrent billing plan ID
plan_namestryesCurrent billing plan name
pricestryesCurrent plan price
statusstryesCurrent plan status
can_cancel_planboolnoWhether the plan can be cancelled
can_change_planboolnoWhether the plan can be changed
Request:
{
  "request_id": "example",
  "session_id": "session_123",
  "code": "billing.current_plan.get(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\")"
}
Response:
{
  "request_id": "example",
  "status": "completed",
  "result": {
    "last_value": true
  },
  "responses": [
    {
      "index": 0,
      "function": "billing.current_plan.get",
      "status": "completed",
      "result": true
    }
  ],
  "complexity_score": 1
}
Request:
{
  "jsonrpc": "2.0",
  "id": "example",
  "method": "tools/call",
  "params": {
    "name": "hybridbox_execute",
    "arguments": {
      "code": "billing.current_plan.get(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\")"
    }
  }
}
Response:
{
  "jsonrpc": "2.0",
  "id": "example",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"request_id\": \"example\",\n  \"status\": \"completed\",\n  \"result\": {\n    \"last_value\": true\n  },\n  \"responses\": [\n    {\n      \"index\": 0,\n      \"function\": \"billing.current_plan.get\",\n      \"status\": \"completed\",\n      \"result\": true\n    }\n  ],\n  \"complexity_score\": 1\n}"
      }
    ],
    "isError": false
  }
}

billing.invoices.list

billing.invoices.list(account_id: str, page?: int, page_size?: int) -> Page[BillingResult]
List billing invoices.
PropertyValuePropertyValue
Requires permissionbilling.viewAuth requiredyes
Execution modesyncCapabilitybilling.view
Resource typeaccountResource ID fieldaccount_id
Public API routeGET /v1/public/accounts/{account_id}/billing/invoices
NameTypeRequiredDescription
account_idstryesAccount UUID from the route path
pageintnoOne-based billing page number
page_sizeintnoMaximum billing records per page
FieldTypeRequiredDescription
items[{"amount": str, "currency": str, "date": str, "download_url": str | null, "id": str, "status": str}]yesInvoices on this page
pageintyesCurrent one-based page number
page_sizeintyesMaximum items per page
totalintyesTotal matching invoices
Request:
{
  "request_id": "example",
  "session_id": "session_123",
  "code": "billing.invoices.list(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", page=123, page_size=123)"
}
Response:
{
  "request_id": "example",
  "status": "completed",
  "result": {
    "last_value": "<string>"
  },
  "responses": [
    {
      "index": 0,
      "function": "billing.invoices.list",
      "status": "completed",
      "result": "<string>"
    }
  ],
  "complexity_score": 1
}
Request:
{
  "jsonrpc": "2.0",
  "id": "example",
  "method": "tools/call",
  "params": {
    "name": "hybridbox_execute",
    "arguments": {
      "code": "billing.invoices.list(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", page=123, page_size=123)"
    }
  }
}
Response:
{
  "jsonrpc": "2.0",
  "id": "example",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"request_id\": \"example\",\n  \"status\": \"completed\",\n  \"result\": {\n    \"last_value\": \"<string>\"\n  },\n  \"responses\": [\n    {\n      \"index\": 0,\n      \"function\": \"billing.invoices.list\",\n      \"status\": \"completed\",\n      \"result\": \"<string>\"\n    }\n  ],\n  \"complexity_score\": 1\n}"
      }
    ],
    "isError": false
  }
}

billing.plan.cancel

billing.plan.cancel(account_id: str, cancel_at_period_end?: bool, cancel_immediately?: bool) -> BillingResult
Cancel billing plan.
PropertyValuePropertyValue
Requires permissionbilling.manageAuth requiredyes
Execution modesyncCapabilitybilling.manage
Resource typeaccountResource ID fieldaccount_id
Public API routePOST /v1/public/accounts/{account_id}/billing/cancel-plan
NameTypeRequiredDescription
account_idstryesAccount UUID from the route path
cancel_at_period_endboolnoCancel the plan at the end of the billing period
cancel_immediatelyboolnoCancel the plan immediately
FieldTypeRequiredDescription
statusstryesBilling operation status
account_statusstr | nullnoAccount status after the operation
effective_atstr | nullnoWhen the billing change took effect
eligiblebool | nullnoWhether the account was eligible for the operation
previous_plan_idstr | nullnoPrevious billing plan ID
target_plan_idstr | nullnoTarget billing plan ID
Request:
{
  "request_id": "example",
  "session_id": "session_123",
  "code": "billing.plan.cancel(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", cancel_at_period_end=true, cancel_immediately=true)"
}
Response:
{
  "request_id": "example",
  "status": "completed",
  "result": {
    "last_value": "<string>"
  },
  "responses": [
    {
      "index": 0,
      "function": "billing.plan.cancel",
      "status": "completed",
      "result": "<string>"
    }
  ],
  "complexity_score": 1
}
Request:
{
  "jsonrpc": "2.0",
  "id": "example",
  "method": "tools/call",
  "params": {
    "name": "hybridbox_execute",
    "arguments": {
      "code": "billing.plan.cancel(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", cancel_at_period_end=true, cancel_immediately=true)"
    }
  }
}
Response:
{
  "jsonrpc": "2.0",
  "id": "example",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"request_id\": \"example\",\n  \"status\": \"completed\",\n  \"result\": {\n    \"last_value\": \"<string>\"\n  },\n  \"responses\": [\n    {\n      \"index\": 0,\n      \"function\": \"billing.plan.cancel\",\n      \"status\": \"completed\",\n      \"result\": \"<string>\"\n    }\n  ],\n  \"complexity_score\": 1\n}"
      }
    ],
    "isError": false
  }
}

billing.plan.change

billing.plan.change(account_id: str, plan_id: "smtp_per_mailbox" | "smtp_per_proxy", effective_date?: str | null) -> BillingResult
Change billing plan.
PropertyValuePropertyValue
Requires permissionbilling.manageAuth requiredyes
Execution modesyncCapabilitybilling.manage
Resource typeaccountResource ID fieldaccount_id
Public API routePOST /v1/public/accounts/{account_id}/billing/change-plan
NameTypeRequiredDescription
account_idstryesAccount UUID from the route path
plan_id"smtp_per_mailbox" | "smtp_per_proxy"yesTarget billing plan ID
effective_datestr | nullnoRequested effective date for the plan change
FieldTypeRequiredDescription
statusstryesBilling operation status
account_statusstr | nullnoAccount status after the operation
effective_atstr | nullnoWhen the billing change took effect
eligiblebool | nullnoWhether the account was eligible for the operation
previous_plan_idstr | nullnoPrevious billing plan ID
target_plan_idstr | nullnoTarget billing plan ID
Request:
{
  "request_id": "example",
  "session_id": "session_123",
  "code": "billing.plan.change(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", plan_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", effective_date=\"<string>\")"
}
Response:
{
  "request_id": "example",
  "status": "completed",
  "result": {
    "last_value": "<string>"
  },
  "responses": [
    {
      "index": 0,
      "function": "billing.plan.change",
      "status": "completed",
      "result": "<string>"
    }
  ],
  "complexity_score": 1
}
Request:
{
  "jsonrpc": "2.0",
  "id": "example",
  "method": "tools/call",
  "params": {
    "name": "hybridbox_execute",
    "arguments": {
      "code": "billing.plan.change(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", plan_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", effective_date=\"<string>\")"
    }
  }
}
Response:
{
  "jsonrpc": "2.0",
  "id": "example",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"request_id\": \"example\",\n  \"status\": \"completed\",\n  \"result\": {\n    \"last_value\": \"<string>\"\n  },\n  \"responses\": [\n    {\n      \"index\": 0,\n      \"function\": \"billing.plan.change\",\n      \"status\": \"completed\",\n      \"result\": \"<string>\"\n    }\n  ],\n  \"complexity_score\": 1\n}"
      }
    ],
    "isError": false
  }
}

billing.transactions.list

billing.transactions.list(account_id: str, page?: int, page_size?: int) -> Page[BillingResult]
List billing transactions.
PropertyValuePropertyValue
Requires permissionbilling.viewAuth requiredyes
Execution modesyncCapabilitybilling.view
Resource typeaccountResource ID fieldaccount_id
Public API routeGET /v1/public/accounts/{account_id}/billing/transactions
NameTypeRequiredDescription
account_idstryesAccount UUID from the route path
pageintnoOne-based billing page number
page_sizeintnoMaximum billing records per page
FieldTypeRequiredDescription
pageintyesCurrent one-based page number
page_sizeintyesMaximum items per page
totalintyesTotal matching wallet transactions
items[{"amount": str, "currency": str, "direction": str, "effective_at": str, "status": str, "transaction_id": str, "type": str, "balance_after"?: str | null, "description"?: str | null, "line_items"?: [{"amount_cents": int, "component_type": str, "currency": str, "description": str, "quantity": str, "source": str, "unit": str, "unit_price_cents": str, "metadata"?: {}, "period_end"?: str | null, "period_start"?: str | null}]}]noWallet transactions on this page
Request:
{
  "request_id": "example",
  "session_id": "session_123",
  "code": "billing.transactions.list(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", page=123, page_size=123)"
}
Response:
{
  "request_id": "example",
  "status": "completed",
  "result": {
    "last_value": 123
  },
  "responses": [
    {
      "index": 0,
      "function": "billing.transactions.list",
      "status": "completed",
      "result": 123
    }
  ],
  "complexity_score": 1
}
Request:
{
  "jsonrpc": "2.0",
  "id": "example",
  "method": "tools/call",
  "params": {
    "name": "hybridbox_execute",
    "arguments": {
      "code": "billing.transactions.list(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\", page=123, page_size=123)"
    }
  }
}
Response:
{
  "jsonrpc": "2.0",
  "id": "example",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"request_id\": \"example\",\n  \"status\": \"completed\",\n  \"result\": {\n    \"last_value\": 123\n  },\n  \"responses\": [\n    {\n      \"index\": 0,\n      \"function\": \"billing.transactions.list\",\n      \"status\": \"completed\",\n      \"result\": 123\n    }\n  ],\n  \"complexity_score\": 1\n}"
      }
    ],
    "isError": false
  }
}

billing.wallet_balance.get

billing.wallet_balance.get(account_id: str) -> BillingResult
Get the billing wallet balance.
PropertyValuePropertyValue
Requires permissionbilling.viewAuth requiredyes
Execution modesyncCapabilitybilling.view
Resource typeaccountResource ID fieldaccount_id
Public API routeGET /v1/public/accounts/{account_id}/billing/wallet-balance
NameTypeRequiredDescription
account_idstryesAccount UUID from the route path
FieldTypeRequiredDescription
accrued_chargesstryesUnbilled accrued charges
balancestryesCurrent wallet balance
currencystryesWallet currency code
net_balancestryesWallet balance after accrued charges
Request:
{
  "request_id": "example",
  "session_id": "session_123",
  "code": "billing.wallet_balance.get(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\")"
}
Response:
{
  "request_id": "example",
  "status": "completed",
  "result": {
    "last_value": {
      "accrued_charges": "<string>",
      "balance": "<string>",
      "currency": "<string>",
      "net_balance": "<string>"
    }
  },
  "responses": [
    {
      "index": 0,
      "function": "billing.wallet_balance.get",
      "status": "completed",
      "result": {
        "accrued_charges": "<string>",
        "balance": "<string>",
        "currency": "<string>",
        "net_balance": "<string>"
      }
    }
  ],
  "complexity_score": 1
}
Request:
{
  "jsonrpc": "2.0",
  "id": "example",
  "method": "tools/call",
  "params": {
    "name": "hybridbox_execute",
    "arguments": {
      "code": "billing.wallet_balance.get(account_id=\"3c90c3cc-0d44-4b50-8888-8dd25736052a\")"
    }
  }
}
Response:
{
  "jsonrpc": "2.0",
  "id": "example",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"request_id\": \"example\",\n  \"status\": \"completed\",\n  \"result\": {\n    \"last_value\": {\n      \"accrued_charges\": \"<string>\",\n      \"balance\": \"<string>\",\n      \"currency\": \"<string>\",\n      \"net_balance\": \"<string>\"\n    }\n  },\n  \"responses\": [\n    {\n      \"index\": 0,\n      \"function\": \"billing.wallet_balance.get\",\n      \"status\": \"completed\",\n      \"result\": {\n        \"accrued_charges\": \"<string>\",\n        \"balance\": \"<string>\",\n        \"currency\": \"<string>\",\n        \"net_balance\": \"<string>\"\n      }\n    }\n  ],\n  \"complexity_score\": 1\n}"
      }
    ],
    "isError": false
  }
}