Record the payment method saved on the setup page

post/v1/teams/{team_id}/billing/payment-method/sync
Requires an API key

The team's owners, admins and billing members, and Ivora administrators; API keys are refused. Reads the setup page's outcome and the team's default card from Stripe and records its summary. A replaced card is removed. Safe to repeat.

Path parameters

  • team_idstringRequired
    Pattern ^team_[0-9a-f]{32}$

Returns · 200

  • idstringRequired
    The team ID (team_...), as in GET /v1/me/teams.
  • namestringRequired
  • rate_cents_per_kwhstringRequired
    The team's default usage fee in US cents per kWh, a decimal string (default 1.00).
  • currencystring
    Default "usd"
  • invoicingstring
    Default "monthly"
  • statusenumRequired
    As a project's billing profile shows it (the bench exemption is per project and not shown here).
    One of active, grace, past_due, payment_method_required, waived, exempt, discounted, enterprise, suspended
  • csms_setup_allowedbooleanRequired
    Whether new CSMS setup and control are allowed in the team's projects.
  • waivedbooleanRequired
  • discount_percentinteger
    The team's discount in percent (0 to 100, default 0), set by Ivora: its monthly invoice shows usage at the normal rate, discounted. 100 needs no payment method but is still invoiced (at $0); a waived team gets no invoice at all.
    Default 0 · Minimum 0 · Maximum 100
  • exemptstring | null
    internal: an Ivora internal team, exempt from the requirement.
  • grace_ends_atstring | null
  • past_due_sincestring | null
  • payment_methodobject | null
    The team's default card.
    Child attributes
    • brandstring | null
      Card brand, such as visa.
    • last4string | null
    • exp_monthinteger | null
    • exp_yearinteger | null
    • expiredbooleanRequired
      The card's expiry month has passed; an expired card does not count as a payment method on file.
  • billing_modeenum
    self_serve: the card on file is charged automatically. enterprise (set by Ivora): a monthly invoice with net terms, paid by bank debit, bank transfer or as invoice_terms allow; no card needed.
    One of self_serve, enterprise · Default "self_serve"
  • invoice_termsobject | null
    enterprise only.
    Child attributes
    • net_terms_daysintegerRequired
      Invoices are due this many days after they are sent.
    • payment_methodsarray of stringRequired
      How an invoice can be paid: us_bank_account (ACH debit), customer_balance (bank transfer: ACH credit or wire), acss_debit (Canadian pre-authorized debit in USD), card. Every invoice is in USD.
    • collectionenumRequired
      auto_debit: the verified bank account is debited on the due date. invoice_only: pay each invoice by its due date.
      One of auto_debit, invoice_only
    • po_numberstring | null
    • billing_emailsarray of string
      Billing contacts; Stripe sends the invoice to the first.
    • legal_namestring | null
  • bank_accountobject | null
    The team's bank account for enterprise invoices (ACH or pre-authorized debit).
    Child attributes
    • typeenumRequired
      us_bank_account: ACH Direct Debit (US). acss_debit: Canadian pre-authorized debit, in US dollars (a USD account at a Canadian bank).
      One of us_bank_account, acss_debit
    • bank_namestring | null
    • last4string | null
    • statusenumRequired
      verified: the mandate is active and an enterprise invoice is debited on its due date. pending_verification: confirm the microdeposits Stripe sent before it can be debited.
      One of verified, pending_verification
  • bank_transferobject | null
    enterprise (usd) only: where to send an ACH credit or wire; null until the first enterprise invoice or Ivora set the mode.
    Child attributes
    • currencystring
      Default "usd"
    • typestring
      Default "us_bank_transfer"
    • financial_addressesarray of BankTransferAddressRequired
      The team's own virtual account at Stripe: an ACH credit or wire to it pays the team's open invoices.
      Child attributes
      • typestringRequired
        aba (ACH credit and domestic wire) or swift (international wire).
      • bank_namestring | null
      • account_numberstring | null
      • routing_numberstring | null
      • swift_codestring | null
      • account_holder_namestring | null
  • setup_pendingbooleanRequired
  • payment_modeenumRequired
    Stripe mode of Ivora's platform account here; only production is live.
    One of test, live
  • updated_atstring | null
  • projectsarray of TeamBillingProjectRequired
    Every project of the team, by tenant ID; one invoice per team per month with a line per project.
    Child attributes
    • tenant_idintegerRequired
      The project's tenant ID.
    • namestring | null
      The tenant's name in the charging core; null when the core did not answer.
    • rate_cents_per_kwhstringRequired
      The project's effective rate: its override, else the team's.
    • rate_sourceenumRequired
      One of team, project
    • current_monthobject | null
      The project's usage so far this UTC calendar month and its estimated usage fee, by the monthly invoice's rule; null when the CSMS cannot be read right now.
      Child attributes
      • periodstringRequired
        The current UTC calendar month, YYYY-MM.
      • period_startstringRequired
        Start of the month in UTC (inclusive), such as 2026-10-01T00:00:00+00:00.
      • period_endstringRequired
        Start of the next month in UTC (exclusive).
      • billable_fromstringRequired
        When the team's usage starts to be billed: the later of the usage fee's release and the end of the team's grace period. Sessions that ended before it are never invoiced.
      • energy_kwhstringRequired
        kWh of the project's completed charging sessions that ended this month (each session's whole energy, as the invoice counts it), a decimal string as the core records kWh, such as "6.941"; "0" without sessions. Sessions still running count when they end.
      • transactionsintegerRequired
        Number of those charging sessions (transactions).
      • billable_kwhstringRequired
        The part of energy_kwh that ended at or after billable_from: what the invoice bills.
      • billable_transactionsintegerRequired
      • held_transactionsintegerRequired
        Billable sessions with an implausible reading (negative or above 1000 kWh), left out of the estimate; they hold the team's invoice until Ivora corrects them.
      • invoicedbooleanRequired
        False when this usage is not invoiced: see not_invoiced_reason; estimated_minor is then 0.
      • not_invoiced_reasonenum | nullRequired
        internal: an Ivora internal team. bench: Ivora's test bench project. waived: the team's fee is waived. grace: the team's grace period runs until billable_from.
        One of internal, bench, waived, grace
      • rate_cents_per_kwhstringRequired
        The project's effective rate the estimate uses.
      • usage_minorintegerRequired
        The project's invoice line so far in US cents: billable_kwh x rate_cents_per_kwh, rounded half up.
      • discount_percentintegerRequired
        The team's discount the estimate applies.
        Minimum 0 · Maximum 100
      • discount_minorintegerRequired
        usage_minor x discount_percent / 100, rounded half up. The invoice rounds the discount once over all of the team's projects, so it can differ by a cent.
      • estimated_minorintegerRequired
        Estimated usage fee so far this month in US cents: usage_minor - discount_minor. The team's whole month (every project and any carried balance) is GET /v1/tenants/{tenant_id}/billing-profile/usage; the monthly invoice is final.
      • currencystring
        Default "usd"
      • as_ofstringRequired
        When the usage was read from the CSMS; reads are cached up to 60 seconds.
POST /v1/teams/{team_id}/billing/payment-method/sync
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/teams/team_0123456789abcdef0123456789abcdef/billing/payment-method/sync" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200
{
  "id": "id_0123456789abcdef",
  "name": "bay-01",
  "rate_cents_per_kwh": "string",
  "currency": "usd",
  "invoicing": "monthly",
  "status": "active",
  "csms_setup_allowed": false,
  "waived": false,
  "discount_percent": 0,
  "exempt": "internal",
  "grace_ends_at": "2026-09-30T17:00:00Z",
  "past_due_since": "string",
  "payment_method": {
    "brand": "string",
    "last4": "string",
    "exp_month": 1,
    "exp_year": 1,
    "expired": false
  },
  "billing_mode": "self_serve",
  "invoice_terms": {
    "net_terms_days": 1,
    "payment_methods": [
      "string"
    ],
    "collection": "auto_debit",
    "po_number": "string",
    "billing_emails": [
      "string"
    ],
    "legal_name": "string"
  },
  "bank_account": {
    "type": "us_bank_account",
    "bank_name": "string",
    "last4": "string",
    "status": "verified"
  },
  "bank_transfer": {
    "currency": "usd",
    "type": "us_bank_transfer",
    "financial_addresses": [
      {
        "type": "string",
        "bank_name": "string",
        "account_number": "string",
        "routing_number": "string",
        "swift_code": "string",
        "account_holder_name": "string"
      }
    ]
  },
  "setup_pending": false,
  "payment_mode": "test",
  "updated_at": "2026-09-30T17:00:00Z",
  "projects": [
    {
      "tenant_id": 1042,
      "name": "bay-01",
      "rate_cents_per_kwh": "string",
      "rate_source": "team",
      "current_month": {
        "period": "string",
        "period_start": "string",
        "period_end": "string",
        "billable_from": "string",
        "energy_kwh": "string",
        "transactions": 1,
        "billable_kwh": "string",
        "billable_transactions": 1,
        "held_transactions": 1,
        "invoiced": false,
        "not_invoiced_reason": "internal",
        "rate_cents_per_kwh": "string",
        "usage_minor": 1250,
        "discount_percent": 0,
        "discount_minor": 1250,
        "estimated_minor": 1250,
        "currency": "usd",
        "as_of": "string"
      }
    }
  ]
}
Try it is not available here yetRequests from this page are off until the production API at https://api.ivoracharge.com is public. Use the code samples from your application server; Ivora grants production access. Keys are created in Developer tools.