> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.solvimon.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.solvimon.com/_mcp/server.

# Create a portal url

POST https://test.api.solvimon.com/v{version}/portal-urls
Content-Type: application/json

Requires the PORTAL_URL.CREATE permission.

Reference: https://docs.solvimon.com/api-docs/transaction-api/portal-urls/post-portal-urls

## Authentication

- `X-API-KEY` header (required) — API Key authentication via header
- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://test.api.solvimon.com` (The TEST environment for our API, default)
- `https://api.solvimon.com` (The live environment for our API)

## Request

### Path parameters

- `version` (string, required, default: 1) — version

### Headers

- `x-platform-id` (string, optional) — Platform ID.

### Body (application/json)

This endpoint expects a PortalUrlCreateRequest.

- `type` (enum, required, nullable)
  - Allowed values: `INVOICE`, `PAY_INVOICE`, `CUSTOMER`, `QUOTE_VERSION`, `INIT_PRICING_PLAN_SUBSCRIPTION`, `CHECKOUT_SESSION`
- `object_type` (string, optional, nullable)
- `id` (string, optional, nullable)
- `customer_id` (string, optional, nullable) — Resource ID of type CUSTOMER
- `status` (enum, optional, nullable) — The status of the link. PUBLISHED: the link can be used until `expires_at`. REVOKED: the platform revoked the link. EXPIRED: `expires_at` passed while the link was PUBLISHED. CLOSED: the checkout session of the link is done (COMPLETED or FAILED); the link accepts no more changes and does not expire.
  - Allowed values: `PUBLISHED`, `REVOKED`, `EXPIRED`, `CLOSED`
- `authentication` (enum, optional, nullable) — How the link authenticates the customer, derived from the type. A SIGNED_TOKEN link returns its `token` and `url` only when it is created.
  - Allowed values: `IDENTITY_TOKEN`, `SIGNED_TOKEN`
- `created_at` (string, optional, nullable)
- `updated_at` (string, optional, nullable)
- `expiry_period` (PortalUrlPeriodCreateRequest, optional) — How long the link stays valid after it is created; sets `expires_at`. For type CHECKOUT_SESSION at least 30 MINUTE and at most 1 HOUR, 1 HOUR when omitted, and it can not be changed afterwards.
- `expires_at` (string, optional, nullable)
- `embedded` (boolean, optional, nullable)
- `template_id` (string, optional, nullable)
- `token` (string, optional, nullable)
- `url` (string, optional, nullable)
- `widgets` (PortalUrlWidgetsCreateRequest, optional, nullable)
- `invoice` (InvoicePortalUrlCreateRequest, optional)
- `customer` (CustomerPortalUrlCreateRequest, optional)
- `quote_version` (QuoteVersionPortalUrlCreateRequest, optional)
- `init_pricing_plan_subscription` (InitPricingPlanSubscriptionPortalUrlCreateRequest, optional)
- `checkout_session` (CheckoutSessionPortalUrlCreateRequest, optional) — The checkout session. Required for type CHECKOUT_SESSION.

## Response

### 201

Created

- `object_type` (string, optional, nullable)
- `id` (string, optional, nullable)
- `type` (enum, optional, nullable)
  - Allowed values: `INVOICE`, `PAY_INVOICE`, `CUSTOMER`, `QUOTE_VERSION`, `INIT_PRICING_PLAN_SUBSCRIPTION`, `CHECKOUT_SESSION`
- `customer_id` (string, optional, nullable) — Resource ID of type CUSTOMER
- `status` (enum, optional, nullable) — The status of the link. PUBLISHED: the link can be used until `expires_at`. REVOKED: the platform revoked the link. EXPIRED: `expires_at` passed while the link was PUBLISHED. CLOSED: the checkout session of the link is done (COMPLETED or FAILED); the link accepts no more changes and does not expire.
  - Allowed values: `PUBLISHED`, `REVOKED`, `EXPIRED`, `CLOSED`
- `authentication` (enum, optional, nullable) — How the link authenticates the customer, derived from the type. A SIGNED_TOKEN link returns its `token` and `url` only when it is created.
  - Allowed values: `IDENTITY_TOKEN`, `SIGNED_TOKEN`
- `created_at` (string, optional, nullable)
- `updated_at` (string, optional, nullable)
- `expiry_period` (PortalUrlPeriod, optional) — How long the link stays valid after it is created; sets `expires_at`. For type CHECKOUT_SESSION at least 30 MINUTE and at most 1 HOUR, 1 HOUR when omitted, and it can not be changed afterwards.
- `expires_at` (string, optional, nullable)
- `embedded` (boolean, optional, nullable)
- `template_id` (string, optional, nullable)
- `token` (string, optional, nullable)
- `url` (string, optional, nullable)
- `widgets` (PortalUrlWidgets, optional, nullable)
- `invoice` (InvoicePortalUrl, optional)
- `customer` (CustomerPortalUrl, optional)
- `quote_version` (QuoteVersionPortalUrl, optional)
- `init_pricing_plan_subscription` (InitPricingPlanSubscriptionPortalUrl, optional)
- `checkout_session` (CheckoutSessionPortalUrl, optional) — The checkout session. Required for type CHECKOUT_SESSION.

## Errors

### 400 Bad Request Error

Bad Request

- `type` (enum, required)
  - Allowed values: `API_ERROR`, `INVALID_REQUEST`
- `code` (enum, required)
  - Allowed values: `RESOURCE_NOT_FOUND`, `RESOURCES_NOT_FOUND`, `UNABLE_TO_PROCESS_INSTRUCTIONS`, `BAD_REQUEST`, `UNSUPPORTED_MEDIA_TYPE`, `RESOURCE_ALREADY_EXISTS`, `CUSTOM_FIELD_VALUE_ALREADY_EXISTS`, `COULD_NOT_CREATE_RESOURCE`, `COULD_NOT_UPDATE_RESOURCE`, `COULD_NOT_DELETE_RESOURCE`, `MISSING_VERSION`, `UNSUPPORTED_VERSION`, `UNAUTHORISED`, `CUSTOMER_NOT_FOUND`, `PLATFORM_NOT_FOUND`, `PRICING_PLAN_NOT_FOUND`, `PRODUCT_NOT_FOUND`, `PRODUCT_ITEM_NOT_FOUND`, `PRICING_NOT_FOUND`, `PRICING_ITEM_NOT_FOUND`, `USER_NOT_FOUND`, `METER_NOT_FOUND`, `METER_VALUE_NOT_FOUND`, `METER_PROPERTY_NOT_FOUND`, `PRICING_ITEM_SUMMARIES_NOT_FOUND`, `MISSING_ID`, `INVALID_ID`, `MISSING_REFERENCE`, `MISSING_FIELD`, `INVALID_FIELD`, `INVALID_OPERATION`, `INTERNAL_ERROR`, `USER_NOT_ALLOWED`, `IDEMPOTENCY_CHECK_FAILED`, `INVALID_REQUEST`
- `message` (string, required)
- `field` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `resource_type` (enum, optional, nullable)
  - Allowed values: `CUSTOMER`, `CUSTOM_FIELD`, `PLATFORM`, `PLATFORM_UPTODATE`, `METER`, `METER_VALUE`, `METER_PROPERTY`, `METER_PROPERTY_VARIABLE`, `METER_VALUE_CALCULATION`, `INGEST_DATA`, `METER_DATA`, `CHARGE_DATA`, `PERSIST_DATA`, `ADJUSTMENT_DATA`, `PRODUCT_CATEGORY`, `PRODUCT`, `PRODUCT_ITEM`, `PRICING`, `PRICING_GROUP`, `PRICING_ITEM`, `PRICING_ITEM_CONFIG`, `PRICING_PLAN_SUBSCRIPTION`, `PRICING_PLAN_SUBSCRIPTION_GROUP`, `PRICING_PLAN_SCHEDULE`, `SEAT_ASSIGNMENT`, `SHIPPING_ADDRESS`, `PRICING_PLAN`, `PRICING_PLAN_VERSION`, `PRICING_PLAN_GROUP`, `QUOTE`, `QUOTE_VERSION`, `QUOTE_TEMPLATE`, `QUOTE_VERSION_SUMMARY`, `API_KEY`, `USER`, `ROLE`, `PROXY_USER`, `EXTERNAL_CREDENTIALS`, `TOKEN`, `INVOICE`, `E_INVOICE`, `PDF`, `BILLING_ENTITY`, `FEATURE`, `MEMBERSHIP`, `PAYMENT`, `PAYMENT_ACCEPTOR`, `PAYMENT_METHOD`, `PAYMENT_METHOD_OPTIONS`, `PAYMENT_SCHEDULE`, `PAYMENT_REQUEST`, `INTEGRATION`, `WEBHOOK`, `WEBHOOK_EVENT`, `FILE`, `FILE_PROCESSING_SETTINGS`, `TEAM`, `DOWNLOAD_URL`, `CSV_REPORT`, `REPORT`, `REPORT_GENERATE_REQUEST`, `REPORT_CONFIGURATION`, `REPORT_SUBSCRIPTION`, `REPORT_DEFINITION`, `ACCOUNT_GROUP`, `ENTITY`, `EVENT_TRACE`, `EVENT_TRACE_LINK`, `PRICING_CATEGORY`, `CONTACT`, `ALERT_RULE`, `ALERT`, `USAGE_LIMIT`, `AUDIT_RECORD`, `PORTAL_URL`, `AUTHENTICATION_PROVIDER`, `REPROCESS`, `APPROVAL_POLICY`, `APPROVAL_REQUEST`, `BULK_ACTION`, `COUPON`, `PROMOTION_CODE`, `WALLET`, `WALLET_TYPE`, `WALLET_GRANT`, `AUTO_TOPUP_CONFIG`, `WORKFLOW`, `WORKFLOW_TRIGGER`, `WORKFLOW_ACTION`, `WORKFLOW_ACTION_EXECUTION`, `CREDIT_TYPE`, `SIGNATURE_REQUEST`, `ATTACHMENT`, `DOCUMENT`, `EXCHANGE_RATE`

### 401 Unauthorized Error

Unauthorized

- `type` (enum, required)
  - Allowed values: `API_ERROR`, `INVALID_REQUEST`
- `code` (enum, required)
  - Allowed values: `RESOURCE_NOT_FOUND`, `RESOURCES_NOT_FOUND`, `UNABLE_TO_PROCESS_INSTRUCTIONS`, `BAD_REQUEST`, `UNSUPPORTED_MEDIA_TYPE`, `RESOURCE_ALREADY_EXISTS`, `CUSTOM_FIELD_VALUE_ALREADY_EXISTS`, `COULD_NOT_CREATE_RESOURCE`, `COULD_NOT_UPDATE_RESOURCE`, `COULD_NOT_DELETE_RESOURCE`, `MISSING_VERSION`, `UNSUPPORTED_VERSION`, `UNAUTHORISED`, `CUSTOMER_NOT_FOUND`, `PLATFORM_NOT_FOUND`, `PRICING_PLAN_NOT_FOUND`, `PRODUCT_NOT_FOUND`, `PRODUCT_ITEM_NOT_FOUND`, `PRICING_NOT_FOUND`, `PRICING_ITEM_NOT_FOUND`, `USER_NOT_FOUND`, `METER_NOT_FOUND`, `METER_VALUE_NOT_FOUND`, `METER_PROPERTY_NOT_FOUND`, `PRICING_ITEM_SUMMARIES_NOT_FOUND`, `MISSING_ID`, `INVALID_ID`, `MISSING_REFERENCE`, `MISSING_FIELD`, `INVALID_FIELD`, `INVALID_OPERATION`, `INTERNAL_ERROR`, `USER_NOT_ALLOWED`, `IDEMPOTENCY_CHECK_FAILED`, `INVALID_REQUEST`
- `message` (string, required)
- `field` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `resource_type` (enum, optional, nullable)
  - Allowed values: `CUSTOMER`, `CUSTOM_FIELD`, `PLATFORM`, `PLATFORM_UPTODATE`, `METER`, `METER_VALUE`, `METER_PROPERTY`, `METER_PROPERTY_VARIABLE`, `METER_VALUE_CALCULATION`, `INGEST_DATA`, `METER_DATA`, `CHARGE_DATA`, `PERSIST_DATA`, `ADJUSTMENT_DATA`, `PRODUCT_CATEGORY`, `PRODUCT`, `PRODUCT_ITEM`, `PRICING`, `PRICING_GROUP`, `PRICING_ITEM`, `PRICING_ITEM_CONFIG`, `PRICING_PLAN_SUBSCRIPTION`, `PRICING_PLAN_SUBSCRIPTION_GROUP`, `PRICING_PLAN_SCHEDULE`, `SEAT_ASSIGNMENT`, `SHIPPING_ADDRESS`, `PRICING_PLAN`, `PRICING_PLAN_VERSION`, `PRICING_PLAN_GROUP`, `QUOTE`, `QUOTE_VERSION`, `QUOTE_TEMPLATE`, `QUOTE_VERSION_SUMMARY`, `API_KEY`, `USER`, `ROLE`, `PROXY_USER`, `EXTERNAL_CREDENTIALS`, `TOKEN`, `INVOICE`, `E_INVOICE`, `PDF`, `BILLING_ENTITY`, `FEATURE`, `MEMBERSHIP`, `PAYMENT`, `PAYMENT_ACCEPTOR`, `PAYMENT_METHOD`, `PAYMENT_METHOD_OPTIONS`, `PAYMENT_SCHEDULE`, `PAYMENT_REQUEST`, `INTEGRATION`, `WEBHOOK`, `WEBHOOK_EVENT`, `FILE`, `FILE_PROCESSING_SETTINGS`, `TEAM`, `DOWNLOAD_URL`, `CSV_REPORT`, `REPORT`, `REPORT_GENERATE_REQUEST`, `REPORT_CONFIGURATION`, `REPORT_SUBSCRIPTION`, `REPORT_DEFINITION`, `ACCOUNT_GROUP`, `ENTITY`, `EVENT_TRACE`, `EVENT_TRACE_LINK`, `PRICING_CATEGORY`, `CONTACT`, `ALERT_RULE`, `ALERT`, `USAGE_LIMIT`, `AUDIT_RECORD`, `PORTAL_URL`, `AUTHENTICATION_PROVIDER`, `REPROCESS`, `APPROVAL_POLICY`, `APPROVAL_REQUEST`, `BULK_ACTION`, `COUPON`, `PROMOTION_CODE`, `WALLET`, `WALLET_TYPE`, `WALLET_GRANT`, `AUTO_TOPUP_CONFIG`, `WORKFLOW`, `WORKFLOW_TRIGGER`, `WORKFLOW_ACTION`, `WORKFLOW_ACTION_EXECUTION`, `CREDIT_TYPE`, `SIGNATURE_REQUEST`, `ATTACHMENT`, `DOCUMENT`, `EXCHANGE_RATE`

### 403 Forbidden Error

Forbidden

- `type` (enum, required)
  - Allowed values: `API_ERROR`, `INVALID_REQUEST`
- `code` (enum, required)
  - Allowed values: `RESOURCE_NOT_FOUND`, `RESOURCES_NOT_FOUND`, `UNABLE_TO_PROCESS_INSTRUCTIONS`, `BAD_REQUEST`, `UNSUPPORTED_MEDIA_TYPE`, `RESOURCE_ALREADY_EXISTS`, `CUSTOM_FIELD_VALUE_ALREADY_EXISTS`, `COULD_NOT_CREATE_RESOURCE`, `COULD_NOT_UPDATE_RESOURCE`, `COULD_NOT_DELETE_RESOURCE`, `MISSING_VERSION`, `UNSUPPORTED_VERSION`, `UNAUTHORISED`, `CUSTOMER_NOT_FOUND`, `PLATFORM_NOT_FOUND`, `PRICING_PLAN_NOT_FOUND`, `PRODUCT_NOT_FOUND`, `PRODUCT_ITEM_NOT_FOUND`, `PRICING_NOT_FOUND`, `PRICING_ITEM_NOT_FOUND`, `USER_NOT_FOUND`, `METER_NOT_FOUND`, `METER_VALUE_NOT_FOUND`, `METER_PROPERTY_NOT_FOUND`, `PRICING_ITEM_SUMMARIES_NOT_FOUND`, `MISSING_ID`, `INVALID_ID`, `MISSING_REFERENCE`, `MISSING_FIELD`, `INVALID_FIELD`, `INVALID_OPERATION`, `INTERNAL_ERROR`, `USER_NOT_ALLOWED`, `IDEMPOTENCY_CHECK_FAILED`, `INVALID_REQUEST`
- `message` (string, required)
- `field` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `resource_type` (enum, optional, nullable)
  - Allowed values: `CUSTOMER`, `CUSTOM_FIELD`, `PLATFORM`, `PLATFORM_UPTODATE`, `METER`, `METER_VALUE`, `METER_PROPERTY`, `METER_PROPERTY_VARIABLE`, `METER_VALUE_CALCULATION`, `INGEST_DATA`, `METER_DATA`, `CHARGE_DATA`, `PERSIST_DATA`, `ADJUSTMENT_DATA`, `PRODUCT_CATEGORY`, `PRODUCT`, `PRODUCT_ITEM`, `PRICING`, `PRICING_GROUP`, `PRICING_ITEM`, `PRICING_ITEM_CONFIG`, `PRICING_PLAN_SUBSCRIPTION`, `PRICING_PLAN_SUBSCRIPTION_GROUP`, `PRICING_PLAN_SCHEDULE`, `SEAT_ASSIGNMENT`, `SHIPPING_ADDRESS`, `PRICING_PLAN`, `PRICING_PLAN_VERSION`, `PRICING_PLAN_GROUP`, `QUOTE`, `QUOTE_VERSION`, `QUOTE_TEMPLATE`, `QUOTE_VERSION_SUMMARY`, `API_KEY`, `USER`, `ROLE`, `PROXY_USER`, `EXTERNAL_CREDENTIALS`, `TOKEN`, `INVOICE`, `E_INVOICE`, `PDF`, `BILLING_ENTITY`, `FEATURE`, `MEMBERSHIP`, `PAYMENT`, `PAYMENT_ACCEPTOR`, `PAYMENT_METHOD`, `PAYMENT_METHOD_OPTIONS`, `PAYMENT_SCHEDULE`, `PAYMENT_REQUEST`, `INTEGRATION`, `WEBHOOK`, `WEBHOOK_EVENT`, `FILE`, `FILE_PROCESSING_SETTINGS`, `TEAM`, `DOWNLOAD_URL`, `CSV_REPORT`, `REPORT`, `REPORT_GENERATE_REQUEST`, `REPORT_CONFIGURATION`, `REPORT_SUBSCRIPTION`, `REPORT_DEFINITION`, `ACCOUNT_GROUP`, `ENTITY`, `EVENT_TRACE`, `EVENT_TRACE_LINK`, `PRICING_CATEGORY`, `CONTACT`, `ALERT_RULE`, `ALERT`, `USAGE_LIMIT`, `AUDIT_RECORD`, `PORTAL_URL`, `AUTHENTICATION_PROVIDER`, `REPROCESS`, `APPROVAL_POLICY`, `APPROVAL_REQUEST`, `BULK_ACTION`, `COUPON`, `PROMOTION_CODE`, `WALLET`, `WALLET_TYPE`, `WALLET_GRANT`, `AUTO_TOPUP_CONFIG`, `WORKFLOW`, `WORKFLOW_TRIGGER`, `WORKFLOW_ACTION`, `WORKFLOW_ACTION_EXECUTION`, `CREDIT_TYPE`, `SIGNATURE_REQUEST`, `ATTACHMENT`, `DOCUMENT`, `EXCHANGE_RATE`

### 409 Conflict Error

Conflict

- `type` (enum, required)
  - Allowed values: `API_ERROR`, `INVALID_REQUEST`
- `code` (enum, required)
  - Allowed values: `RESOURCE_NOT_FOUND`, `RESOURCES_NOT_FOUND`, `UNABLE_TO_PROCESS_INSTRUCTIONS`, `BAD_REQUEST`, `UNSUPPORTED_MEDIA_TYPE`, `RESOURCE_ALREADY_EXISTS`, `CUSTOM_FIELD_VALUE_ALREADY_EXISTS`, `COULD_NOT_CREATE_RESOURCE`, `COULD_NOT_UPDATE_RESOURCE`, `COULD_NOT_DELETE_RESOURCE`, `MISSING_VERSION`, `UNSUPPORTED_VERSION`, `UNAUTHORISED`, `CUSTOMER_NOT_FOUND`, `PLATFORM_NOT_FOUND`, `PRICING_PLAN_NOT_FOUND`, `PRODUCT_NOT_FOUND`, `PRODUCT_ITEM_NOT_FOUND`, `PRICING_NOT_FOUND`, `PRICING_ITEM_NOT_FOUND`, `USER_NOT_FOUND`, `METER_NOT_FOUND`, `METER_VALUE_NOT_FOUND`, `METER_PROPERTY_NOT_FOUND`, `PRICING_ITEM_SUMMARIES_NOT_FOUND`, `MISSING_ID`, `INVALID_ID`, `MISSING_REFERENCE`, `MISSING_FIELD`, `INVALID_FIELD`, `INVALID_OPERATION`, `INTERNAL_ERROR`, `USER_NOT_ALLOWED`, `IDEMPOTENCY_CHECK_FAILED`, `INVALID_REQUEST`
- `message` (string, required)
- `field` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `resource_type` (enum, optional, nullable)
  - Allowed values: `CUSTOMER`, `CUSTOM_FIELD`, `PLATFORM`, `PLATFORM_UPTODATE`, `METER`, `METER_VALUE`, `METER_PROPERTY`, `METER_PROPERTY_VARIABLE`, `METER_VALUE_CALCULATION`, `INGEST_DATA`, `METER_DATA`, `CHARGE_DATA`, `PERSIST_DATA`, `ADJUSTMENT_DATA`, `PRODUCT_CATEGORY`, `PRODUCT`, `PRODUCT_ITEM`, `PRICING`, `PRICING_GROUP`, `PRICING_ITEM`, `PRICING_ITEM_CONFIG`, `PRICING_PLAN_SUBSCRIPTION`, `PRICING_PLAN_SUBSCRIPTION_GROUP`, `PRICING_PLAN_SCHEDULE`, `SEAT_ASSIGNMENT`, `SHIPPING_ADDRESS`, `PRICING_PLAN`, `PRICING_PLAN_VERSION`, `PRICING_PLAN_GROUP`, `QUOTE`, `QUOTE_VERSION`, `QUOTE_TEMPLATE`, `QUOTE_VERSION_SUMMARY`, `API_KEY`, `USER`, `ROLE`, `PROXY_USER`, `EXTERNAL_CREDENTIALS`, `TOKEN`, `INVOICE`, `E_INVOICE`, `PDF`, `BILLING_ENTITY`, `FEATURE`, `MEMBERSHIP`, `PAYMENT`, `PAYMENT_ACCEPTOR`, `PAYMENT_METHOD`, `PAYMENT_METHOD_OPTIONS`, `PAYMENT_SCHEDULE`, `PAYMENT_REQUEST`, `INTEGRATION`, `WEBHOOK`, `WEBHOOK_EVENT`, `FILE`, `FILE_PROCESSING_SETTINGS`, `TEAM`, `DOWNLOAD_URL`, `CSV_REPORT`, `REPORT`, `REPORT_GENERATE_REQUEST`, `REPORT_CONFIGURATION`, `REPORT_SUBSCRIPTION`, `REPORT_DEFINITION`, `ACCOUNT_GROUP`, `ENTITY`, `EVENT_TRACE`, `EVENT_TRACE_LINK`, `PRICING_CATEGORY`, `CONTACT`, `ALERT_RULE`, `ALERT`, `USAGE_LIMIT`, `AUDIT_RECORD`, `PORTAL_URL`, `AUTHENTICATION_PROVIDER`, `REPROCESS`, `APPROVAL_POLICY`, `APPROVAL_REQUEST`, `BULK_ACTION`, `COUPON`, `PROMOTION_CODE`, `WALLET`, `WALLET_TYPE`, `WALLET_GRANT`, `AUTO_TOPUP_CONFIG`, `WORKFLOW`, `WORKFLOW_TRIGGER`, `WORKFLOW_ACTION`, `WORKFLOW_ACTION_EXECUTION`, `CREDIT_TYPE`, `SIGNATURE_REQUEST`, `ATTACHMENT`, `DOCUMENT`, `EXCHANGE_RATE`

### 500 Internal Server Error

Internal Server Error

- `type` (enum, required)
  - Allowed values: `API_ERROR`, `INVALID_REQUEST`
- `code` (enum, required)
  - Allowed values: `RESOURCE_NOT_FOUND`, `RESOURCES_NOT_FOUND`, `UNABLE_TO_PROCESS_INSTRUCTIONS`, `BAD_REQUEST`, `UNSUPPORTED_MEDIA_TYPE`, `RESOURCE_ALREADY_EXISTS`, `CUSTOM_FIELD_VALUE_ALREADY_EXISTS`, `COULD_NOT_CREATE_RESOURCE`, `COULD_NOT_UPDATE_RESOURCE`, `COULD_NOT_DELETE_RESOURCE`, `MISSING_VERSION`, `UNSUPPORTED_VERSION`, `UNAUTHORISED`, `CUSTOMER_NOT_FOUND`, `PLATFORM_NOT_FOUND`, `PRICING_PLAN_NOT_FOUND`, `PRODUCT_NOT_FOUND`, `PRODUCT_ITEM_NOT_FOUND`, `PRICING_NOT_FOUND`, `PRICING_ITEM_NOT_FOUND`, `USER_NOT_FOUND`, `METER_NOT_FOUND`, `METER_VALUE_NOT_FOUND`, `METER_PROPERTY_NOT_FOUND`, `PRICING_ITEM_SUMMARIES_NOT_FOUND`, `MISSING_ID`, `INVALID_ID`, `MISSING_REFERENCE`, `MISSING_FIELD`, `INVALID_FIELD`, `INVALID_OPERATION`, `INTERNAL_ERROR`, `USER_NOT_ALLOWED`, `IDEMPOTENCY_CHECK_FAILED`, `INVALID_REQUEST`
- `message` (string, required)
- `field` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `resource_type` (enum, optional, nullable)
  - Allowed values: `CUSTOMER`, `CUSTOM_FIELD`, `PLATFORM`, `PLATFORM_UPTODATE`, `METER`, `METER_VALUE`, `METER_PROPERTY`, `METER_PROPERTY_VARIABLE`, `METER_VALUE_CALCULATION`, `INGEST_DATA`, `METER_DATA`, `CHARGE_DATA`, `PERSIST_DATA`, `ADJUSTMENT_DATA`, `PRODUCT_CATEGORY`, `PRODUCT`, `PRODUCT_ITEM`, `PRICING`, `PRICING_GROUP`, `PRICING_ITEM`, `PRICING_ITEM_CONFIG`, `PRICING_PLAN_SUBSCRIPTION`, `PRICING_PLAN_SUBSCRIPTION_GROUP`, `PRICING_PLAN_SCHEDULE`, `SEAT_ASSIGNMENT`, `SHIPPING_ADDRESS`, `PRICING_PLAN`, `PRICING_PLAN_VERSION`, `PRICING_PLAN_GROUP`, `QUOTE`, `QUOTE_VERSION`, `QUOTE_TEMPLATE`, `QUOTE_VERSION_SUMMARY`, `API_KEY`, `USER`, `ROLE`, `PROXY_USER`, `EXTERNAL_CREDENTIALS`, `TOKEN`, `INVOICE`, `E_INVOICE`, `PDF`, `BILLING_ENTITY`, `FEATURE`, `MEMBERSHIP`, `PAYMENT`, `PAYMENT_ACCEPTOR`, `PAYMENT_METHOD`, `PAYMENT_METHOD_OPTIONS`, `PAYMENT_SCHEDULE`, `PAYMENT_REQUEST`, `INTEGRATION`, `WEBHOOK`, `WEBHOOK_EVENT`, `FILE`, `FILE_PROCESSING_SETTINGS`, `TEAM`, `DOWNLOAD_URL`, `CSV_REPORT`, `REPORT`, `REPORT_GENERATE_REQUEST`, `REPORT_CONFIGURATION`, `REPORT_SUBSCRIPTION`, `REPORT_DEFINITION`, `ACCOUNT_GROUP`, `ENTITY`, `EVENT_TRACE`, `EVENT_TRACE_LINK`, `PRICING_CATEGORY`, `CONTACT`, `ALERT_RULE`, `ALERT`, `USAGE_LIMIT`, `AUDIT_RECORD`, `PORTAL_URL`, `AUTHENTICATION_PROVIDER`, `REPROCESS`, `APPROVAL_POLICY`, `APPROVAL_REQUEST`, `BULK_ACTION`, `COUPON`, `PROMOTION_CODE`, `WALLET`, `WALLET_TYPE`, `WALLET_GRANT`, `AUTO_TOPUP_CONFIG`, `WORKFLOW`, `WORKFLOW_TRIGGER`, `WORKFLOW_ACTION`, `WORKFLOW_ACTION_EXECUTION`, `CREDIT_TYPE`, `SIGNATURE_REQUEST`, `ATTACHMENT`, `DOCUMENT`, `EXCHANGE_RATE`

## Types

### PortalUrlPeriodCreateRequest

- `type` (enum, optional) — The unit of the period. MONTH and YEAR count in the timezone of the customer, or else of the platform.
  - Allowed values: `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`
- `value` (integer, optional, nullable) — The number of units after which the link expires.

### PortalUrlWidgetsCreateRequest

- `usage` (string, optional, nullable)
- `invoices` (string, optional, nullable)
- `pricing_plan_subscriptions` (string, optional, nullable)

### InvoicePortalUrlCreateRequest

- `id` (string, optional) — Resource ID of type INVOICE
- `options` (InvoiceActionOptions, optional)

### CustomerPortalUrlCreateRequest

- `display` (DisplayConfig, optional)
- `options` (CustomerActionOptions, optional)

### QuoteVersionPortalUrlCreateRequest

- `id` (string, optional, nullable) — Resource ID of type QUOTE_VERSION

### InitPricingPlanSubscriptionPortalUrlCreateRequest

- `pricing_plan_subscription_id` (string, optional) — Resource ID of type PRICING_PLAN_SUBSCRIPTION
- `success_url` (string, optional, nullable)
- `note` (string, optional, nullable)

### CheckoutSessionPortalUrlCreateRequest

- `status` (enum, optional, nullable) — The status of the session. A session can only be changed while OPEN.
  - Allowed values: `OPEN`, `PROCESSING`, `COMPLETED`, `FAILED`
- `payment_status` (enum, optional, nullable) — Whether the customer on the checkout page has paid.
  - Allowed values: `UNPAID`, `PAID`
- `version` (integer, optional, nullable) — Increases on every change of the session.
- `expected_version` (integer, optional, nullable) — On an update: the `version` the change is based on. The update is refused when the session has changed since.
- `completed_at` (string, optional, nullable) — When the session completed.
- `success_url` (string, optional, nullable) — Where the customer on the checkout page is sent after completing the session. An absolute http or https URL of at most 2048 characters; write an international domain in punycode (xn--).
- `cancel_url` (string, optional, nullable) — Where the customer on the checkout page is sent when leaving the session without completing it. An absolute http or https URL of at most 2048 characters; write an international domain in punycode (xn--).
- `locale` (string, optional, nullable) — The locale of the checkout page. Format is language-country (like en-US).
- `note` (string, optional, nullable) — A note shown to the customer on the checkout page.
- `metadata` (map from string to string, optional, nullable) — Key-value pairs stored with the session. At most 50 entries; a key is 1 to 40 characters and not blank, a value at most 500 characters.
- `display` (CheckoutSessionDisplay, optional) — What the customer on the checkout page may see and change, for every customer of the session. A customer's own `display` takes precedence.
- `customers` (list of CheckoutSessionCustomer, optional, nullable) — The customers of the session: existing ones by `customer_id`, or ones to create by `customer`. At most 20 entries.
- `subscriptions` (list of CheckoutSessionSubscription, optional, nullable) — The subscriptions to create when the session completes. At most 10 entries.
- `payment` (CheckoutSessionPayment, optional) — How the session is paid.
- `result` (CheckoutSessionResult, optional, nullable) — What the session created. Set once the session completes or fails.

### PortalUrlPeriod

- `type` (enum, optional) — The unit of the period. MONTH and YEAR count in the timezone of the customer, or else of the platform.
  - Allowed values: `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`
- `value` (integer, optional, nullable) — The number of units after which the link expires.

### PortalUrlWidgets

- `usage` (string, optional, nullable)
- `invoices` (string, optional, nullable)
- `pricing_plan_subscriptions` (string, optional, nullable)

### InvoicePortalUrl

- `id` (string, optional) — Resource ID of type INVOICE
- `options` (InvoiceActionOptions, optional)

### CustomerPortalUrl

- `display` (DisplayConfig, optional)
- `options` (CustomerActionOptions, optional)

### QuoteVersionPortalUrl

- `id` (string, optional, nullable) — Resource ID of type QUOTE_VERSION

### InitPricingPlanSubscriptionPortalUrl

- `pricing_plan_subscription_id` (string, optional) — Resource ID of type PRICING_PLAN_SUBSCRIPTION
- `success_url` (string, optional, nullable)
- `note` (string, optional, nullable)

### CheckoutSessionPortalUrl

- `status` (enum, optional, nullable) — The status of the session. A session can only be changed while OPEN.
  - Allowed values: `OPEN`, `PROCESSING`, `COMPLETED`, `FAILED`
- `payment_status` (enum, optional, nullable) — Whether the customer on the checkout page has paid.
  - Allowed values: `UNPAID`, `PAID`
- `version` (integer, optional, nullable) — Increases on every change of the session.
- `expected_version` (integer, optional, nullable) — On an update: the `version` the change is based on. The update is refused when the session has changed since.
- `completed_at` (string, optional, nullable) — When the session completed.
- `success_url` (string, optional, nullable) — Where the customer on the checkout page is sent after completing the session. An absolute http or https URL of at most 2048 characters; write an international domain in punycode (xn--).
- `cancel_url` (string, optional, nullable) — Where the customer on the checkout page is sent when leaving the session without completing it. An absolute http or https URL of at most 2048 characters; write an international domain in punycode (xn--).
- `locale` (string, optional, nullable) — The locale of the checkout page. Format is language-country (like en-US).
- `note` (string, optional, nullable) — A note shown to the customer on the checkout page.
- `metadata` (map from string to string, optional, nullable) — Key-value pairs stored with the session. At most 50 entries; a key is 1 to 40 characters and not blank, a value at most 500 characters.
- `display` (CheckoutSessionDisplay, optional) — What the customer on the checkout page may see and change, for every customer of the session. A customer's own `display` takes precedence.
- `customers` (list of CheckoutSessionCustomer, optional, nullable) — The customers of the session: existing ones by `customer_id`, or ones to create by `customer`. At most 20 entries.
- `subscriptions` (list of CheckoutSessionSubscription, optional, nullable) — The subscriptions to create when the session completes. At most 10 entries.
- `payment` (CheckoutSessionPayment, optional) — How the session is paid.
- `result` (CheckoutSessionResult, optional, nullable) — What the session created. Set once the session completes or fails.

### InvoiceActionOptions

- `download_invoice` (boolean, optional, nullable)
- `pay_open_invoice` (boolean, optional, nullable)

### DisplayConfig

- `usage` (boolean, optional, nullable)
- `invoices` (boolean, optional, nullable)
- `pricing_plan_subscriptions` (boolean, optional, nullable)
- `payment_acceptors` (boolean, optional, nullable)

### CustomerActionOptions

- `edit_customer_details` (boolean, optional, nullable)
- `download_invoice` (boolean, optional, nullable)
- `pay_open_invoice` (boolean, optional, nullable)
- `combine_open_invoices` (boolean, optional, nullable)

### CheckoutSessionDisplay

- `customer_details` (enum, optional, nullable) — Visibility of the customer's name: the organization's legal name and registration number, or the individual's name. Defaults to READ_ONLY when supplied, else EDITABLE. HIDDEN requires a value.
  - Allowed values: `EDITABLE`, `READ_ONLY`, `HIDDEN`
- `address` (enum, optional, nullable) — Visibility of the registered or residential address. Defaults to READ_ONLY when supplied, else EDITABLE. HIDDEN requires a value.
  - Allowed values: `EDITABLE`, `READ_ONLY`, `HIDDEN`
- `tax_ids` (enum, optional, nullable) — Visibility of the tax ids, tax exemption and tax registrations. Defaults to READ_ONLY when supplied, else EDITABLE. May be HIDDEN without a value.
  - Allowed values: `EDITABLE`, `READ_ONLY`, `HIDDEN`
- `email` (enum, optional, nullable) — Visibility of the email address. Defaults to READ_ONLY when supplied, else EDITABLE. May be HIDDEN without a value.
  - Allowed values: `EDITABLE`, `READ_ONLY`, `HIDDEN`
- `custom_fields` (enum, optional, nullable) — Visibility of the custom fields. Defaults to READ_ONLY when supplied, else EDITABLE. May be HIDDEN without a value.
  - Allowed values: `EDITABLE`, `READ_ONLY`, `HIDDEN`

### CheckoutSessionCustomer

- `customer_id` (string, optional, nullable) — The ID of an existing customer to use in the session. Either `customer_id` or `customer` must be set.
- `customer` (CheckoutSessionNewCustomer, optional) — A customer to create when the session completes. `reference` and `type` are required; `reference` addresses it elsewhere in the session. Set the parent with `parent_customer`. Either `customer_id` or `customer` must be set.
- `parent_customer` (ResourceIdAndReference, optional) — The parent of the customer created in this session: an existing customer by `id`, or a customer of this session by `reference`. Only for a `customer` entry.
- `display` (CheckoutSessionDisplay, optional) — What the customer on the checkout page may see and change of this customer. Overrides the session's `display` per group. Only for a `customer` entry.

### CheckoutSessionSubscription

- `template_pricing_plan_subscription_id` (string, optional, nullable) — The ID of the template subscription to copy. Required; the template must be ACTIVE and of variant DEFAULT.
- `pricing_plan_subscription` (PricingPlanSubscriptionTemplateOverrides, optional) — Overrides on top of the template's copy. `reference` and `customer_id` or `customer_reference` are required.
- `pricing_plan_schedule_customizations` (list of CheckoutSessionScheduleCustomization, optional, nullable) — Customizations of the template's schedules. `seats_values` and `units` name the pricing plan version's configs of the schedule; a config the template overrides cannot be given a quantity.
- `options` (CheckoutSessionSubscriptionOptions, optional) — What the customer on the checkout page may change of this subscription. Not set: nothing.
- `starting_values` (list of CheckoutSessionStartingValues, optional, nullable) — Per schedule of the template, the seats and units the subscription starts with, worked out again on every change of the session. A schedule with nothing to list, such as a rate card schedule, is left out; left out altogether when no schedule has anything to list.

### CheckoutSessionPayment

- `customer_id` (string, optional, nullable) — The ID of the customer who pays and whose payment method is stored. Defaults to the invoice customer.
- `customer_reference` (string, optional, nullable) — The reference of the customer who pays and whose payment method is stored. Defaults to the invoice customer.
- `payment_acceptor_ids` (list of string, optional, nullable) — The IDs of the payment acceptors the customer on the checkout page can pay with. Defaults to the platform's.
- `store_payment_method` (boolean, optional, nullable) — Whether to store the payment method for later payments, such as renewals.

### CheckoutSessionResult

- `customers` (list of ResourceIdAndReference, optional, nullable) — The customers created or used by the session, by the reference they have in the session.
- `subscriptions` (list of CheckoutSessionResultSubscription, optional, nullable) — The subscriptions created by the session, by the reference they have in the session.
- `invoice_ids` (list of string, optional, nullable) — The IDs of the invoices created by the session.
- `payment_id` (string, optional, nullable) — The ID of the payment made in the session.
- `payment_method_id` (string, optional, nullable) — The ID of the payment method stored by the session.
- `failure` (CheckoutSessionResultFailure, optional) — Why the session failed. Only when the session's `status` is FAILED.

### CheckoutSessionNewCustomer

- `reference` (string, optional) — A custom reference assigned to the customer.
- `type` (enum, optional) — The type of customer entity.
  - Allowed values: `ORGANIZATION`, `INDIVIDUAL`
- `email` (string, optional, nullable) — The email of the customer.
- `locale` (string, optional, nullable) — The locale of the customer. Format is language-country (like en-US).
- `timezone` (string, optional, nullable)
- `roles` (list of enum, optional, nullable)
  - Allowed values: `DEFAULT`, `NON_PROCESSING`, `SELF_BILLING`, `SELLER`, `PROCESSING_ONLY`
- `custom_fields` (list of CustomFieldValue, optional, nullable)
- `individual` (Individual, optional) — Additional description of the individual customer type.
- `organization` (Organization, optional) — Additional description of the organization customer type.

### ResourceIdAndReference

- `id` (string, optional, nullable)
- `reference` (string, optional, nullable)

### PricingPlanSubscriptionTemplateOverrides

- `reference` (string, optional)
- `name` (string, optional, nullable)
- `purchase_order_number` (string, optional, nullable) — The uniquely assigned purchase order number.
- `customer_id` (string, optional) — The ID of the customer.
- `customer_reference` (string, optional) — The reference of the customer.
- `billing_entity_id` (string, optional, nullable) — The resource ID of the billing entity that is assigned to the subscription. If not set, the default platform value will be taken.
- `billing_entity_reference` (string, optional, nullable) — The reference of the billing entity that is assigned to the subscription. If not set, the default platform value will be taken.
- `billing_currency` (enum, optional) — The alphabetic currency code representing the type of currency used for billing. If not set, the default (platform) value will be taken.
  - Allowed values: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `INR`, `IQD`, `IRR`, `ISK`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRO`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MXV`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLE`, `SOS`, `SRD`, `SSP`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `USN`, `UYI`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XBA`, `XBB`, `XBC`, `XBD`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `XSU`, `XTS`, `XUA`, `XXX`, `YER`, `ZAR`, `ZMW`, `ZWL`
- `variant` (enum, optional)
  - Allowed values: `DEFAULT`, `FORWARD_BILLING`, `SELF_BILLING`, `SELLER`
- `combine` (boolean, optional, nullable) — Indication whether invoices of different subscriptions should be combined, if possible. If not set, the default platform value will be taken.
- `description` (string, optional, nullable)
- `custom_fields` (list of CustomFieldValue, optional, nullable)
- `forward_customer_id` (string, optional, nullable) — The reference to the customer that needs to be used for the invoice (for FORWARD_BILLING)
- `forward_customer_reference` (string, optional, nullable) — The reference of the forward customer (for FORWARD_BILLING). An alternative to `forward_customer_id`.
- `display_invoice_sub_lines_per_processing_only_customer` (boolean, optional, nullable)
- `show_original_customer_invoice_line` (boolean, optional, nullable) — Show an invoice line per (child) customer on the invoice of the `forward_customer_id`. Defaults to the platform setting. Only supported for variant FORWARD_BILLING

### CheckoutSessionScheduleCustomization

- `pricing_plan_schedule_id` (string, optional, nullable)
- `seats_values` (list of ConfiguredMeterValue, optional, nullable)
- `promotion_codes` (list of string, optional, nullable)
- `coupons` (list of AppliedCoupon, optional, nullable) — Coupons to apply to the schedule, by `id`. Only in a checkout session; the customer does not see them as codes.
- `units` (list of ConfiguredMeterValue, optional, nullable) — The number of units billed per One Off pricing item config priced `FLAT`, replacing the template's. Only `pricing_item_config_id` and `number` may be set; an omitted config falls back to its `default_units`, then to 1.

### CheckoutSessionSubscriptionOptions

- `edit_seats` (list of CheckoutSessionQuantityRange, optional, nullable) — Per seats pricing item config of the template's schedules, the range within which the customer on the checkout page may change the number of seats. The seats of a config without a range cannot be changed by the customer, and a `seats_values` number set for a config with a range must lie within it, as must the seats it starts with by default. Not for a rate card schedule, nor for a config the template overrides.
- `edit_units` (list of CheckoutSessionQuantityRange, optional, nullable) — Per One Off FLAT pricing item config with a per-unit amount of the template's schedules, the range within which the customer on the checkout page may change the number of units. The units of a config without a range cannot be changed by the customer, and a `units` number set for a config with a range must lie within it, as must the units it starts with by default. Not for a rate card schedule, nor for a config the template overrides.
- `allow_promotion_codes` (enum, optional, nullable) — Whether the customer on the checkout page may enter promotion codes. Defaults to the template subscription's `allow_promotion_codes`.
  - Allowed values: `NONE`, `SINGLE`

### CheckoutSessionStartingValues

- `pricing_plan_schedule_id` (string, optional, nullable) — The ID of the template's schedule.
- `seats_values` (list of ConfiguredMeterValue, optional, nullable) — The seats each seats pricing item config of the schedule starts with: the number set in the schedule's customization, otherwise the config's default seats. A config the template overrides starts at the override's default seats. A config without default seats or priced NONE is not listed. Named by the pricing plan version's config, also when the template overrides it.
- `units` (list of ConfiguredMeterValue, optional, nullable) — The units each units pricing item config of the schedule starts with: the number set in the schedule's customization, otherwise the template schedule's units, the config's default units or 1. A config the template overrides starts at the override's default units, else 1. Named by the pricing plan version's config, also when the template overrides it.

### CheckoutSessionResultSubscription

- `reference` (string, optional, nullable) — The reference of the subscription in the session.
- `id` (string, optional, nullable) — The ID of the created subscription.
- `pricing_plan_schedule_ids` (list of string, optional, nullable) — The IDs of the schedules of the created subscription.

### CheckoutSessionResultFailure

- `step` (string, optional, nullable) — The step of the completion that failed.
- `message` (string, optional, nullable) — What went wrong.

### CustomFieldValue

- `id` (string, optional, nullable) — Resource ID of type CUSTOM_FIELD
- `reference` (string, optional, nullable)
- `value` (string, optional, nullable)
- `values` (list of string, optional, nullable)
- `integration_details` (IntegrationDetails, optional, nullable)
- `integration_id` (string, optional) — The resource ID of the integration linked to the custom field

### Individual

- `name` (Name, optional)
- `residential_address` (Address, optional)

### Organization

- `legal_name` (string, optional)
- `tax_id` (string, optional, nullable) — Tax Id used for tax purposes of the organization
- `tax_ids` (list of TaxId, optional, nullable) — Tax Ids used for tax purposes of the organization
- `registration_number` (string, optional, nullable)
- `tax_exempt` (boolean, optional, nullable)
- `tax_exempt_note` (string, optional, nullable)
- `registered_address` (Address, optional)
- `tax_registrations` (list of TaxRegistration, optional, nullable) — Extra tax registrations for the customer

### ConfiguredMeterValue

- `pricing_item_config_id` (string, optional) — Resource ID of type PRICING_ITEM_CONFIG
- `number` (string, optional, nullable)
- `amount` (Amount, optional)
- `start_at` (datetime, optional, nullable)
- `set_start_at_to_now` (boolean, optional, nullable)
- `end_at` (string, optional, nullable)

### AppliedCoupon

- `id` (string, optional)
- `coupon_name` (string, optional, nullable)
- `promotion_code_resource_id` (string, optional, nullable)
- `promotion_code` (string, optional, nullable)
- `discount` (Discount, optional, nullable)

### CheckoutSessionQuantityRange

- `pricing_item_config_id` (string, optional, nullable) — The ID of the pricing item config whose quantity the customer on the checkout page may change: the pricing plan version's config. Required; at most one range per config. A config the template overrides cannot be given a range.
- `min` (CheckoutSessionQuantityBound, optional) — The lowest quantity the customer may choose. Not set: no lower bound.
- `max` (CheckoutSessionQuantityBound, optional) — The highest quantity the customer may choose, not lower than `min`. Not set: no upper bound.

### IntegrationDetails

- `id` (string, optional, nullable)
- `reference` (string, optional, nullable)
- `payment_gateway_variant` (enum, optional)
  - Allowed values: `ADYEN`, `STRIPE`
- `adyen` (AdyenIntegrationDetails, optional)
- `stripe` (StripeIntegrationDetails, optional)

### Name

- `first_name` (string, optional, nullable)
- `last_name` (string, optional, nullable)
- `infix` (string, optional, nullable)

### Address

- `line1` (string, optional, nullable)
- `line2` (string, optional, nullable)
- `city` (string, optional, nullable)
- `postal_code` (string, optional, nullable)
- `state` (string, optional, nullable)
- `country` (enum, optional, nullable)
  - Allowed values: `AD`, `AE`, `AF`, `AG`, `AI`, `AL`, `AM`, `AO`, `AQ`, `AR`, `AS`, `AT`, `AU`, `AW`, `AX`, `AZ`, `BA`, `BB`, `BD`, `BE`, `BF`, `BG`, `BH`, `BI`, `BJ`, `BL`, `BM`, `BN`, `BO`, `BQ`, `BR`, `BS`, `BT`, `BV`, `BW`, `BY`, `BZ`, `CA`, `CC`, `CD`, `CF`, `CG`, `CH`, `CI`, `CK`, `CL`, `CM`, `CN`, `CO`, `CR`, `CU`, `CV`, `CW`, `CX`, `CY`, `CZ`, `DE`, `DJ`, `DK`, `DM`, `DO`, `DZ`, `EC`, `EE`, `EG`, `EH`, `ER`, `ES`, `ET`, `FI`, `FJ`, `FK`, `FM`, `FO`, `FR`, `GA`, `GB`, `GD`, `GE`, `GF`, `GG`, `GH`, `GI`, `GL`, `GM`, `GN`, `GP`, `GQ`, `GR`, `GS`, `GT`, `GU`, `GW`, `GY`, `HK`, `HM`, `HN`, `HR`, `HT`, `HU`, `ID`, `IE`, `IL`, `IM`, `IN`, `IO`, `IQ`, `IR`, `IS`, `IT`, `JE`, `JM`, `JO`, `JP`, `KE`, `KG`, `KH`, `KI`, `KM`, `KN`, `KP`, `KR`, `KW`, `KY`, `KZ`, `LA`, `LB`, `LC`, `LI`, `LK`, `LR`, `LS`, `LT`, `LU`, `LV`, `LY`, `MA`, `MC`, `MD`, `ME`, `MF`, `MG`, `MH`, `MK`, `ML`, `MM`, `MN`, `MO`, `MP`, `MQ`, `MR`, `MS`, `MT`, `MU`, `MV`, `MW`, `MX`, `MY`, `MZ`, `NA`, `NC`, `NE`, `NF`, `NG`, `NI`, `NL`, `NO`, `NP`, `NR`, `NU`, `NZ`, `OM`, `PA`, `PE`, `PF`, `PG`, `PH`, `PK`, `PL`, `PM`, `PN`, `PR`, `PS`, `PT`, `PW`, `PY`, `QA`, `RE`, `RO`, `RS`, `RU`, `RW`, `SA`, `SB`, `SC`, `SD`, `SE`, `SG`, `SH`, `SI`, `SJ`, `SK`, `SL`, `SM`, `SN`, `SO`, `SR`, `SS`, `ST`, `SV`, `SX`, `SY`, `SZ`, `TC`, `TD`, `TF`, `TG`, `TH`, `TJ`, `TK`, `TL`, `TM`, `TN`, `TO`, `TR`, `TT`, `TV`, `TW`, `TZ`, `UA`, `UG`, `US`, `UY`, `UZ`, `VA`, `VC`, `VE`, `VG`, `VI`, `VN`, `VU`, `WF`, `WS`, `YE`, `YT`, `ZA`, `ZM`, `ZW`

### TaxId

- `id` (string, optional)
- `type` (enum, optional, nullable) — Optional tax id type, indicates which type of tax the number is for
  - Allowed values: `GENERIC_TAX_ID`, `AU_GST`, `CA_GST_HST`, `CA_PST`, `CA_PST_BC`, `CA_PST_MB`, `CA_PST_SK`, `CA_QST`
- `display_name` (string, optional, nullable) — User-friendly display name
- `tax_id_validation_result` (TaxIdValidation, optional)

### TaxRegistration

- `id` (string, optional, nullable) — The id of this tax registration
- `description` (string, optional, nullable) — The description of this tax registration
- `tax_id` (string, optional, nullable) — The tax id of this tax registration, e.g. a TIN, VAT id or other tax number
- `tax_ids` (list of TaxId, optional, nullable) — Tax IDs used for tax purposes of the tax registration, e.g. TINs, VAT ids, or other tax number
- `registration_number` (string, optional, nullable) — The registration number of this tax registration, e.g. a company registration number
- `registered_address` (Address, optional) — The address of this tax registration, if different from the billing entity. Currently, only the address will be used for tax calculations

### Amount

- `quantity` (string, optional)
- `currency` (enum, optional)
  - Allowed values: `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `INR`, `IQD`, `IRR`, `ISK`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRO`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MXV`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLE`, `SOS`, `SRD`, `SSP`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `USN`, `UYI`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XBA`, `XBB`, `XBC`, `XBD`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `XSU`, `XTS`, `XUA`, `XXX`, `YER`, `ZAR`, `ZMW`, `ZWL`

### Discount

- `pricing_item_configs` (list of PricingItemConfigDiscount, optional, nullable)
- `pricing_items` (list of PricingItemDiscount, optional, nullable)
- `pricings` (list of PricingDiscount, optional, nullable)
- `totals` (list of TotalDiscount, optional, nullable)
- `product_categories` (list of ProductCategoryDiscount, optional, nullable)
- `products` (list of ProductDiscount, optional, nullable)
- `product_items` (list of ProductItemDiscount, optional, nullable)
- `product_item_meter_property_conditions` (list of ProductItemMeterPropertyConditionDiscount, optional, nullable)

### CheckoutSessionQuantityBound

- `number` (string, optional, nullable) — The bound as a decimal number, zero or higher. Required. A whole number for `edit_seats`; `edit_units` also takes fractions.
- `amount` (Amount, optional) — Not supported in a checkout session: a bound is a number of seats or units.

### AdyenIntegrationDetails

- `recurring_detail_reference` (string, optional)

### StripeIntegrationDetails

- `payment_method_id` (string, optional)

### TaxIdValidation

- `id` (string, optional)
- `validation_date` (string, optional)
- `source` (string, optional)
- `valid` (enum, optional)
  - Allowed values: `VALID`, `NOT_VALID`, `UNKNOWN`
- `message` (string, optional, nullable)

### PricingItemConfigDiscount

- `ids` (list of string, optional) — Resource ID of type PRICING_ITEM_CONFIG
- `start_at` (datetime, optional, nullable)
- `end_at` (datetime, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `condition` (DiscountCondition, optional)

### PricingItemDiscount

- `ids` (list of string, optional) — Resource ID of type PRICING_ITEM
- `start_at` (datetime, optional, nullable)
- `end_at` (datetime, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `condition` (DiscountCondition, optional)

### PricingDiscount

- `ids` (list of string, optional) — Resource ID of type PRICING
- `start_at` (datetime, optional, nullable)
- `end_at` (datetime, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `condition` (DiscountCondition, optional)

### TotalDiscount

- `start_at` (string, optional, nullable)
- `end_at` (string, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `coupon_id` (string, optional, nullable) — Resource ID of type COUPON
- `promotion_code_details` (PromotionCodeDetails, optional, nullable)
- `condition` (DiscountCondition, optional)

### ProductCategoryDiscount

- `ids` (list of string, optional) — Resource ID of type PRODUCT_CATEGORY
- `start_at` (string, optional, nullable)
- `end_at` (string, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `coupon_id` (string, optional, nullable) — Resource ID of type COUPON
- `promotion_code_details` (PromotionCodeDetails, optional, nullable)
- `condition` (DiscountCondition, optional)

### ProductDiscount

- `ids` (list of string, optional) — Resource ID of type PRODUCT
- `start_at` (string, optional, nullable)
- `end_at` (string, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `coupon_id` (string, optional, nullable) — Resource ID of type COUPON
- `promotion_code_details` (PromotionCodeDetails, optional, nullable)
- `condition` (DiscountCondition, optional)

### ProductItemDiscount

- `ids` (list of string, optional) — Resource ID of type PRODUCT_ITEM
- `start_at` (string, optional, nullable)
- `end_at` (string, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `coupon_id` (string, optional, nullable) — Resource ID of type COUPON
- `promotion_code_details` (PromotionCodeDetails, optional, nullable)
- `condition` (DiscountCondition, optional)

### ProductItemMeterPropertyConditionDiscount

- `ids` (list of string, optional) — Resource ID of type PRODUCT_ITEM
- `meter_property_condition_expression` (MeterConditionExpression, optional)
- `start_at` (datetime, optional, nullable)
- `end_at` (datetime, optional, nullable)
- `amount` (Amount, optional)
- `percentage` (string, optional, nullable)
- `condition` (DiscountCondition, optional)
- `coupon_id` (string, optional, nullable) — Resource ID of type COUPON
- `promotion_code_details` (PromotionCodeDetails, optional, nullable)

### DiscountCondition

- `comparator` (enum, optional)
  - Allowed values: `EQUALS`, `NOT_EQUALS`, `IN`, `NOT_IN`, `GREATER_THAN`, `GREATER_THAN_OR_EQUALS`, `LESS_THAN`, `LESS_THAN_OR_EQUALS`, `EMPTY`, `NOT_EMPTY`, `CONTAINS`, `NOT_CONTAINS`
- `value` (DiscountConditionValue, optional)

### PromotionCodeDetails

- `promotion_code_id` (string, optional, nullable) — Resource ID of type PROMOTION_CODE
- `code` (string, optional, nullable)

### MeterConditionExpression

- `operator` (enum, optional)
  - Allowed values: `AND`, `OR`, `XOR`
- `operands` (list of MeterConditionOperand, optional, nullable)

### DiscountConditionValue

- `amount` (Amount, optional)

### MeterConditionOperand

- `meter_property` (MeterPropertyCondition, optional)
- `expression` (MeterConditionOperandExpression, optional, nullable)

### MeterPropertyCondition

- `id` (string, optional, nullable) — Resource ID of type METER_PROPERTY
- `reference` (string, optional, nullable)
- `meter_property` (MeterProperty, optional, nullable)
- `value` (string, optional, nullable)
- `values` (list of string, optional, nullable)
- `meter_property_variable_id` (string, optional, nullable) — Resource ID of type METER_PROPERTY_VARIABLE
- `meter_property_variable` (MeterPropertyVariable, optional, nullable)
- `comparator` (enum, optional)
  - Allowed values: `EQUALS`, `NOT_EQUALS`, `IN`, `NOT_IN`, `GREATER_THAN`, `GREATER_THAN_OR_EQUALS`, `LESS_THAN`, `LESS_THAN_OR_EQUALS`, `EMPTY`, `NOT_EMPTY`, `CONTAINS`, `NOT_CONTAINS`

### MeterConditionOperandExpression

### MeterProperty

- `object_type` (string, optional, nullable)
- `id` (string, optional, nullable)
- `reference` (string, optional)
- `name` (string, optional, nullable)
- `description` (string, optional, nullable)
- `status` (enum, optional) — The status of the meter property indicating the activity and the ability to update properties.
  - Allowed values: `DRAFT`, `ACTIVE`, `ARCHIVED`, `DEPRECATED`
- `type` (enum, optional, nullable) — The type of the meter property.
  - Allowed values: `NUMBER`, `ENUM`, `STRING`
- `enum_values` (list of string, optional, nullable) — The list of available ENUM values.

### MeterPropertyVariable

- `object_type` (string, optional, nullable)
- `id` (string, optional, nullable)
- `reference` (string, optional)
- `name` (string, optional, nullable)
- `description` (string, optional, nullable)
- `meter_property_id` (string, optional, nullable) — The meter property whose values this variable lists. Set on create only.
- `meter_property_reference` (string, optional, nullable) — Alternative to meter_property_id on create.
- `type` (enum, optional, nullable)
  - Allowed values: `LIST`
- `status` (enum, optional, nullable)
  - Allowed values: `DRAFT`, `ACTIVE`, `ARCHIVED`, `DEPRECATED`
- `values` (list of string, optional, nullable) — The initial values, on create only. Edit them afterwards through the values endpoint.
- `value_count` (integer, optional, nullable)
- `created_at` (string, optional, nullable)
- `updated_at` (string, optional, nullable)

## Examples

**Request**

```json
{
  "type": "CUSTOMER",
  "customer_id": "cust_UwDeeN0vxxHxMPCaeb1R",
  "expiry_period": {
    "type": "DAY",
    "value": 30
  },
  "customer": {
    "display": {
      "usage": true,
      "invoices": true,
      "pricing_plan_subscriptions": true,
      "payment_acceptors": true
    },
    "options": {
      "edit_customer_details": true,
      "download_invoice": true,
      "pay_open_invoice": true,
      "combine_open_invoices": false
    }
  }
}
```

**Response**

```json
{
  "object_type": "string",
  "id": "string",
  "type": "INVOICE",
  "customer_id": "string",
  "status": "PUBLISHED",
  "authentication": "IDENTITY_TOKEN",
  "created_at": "string",
  "updated_at": "string",
  "expiry_period": {
    "type": "MINUTE",
    "value": 1
  },
  "expires_at": "string",
  "embedded": true,
  "template_id": "string",
  "token": "string",
  "url": "string",
  "widgets": {
    "usage": "string",
    "invoices": "string",
    "pricing_plan_subscriptions": "string"
  },
  "invoice": {
    "id": "string",
    "options": {
      "download_invoice": true,
      "pay_open_invoice": true
    }
  },
  "customer": {
    "display": {
      "usage": true,
      "invoices": true,
      "pricing_plan_subscriptions": true,
      "payment_acceptors": true
    },
    "options": {
      "edit_customer_details": true,
      "download_invoice": true,
      "pay_open_invoice": true,
      "combine_open_invoices": true
    }
  },
  "quote_version": {
    "id": "string"
  },
  "init_pricing_plan_subscription": {
    "pricing_plan_subscription_id": "string",
    "success_url": "string",
    "note": "string"
  },
  "checkout_session": {
    "status": "OPEN",
    "payment_status": "UNPAID",
    "version": 1,
    "completed_at": "string",
    "success_url": "string",
    "cancel_url": "string",
    "locale": "string",
    "note": "string",
    "metadata": {},
    "display": {
      "customer_details": "EDITABLE",
      "address": "EDITABLE",
      "tax_ids": "EDITABLE",
      "email": "EDITABLE",
      "custom_fields": "EDITABLE"
    },
    "customers": [
      {
        "customer_id": "string",
        "customer": {
          "reference": "string",
          "type": "ORGANIZATION",
          "email": "string",
          "locale": "string",
          "timezone": "string",
          "roles": [
            "DEFAULT"
          ],
          "custom_fields": [
            {
              "id": "string",
              "reference": "string",
              "value": "string",
              "values": [
                "string"
              ],
              "integration_details": {
                "id": "string",
                "reference": "string",
                "payment_gateway_variant": "ADYEN",
                "adyen": {
                  "recurring_detail_reference": "string"
                },
                "stripe": {
                  "payment_method_id": "string"
                }
              },
              "integration_id": "string"
            }
          ],
          "individual": {
            "name": {
              "first_name": "string",
              "last_name": "string",
              "infix": "string"
            },
            "residential_address": {
              "line1": "string",
              "line2": "string",
              "city": "string",
              "postal_code": "string",
              "state": "string",
              "country": "AD"
            }
          },
          "organization": {
            "legal_name": "string",
            "tax_id": "string",
            "tax_ids": [
              {
                "id": "string",
                "type": "GENERIC_TAX_ID",
                "display_name": "string",
                "tax_id_validation_result": {
                  "id": "string",
                  "validation_date": "string",
                  "source": "string",
                  "valid": "VALID",
                  "message": "string"
                }
              }
            ],
            "registration_number": "string",
            "tax_exempt": true,
            "tax_exempt_note": "string",
            "registered_address": {
              "line1": "string",
              "line2": "string",
              "city": "string",
              "postal_code": "string",
              "state": "string",
              "country": "AD"
            },
            "tax_registrations": [
              {
                "id": "string",
                "description": "string",
                "tax_id": "string",
                "tax_ids": [
                  {
                    "id": "string",
                    "type": "GENERIC_TAX_ID",
                    "display_name": "string",
                    "tax_id_validation_result": {
                      "id": "string",
                      "validation_date": "string",
                      "source": "string",
                      "valid": "VALID",
                      "message": "string"
                    }
                  }
                ],
                "registration_number": "string",
                "registered_address": {
                  "line1": "string",
                  "line2": "string",
                  "city": "string",
                  "postal_code": "string",
                  "state": "string",
                  "country": "AD"
                }
              }
            ]
          }
        },
        "parent_customer": {
          "id": "string",
          "reference": "string"
        },
        "display": {
          "customer_details": "EDITABLE",
          "address": "EDITABLE",
          "tax_ids": "EDITABLE",
          "email": "EDITABLE",
          "custom_fields": "EDITABLE"
        }
      }
    ],
    "subscriptions": [
      {
        "template_pricing_plan_subscription_id": "string",
        "pricing_plan_subscription": {
          "reference": "string",
          "name": "string",
          "purchase_order_number": "string",
          "customer_id": "string",
          "customer_reference": "string",
          "billing_entity_id": "string",
          "billing_entity_reference": "string",
          "billing_currency": "AED",
          "variant": "DEFAULT",
          "combine": true,
          "description": "string",
          "custom_fields": [
            {
              "id": "string",
              "reference": "string",
              "value": "string",
              "values": [
                "string"
              ],
              "integration_details": {
                "id": "string",
                "reference": "string",
                "payment_gateway_variant": "ADYEN",
                "adyen": {
                  "recurring_detail_reference": "string"
                },
                "stripe": {
                  "payment_method_id": "string"
                }
              },
              "integration_id": "string"
            }
          ],
          "forward_customer_id": "string",
          "display_invoice_sub_lines_per_processing_only_customer": true,
          "show_original_customer_invoice_line": true
        },
        "pricing_plan_schedule_customizations": [
          {
            "pricing_plan_schedule_id": "string",
            "seats_values": [
              {
                "pricing_item_config_id": "string",
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                },
                "start_at": "2024-01-15T09:30:00Z",
                "end_at": "string"
              }
            ],
            "promotion_codes": [
              "string"
            ],
            "coupons": [
              {
                "id": "string",
                "coupon_name": "string",
                "promotion_code_resource_id": "string",
                "promotion_code": "string",
                "discount": {
                  "pricing_item_configs": [
                    {
                      "ids": [
                        "string"
                      ],
                      "start_at": "2024-01-15T09:30:00Z",
                      "end_at": "2024-01-15T09:30:00Z",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "pricing_items": [
                    {
                      "ids": [
                        "string"
                      ],
                      "start_at": "2024-01-15T09:30:00Z",
                      "end_at": "2024-01-15T09:30:00Z",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "pricings": [
                    {
                      "ids": [
                        "string"
                      ],
                      "start_at": "2024-01-15T09:30:00Z",
                      "end_at": "2024-01-15T09:30:00Z",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "totals": [
                    {
                      "start_at": "string",
                      "end_at": "string",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "coupon_id": "string",
                      "promotion_code_details": {
                        "promotion_code_id": "string",
                        "code": "string"
                      },
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "product_categories": [
                    {
                      "ids": [
                        "string"
                      ],
                      "start_at": "string",
                      "end_at": "string",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "coupon_id": "string",
                      "promotion_code_details": {
                        "promotion_code_id": "string",
                        "code": "string"
                      },
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "products": [
                    {
                      "ids": [
                        "string"
                      ],
                      "start_at": "string",
                      "end_at": "string",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "coupon_id": "string",
                      "promotion_code_details": {
                        "promotion_code_id": "string",
                        "code": "string"
                      },
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "product_items": [
                    {
                      "ids": [
                        "string"
                      ],
                      "start_at": "string",
                      "end_at": "string",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "coupon_id": "string",
                      "promotion_code_details": {
                        "promotion_code_id": "string",
                        "code": "string"
                      },
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      }
                    }
                  ],
                  "product_item_meter_property_conditions": [
                    {
                      "ids": [
                        "string"
                      ],
                      "meter_property_condition_expression": {
                        "operator": "AND",
                        "operands": [
                          {
                            "meter_property": {
                              "id": "string",
                              "reference": "string",
                              "meter_property": {
                                "object_type": "string",
                                "id": "string",
                                "reference": "string",
                                "name": "string",
                                "description": "string",
                                "status": "DRAFT",
                                "type": "NUMBER",
                                "enum_values": [
                                  "string"
                                ]
                              },
                              "value": "string",
                              "values": [
                                "string"
                              ],
                              "meter_property_variable_id": "string",
                              "meter_property_variable": {
                                "object_type": "string",
                                "id": "string",
                                "reference": "string",
                                "name": "string",
                                "description": "string",
                                "meter_property_id": "string",
                                "type": "LIST",
                                "status": "DRAFT",
                                "value_count": 1,
                                "created_at": "string",
                                "updated_at": "string"
                              },
                              "comparator": "EQUALS"
                            },
                            "expression": {}
                          }
                        ]
                      },
                      "start_at": "2024-01-15T09:30:00Z",
                      "end_at": "2024-01-15T09:30:00Z",
                      "amount": {
                        "quantity": "string",
                        "currency": "AED"
                      },
                      "percentage": "string",
                      "condition": {
                        "comparator": "EQUALS",
                        "value": {
                          "amount": {
                            "quantity": "string",
                            "currency": "AED"
                          }
                        }
                      },
                      "coupon_id": "string",
                      "promotion_code_details": {
                        "promotion_code_id": "string",
                        "code": "string"
                      }
                    }
                  ]
                }
              }
            ],
            "units": [
              {
                "pricing_item_config_id": "string",
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                },
                "start_at": "2024-01-15T09:30:00Z",
                "end_at": "string"
              }
            ]
          }
        ],
        "options": {
          "edit_seats": [
            {
              "pricing_item_config_id": "string",
              "min": {
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                }
              },
              "max": {
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                }
              }
            }
          ],
          "edit_units": [
            {
              "pricing_item_config_id": "string",
              "min": {
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                }
              },
              "max": {
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                }
              }
            }
          ],
          "allow_promotion_codes": "NONE"
        },
        "starting_values": [
          {
            "pricing_plan_schedule_id": "string",
            "seats_values": [
              {
                "pricing_item_config_id": "string",
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                },
                "start_at": "2024-01-15T09:30:00Z",
                "end_at": "string"
              }
            ],
            "units": [
              {
                "pricing_item_config_id": "string",
                "number": "string",
                "amount": {
                  "quantity": "string",
                  "currency": "AED"
                },
                "start_at": "2024-01-15T09:30:00Z",
                "end_at": "string"
              }
            ]
          }
        ]
      }
    ],
    "payment": {
      "customer_id": "string",
      "customer_reference": "string",
      "payment_acceptor_ids": [
        "string"
      ],
      "store_payment_method": true
    },
    "result": {
      "customers": [
        {
          "id": "string",
          "reference": "string"
        }
      ],
      "subscriptions": [
        {
          "reference": "string",
          "id": "string",
          "pricing_plan_schedule_ids": [
            "string"
          ]
        }
      ],
      "invoice_ids": [
        "string"
      ],
      "payment_id": "string",
      "payment_method_id": "string",
      "failure": {
        "step": "string",
        "message": "string"
      }
    }
  }
}
```

**SDK Code**

```python PortalUrls_postPortalUrls_example
import requests

url = "https://test.api.solvimon.com/v1/portal-urls"

payload = {
    "type": "CUSTOMER",
    "customer_id": "cust_UwDeeN0vxxHxMPCaeb1R",
    "expiry_period": {
        "type": "DAY",
        "value": 30
    },
    "customer": {
        "display": {
            "usage": True,
            "invoices": True,
            "pricing_plan_subscriptions": True,
            "payment_acceptors": True
        },
        "options": {
            "edit_customer_details": True,
            "download_invoice": True,
            "pay_open_invoice": True,
            "combine_open_invoices": False
        }
    }
}
headers = {
    "X-API-KEY": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript PortalUrls_postPortalUrls_example
const url = 'https://test.api.solvimon.com/v1/portal-urls';
const options = {
  method: 'POST',
  headers: {'X-API-KEY': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"type":"CUSTOMER","customer_id":"cust_UwDeeN0vxxHxMPCaeb1R","expiry_period":{"type":"DAY","value":30},"customer":{"display":{"usage":true,"invoices":true,"pricing_plan_subscriptions":true,"payment_acceptors":true},"options":{"edit_customer_details":true,"download_invoice":true,"pay_open_invoice":true,"combine_open_invoices":false}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go PortalUrls_postPortalUrls_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://test.api.solvimon.com/v1/portal-urls"

	payload := strings.NewReader("{\n  \"type\": \"CUSTOMER\",\n  \"customer_id\": \"cust_UwDeeN0vxxHxMPCaeb1R\",\n  \"expiry_period\": {\n    \"type\": \"DAY\",\n    \"value\": 30\n  },\n  \"customer\": {\n    \"display\": {\n      \"usage\": true,\n      \"invoices\": true,\n      \"pricing_plan_subscriptions\": true,\n      \"payment_acceptors\": true\n    },\n    \"options\": {\n      \"edit_customer_details\": true,\n      \"download_invoice\": true,\n      \"pay_open_invoice\": true,\n      \"combine_open_invoices\": false\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-API-KEY", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby PortalUrls_postPortalUrls_example
require 'uri'
require 'net/http'

url = URI("https://test.api.solvimon.com/v1/portal-urls")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"type\": \"CUSTOMER\",\n  \"customer_id\": \"cust_UwDeeN0vxxHxMPCaeb1R\",\n  \"expiry_period\": {\n    \"type\": \"DAY\",\n    \"value\": 30\n  },\n  \"customer\": {\n    \"display\": {\n      \"usage\": true,\n      \"invoices\": true,\n      \"pricing_plan_subscriptions\": true,\n      \"payment_acceptors\": true\n    },\n    \"options\": {\n      \"edit_customer_details\": true,\n      \"download_invoice\": true,\n      \"pay_open_invoice\": true,\n      \"combine_open_invoices\": false\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java PortalUrls_postPortalUrls_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://test.api.solvimon.com/v1/portal-urls")
  .header("X-API-KEY", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"type\": \"CUSTOMER\",\n  \"customer_id\": \"cust_UwDeeN0vxxHxMPCaeb1R\",\n  \"expiry_period\": {\n    \"type\": \"DAY\",\n    \"value\": 30\n  },\n  \"customer\": {\n    \"display\": {\n      \"usage\": true,\n      \"invoices\": true,\n      \"pricing_plan_subscriptions\": true,\n      \"payment_acceptors\": true\n    },\n    \"options\": {\n      \"edit_customer_details\": true,\n      \"download_invoice\": true,\n      \"pay_open_invoice\": true,\n      \"combine_open_invoices\": false\n    }\n  }\n}")
  .asString();
```

```php PortalUrls_postPortalUrls_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://test.api.solvimon.com/v1/portal-urls', [
  'body' => '{
  "type": "CUSTOMER",
  "customer_id": "cust_UwDeeN0vxxHxMPCaeb1R",
  "expiry_period": {
    "type": "DAY",
    "value": 30
  },
  "customer": {
    "display": {
      "usage": true,
      "invoices": true,
      "pricing_plan_subscriptions": true,
      "payment_acceptors": true
    },
    "options": {
      "edit_customer_details": true,
      "download_invoice": true,
      "pay_open_invoice": true,
      "combine_open_invoices": false
    }
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-API-KEY' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp PortalUrls_postPortalUrls_example
using RestSharp;

var client = new RestClient("https://test.api.solvimon.com/v1/portal-urls");
var request = new RestRequest(Method.POST);
request.AddHeader("X-API-KEY", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"type\": \"CUSTOMER\",\n  \"customer_id\": \"cust_UwDeeN0vxxHxMPCaeb1R\",\n  \"expiry_period\": {\n    \"type\": \"DAY\",\n    \"value\": 30\n  },\n  \"customer\": {\n    \"display\": {\n      \"usage\": true,\n      \"invoices\": true,\n      \"pricing_plan_subscriptions\": true,\n      \"payment_acceptors\": true\n    },\n    \"options\": {\n      \"edit_customer_details\": true,\n      \"download_invoice\": true,\n      \"pay_open_invoice\": true,\n      \"combine_open_invoices\": false\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift PortalUrls_postPortalUrls_example
import Foundation

let headers = [
  "X-API-KEY": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "type": "CUSTOMER",
  "customer_id": "cust_UwDeeN0vxxHxMPCaeb1R",
  "expiry_period": [
    "type": "DAY",
    "value": 30
  ],
  "customer": [
    "display": [
      "usage": true,
      "invoices": true,
      "pricing_plan_subscriptions": true,
      "payment_acceptors": true
    ],
    "options": [
      "edit_customer_details": true,
      "download_invoice": true,
      "pay_open_invoice": true,
      "combine_open_invoices": false
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://test.api.solvimon.com/v1/portal-urls")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```