Custom Field Definitions: Creates a new invoice custom field definition.
POST
/api/invoicing/custom-field-definitions
deprecated
Requires: Invoicing.CustomFieldDefinitions, Invoicing.CustomFieldDefinitions.Create, merchant scope.
A biller holds at most 20 definitions, active and inactive alike. Deactivating a definition does not free a slot; deleting one does. The key is unique per biller, compared case-insensitively: `po_number` and `PO_Number` are the same key. Inactive definitions hold their key; a deleted definition's key can be reused. The key cannot be changed after creation.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a InvoiceCustomFieldDefinitionCreateDto. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
label
required |
string | nullablemax length 200 |
description
required |
string | Conditional: When Description is not null. Max length: 2000. nullable |
isRequired
required |
boolean | nullable |
isActive
required |
boolean | nullable |
sortOrder
required |
integer (int32) | Conditional: When SortOrder is not null. Must be >= 0. nullable |
options
required |
array of string | For `Dropdown` fields, the list of selectable options. nullable |
maxLength
required |
integer (int32) | Maximum length for `Text` fields. Conditional: When MaxLength is not null. Must be > 0. nullable |
regexPattern
required |
string | Regex validation pattern for `Text` fields. Conditional: When RegexPattern is not null. Max length: 2000. nullable |
regexErrorMessage
required |
string | Error message when regex validation fails. Conditional: When RegexErrorMessage is not null. Max length: 2000. nullable |
billerId
required |
string (uuid) | |
billerType
required |
InvoicePartyType | Identifies the type of entity acting as the biller or recipient on an invoice. one of: GatewayOwner, Reseller, Merchant, Customer |
key
required |
string | nullablemax length 100 |
fieldType
required |
CustomFieldType | The data type of a custom field definition. one of: Text, Dropdown, Checkbox, Date, Numeric |
This request body has no documented fields.
Responses
200 The definition was created and is returned.
Body: InvoiceCustomFieldDefinitionDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
id
required |
string (uuid) | |
creationTime
required |
string (date-time) | The date and time when this entity was created. |
creatorId
required |
string (uuid) | The ID of the user who created this entity. nullable |
lastModificationTime
required |
string (date-time) | The date and time when this entity was last modified. nullable |
lastModifierId
required |
string (uuid) | The ID of the user who last modified this entity. nullable |
billerId
required |
string (uuid) | |
billerType
required |
InvoicePartyType | Identifies the type of entity acting as the biller or recipient on an invoice. one of: GatewayOwner, Reseller, Merchant, Customer |
key
required |
string | nullable |
label
required |
string | nullable |
description
required |
string | nullable |
fieldType
required |
CustomFieldType | The data type of a custom field definition. one of: Text, Dropdown, Checkbox, Date, Numeric |
isRequired
required |
boolean | nullable |
isActive
required |
boolean | nullable |
sortOrder
required |
integer (int32) | nullable |
options
required |
array of string | nullable |
maxLength
required |
integer (int32) | nullable |
regexPattern
required |
string | nullable |
regexErrorMessage
required |
string | nullable |
concurrencyStamp
required |
string | nullable |
This response has no documented body fields.
400 The request is not valid: the key is missing or too long, the biller is empty, or a field rule is malformed.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
409 The biller already holds the maximum number of custom field definitions (`Invoicing:CustomFieldDefinition:LimitReached`), or a definition with this key, compared case-insensitively, already exists for the biller (`Invoicing:CustomFieldDefinition:KeyAlreadyExists`); for the latter the error's `data.key` holds the stored spelling of the key it collided with.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.