---
title: "Upsert billing customer"
method: POST
path: "/billing/customer/upsert"
tags: ["billing"]
---

# Upsert billing customer

`POST /billing/customer/upsert`

## Request body

- CreateBillingCustomerRequestBody
  - `company_id` string, nullable
  - `default_payment_method_id` string, nullable
  - `email` string, required
  - `external_id` string, required
  - `meta` object, required
  - `name` string, required
  - `provider_type` 'metronome' | 'orb' | 'schematic' | 'stripe'

## Response `201`

Created

- object
  - `data` BillingCustomerResponseData, required
    - `company_id` string, nullable
    - `deleted_at` string, date-time, nullable
    - `email` string, required
    - `external_id` string, required
    - `id` string, required
    - `name` string, required
    - `provider_type` 'metronome' | 'orb' | 'schematic' | 'stripe', required
    - `updated_at` string, date-time, required
  - `params` object, required — Input parameters

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Server error

## Changes

> 125 revisions in range; 55 could not be searched.

- **2026-06-05** `c0d7b479cd11` — 1 warning, 1 info
  - added the new `metronome` enum value to the `data/provider_type` response property for the response status `201`
  - added the new `metronome` enum value to the request property `provider_type/allOf[#/components/schemas/BillingProviderType]/`

[Change history](https://skmtc.dev/schematichq/apis/schematic-api/changes/billing/customer/upsert/post.md)

---

[API](https://skmtc.dev/schematichq/apis/schematic-api.md) · [All operations](https://skmtc.dev/schematichq/apis/schematic-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/schematichq/schematic-api/revisions/0b238e148fa1/schema)
