# Create a pricing split

Declare your share of a dynamic pricing rule's fee. The customer bears the remainder. List the rules you may declare against with [List dynamic pricing rules](#tag/pricing_split).
Provide `price_id` and exactly one of `bps` or `fixed_amount`. Declare `bps` against a `percentage` rule and `fixed_amount` against a `fixed` rule. Your share cannot exceed the rule's own total: `bps` cannot exceed the rule's `bps`, and `fixed_amount` cannot exceed the rule's `fees_amount`. Each rule is held to its own ceiling.
Amounts are in minor units (cents) and `bps` is basis points, so 100 is 1%. A `bps` of `0` is valid and means the customer bears the whole fee.
Pass the returned `id` in `split_ids` when you create a payment link, an order, a payin quote, a subscription or an auto debit. Until you pass it, the dynamic rule is never applied and pricing falls back to your normal (non-dynamic) rules.

Endpoint: POST /prices/dynamic-splits
Version: 1.0.0
Security: JWT

## Security:

  - `JWT` (unknown)
    http bearer JWT

## Request fields (application/json):

  - `price_id` (string, required)
    The dynamic pricing rule to declare against, from [List dynamic pricing rules](#tag/pricing_split). The rule must belong to your business, have a dynamic fee bearer, price `payin` `transaction_fees`, be currently effective, and be the latest effective version of the rule.
    Example: price_5JU9yv0lGSUP

  - `bps` (integer)
    Your share of the fee in basis points, where 100 bps is 1%. Required on a `percentage` rule. Cannot exceed the rule's own `bps`. `0` is valid and means the customer bears the whole fee.
Provide exactly one of `bps` or `fixed_amount`, not both.
    Example: 150

  - `fixed_amount` (integer)
    Your share of the fee in minor units of `fee_currency`. Required on a `fixed` rule. Cannot exceed the rule's own `fees_amount`.
Provide exactly one of `bps` or `fixed_amount`, not both.
    Example: 200

  - `min_fee` (integer)
    The floor to apply to your share, in minor units of `fee_currency`. Supported only on a `percentage` rule, and only together with `fee_currency`. Must be less than or equal to `max_fee`.
    Example: 100

  - `max_fee` (integer)
    The cap to apply to your share, in minor units of `fee_currency`. Supported only on a `percentage` rule, and only together with `fee_currency`.
    Example: 1000

  - `fee_currency` (string)
    The currency of `fixed_amount`, `min_fee` and `max_fee`, in ISO 4217 format. Required when you declare `min_fee` or `max_fee`. On a `fixed` rule it must equal the rule's `fees_currency`; omit it and Glomo derives it from the rule.
    Example: USD

## Request examples:

  - `Declare a share of a percentage rule` (unknown)

  - `Declare a share of a percentage rule with a floor and a cap` (unknown)

  - `Declare a share of a fixed rule` (unknown)

  - `Declare a zero share, so the customer bears the whole fee` (unknown)

## Response 201:

  - `201` (unknown)
    Pricing split created successfully

## Response 201 fields (application/json):

  - `id` (string)
    The unique identifier for the pricing split.
    Example: psplit_7Kq2mXbTdLp9

  - `price_id` (string)
    The unique identifier of the dynamic pricing rule this split was declared against. See [List dynamic pricing rules](#tag/pricing_split).
    Example: price_5JU9yv0lGSUP

  - `bps` (integer | null)
    Your share of the fee in basis points, where 100 bps is 1%. Present when the split was declared with `bps` and `null` otherwise.
    Example: 150

  - `fixed_amount` (integer | null)
    Your share of the fee in minor units of `fee_currency`. Present when the split was declared with `fixed_amount` and `null` otherwise.
    Example: 200

  - `min_fee` (integer | null)
    The floor you declared for your share, in minor units of `fee_currency`. `null` when you declared no floor.
    Example: 100

  - `max_fee` (integer | null)
    The cap you declared for your share, in minor units of `fee_currency`. `null` when you declared no cap.
    Example: 1000

  - `fee_currency` (string | null)
    The currency of `fixed_amount`, `min_fee` and `max_fee`, in ISO 4217 format.
    Example: USD

  - `created_at` (string)
    Timestamp representing when the pricing split was created.
    Example: 2026-08-01T09:12:44Z

  - `updated_at` (string)
    Timestamp representing when the pricing split was last updated.
    Example: 2026-08-01T09:12:44Z

## Response 400:

  - `400` (unknown)
    Bad Request — validation error. The rule must belong to your business, have a dynamic fee bearer, price `payin` `transaction_fees`, be currently effective and be the latest effective version of the rule. Your declared share must match the rule's `pricing_type` and must not exceed the rule's own total.

## Response 400 fields (application/json):

  - `error` (string)
    Enum: "Bad Request"

  - `message` (string)
    Error message.
    Example: price_id not found

## Response 401:

  - `401` (unknown)
    Unauthorized — invalid or missing authentication token

## Response 401 fields (application/json):

  - `error` (string)
    Example: Unauthorized

  - `message` (string)
    Example: Invalid or missing authentication token

## Response 400 examples:

  - `price_id omitted` (unknown)

  - `price_id does not exist or belongs to another business` (unknown)

  - `The rule's fee bearer is not dynamic` (unknown)

  - `The rule does not price a payin` (unknown)

  - `The rule does not price transaction fees` (unknown)

  - `The rule version is not effective yet` (unknown)

  - `A newer version of the rule is effective` (unknown)

  - `Neither bps nor fixed_amount, or both` (unknown)

  - `fixed_amount declared against a percentage rule` (unknown)

  - `Declared bps exceeds the rule's own bps` (unknown)

  - `bps declared against a fixed rule` (unknown)

  - `Declared fixed_amount exceeds the rule's own fees_amount` (unknown)

  - `fee_currency does not match a fixed rule's currency` (unknown)

  - `min_fee or max_fee declared against a fixed rule` (unknown)

  - `min_fee or max_fee declared without fee_currency` (unknown)

  - `min_fee greater than max_fee` (unknown)

