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

# Upsert billing product

`POST /billing/product/upsert`

## Request body

- CreateBillingProductRequestBody
  - `external_id` string, required
  - `is_active` boolean, nullable
  - `name` string, nullable
  - `price` number, double, required
  - `provider_type` 'metronome' | 'orb' | 'schematic' | 'stripe'

## Response `201`

Created

- object
  - `data` BillingProductResponseData, required
    - `account_id` string, required
    - `created_at` string, date-time, required
    - `currency` string, nullable — Deprecated; currencies are associated with prices, not products
    - `environment_id` string, required
    - `external_id` string, required
    - `is_active` boolean, required
    - `name` string, required
    - `price` number, double, required
    - `price_decimal` string, nullable
    - `product_id` string, required
    - `provider_type` 'metronome' | 'orb' | 'schematic' | 'stripe', required
    - `quantity` number, double, 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

---

[API](https://skmtc.net/schematichq/apis/schematic-api.md) · [All operations](https://skmtc.net/schematichq/apis/schematic-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/schematichq/schematic-api/versions/873fb318b08a/schema)
