Skip to content
StraventaDocs

Create an owner downstream fee schedule

Plan 2026-06-03-harmonization-sprint T049. Creates an owner-class tenant's downstream fee schedule for a (product_key, action_key) — priced through the fee engine (the product/action key plays the channel_code role). Owner-class only: a subscriber-class tenant receives 403 reseller_config_forbidden from the commercial-class reseller gate before the handler runs. The repo closes any prior open schedule for the same key in the same transaction.

POST
/v1/payments/admin/fee-schedules

Plan 2026-06-03-harmonization-sprint T049. Creates an owner-class tenant's downstream fee schedule for a (product_key, action_key) — priced through the fee engine (the product/action key plays the channel_code role). Owner-class only: a subscriber-class tenant receives 403 reseller_config_forbidden from the commercial-class reseller gate before the handler runs. The repo closes any prior open schedule for the same key in the same transaction.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/payments/admin/fee-schedules" \  -H "Content-Type: application/json" \  -d '{    "product_key": "pos",    "action_key": "transaction",    "fee_type": "flat",    "amount_cents": 1000,    "rate_bps": 0  }'
{
  "id": "0190a000-0000-7000-8000-000000000010",
  "tenant_id": "0190a000-0000-7000-8000-000000000001",
  "product_key": "pos",
  "action_key": "transaction",
  "fee_type": "flat",
  "amount_cents": 1000,
  "rate_bps": 0,
  "currency": "IDR",
  "effective_from": "2026-06-04T00:00:00Z",
  "active": true
}
{
  "error": "validation_failed",
  "message": "amount_idr is required",
  "request_id": "req_018f4d9f"
}
{
  "error": "validation_failed",
  "message": "amount_idr is required",
  "request_id": "req_018f4d9f"
}

Was this page helpful?