# Create a fee entry

Creates a fee entry.

> Important: This operation is experimental and may not be backward compatible.

Endpoint: POST /fees
Version: latest
Security: SecretApiKey, JWT

## Request fields (application/json):

  - `type` (string, required)
    Type of fee.
    Enum: "buy", "sell"

  - `name` (string, required)
    Name of the fee.
    Example: "A gateway fee"

  - `filter` (string,null)
    Filter that is based on the properties of the transaction and used to determine when to apply the fee.
    Example: "type:sale,capture;result:approved"

  - `formula` (object, required) — one of (discriminator: type):
    Formula that is used to calculate the fee.
    - fixed-fee:
      - `type` (string, required)
        Type of fee.
        Enum: "fixed-fee"
      - `currency` (string, required)
        Currency code in ISO 4217 format.
      - `amount` (number, required)
        Amount of the fee.
        Example: 10
    - percentage:
      - `type` (string, required)
        Type of fee.
        Enum: "percentage"
      - `currency` (string, required)
        Currency code in ISO 4217 format.
      - `bips` (number, required)
        Basis points.
Example: 100 bips = 1%, 1 bip = 0.01%.
      - `minAmount` (number)
        Minimum fee amount.
This value is applied when the calculated fee is less than the required minimum.
        Example: 10

  - `settlementSettings` (any)
    Fee settlement settings.
This value overrides the gateway account financial settings of the transaction.
    - `settlementCurrency` (string, required)
      Default settlement currency for all transactions.
    - `settlementPeriod` (object, required) — one of (discriminator: method):
      Default settlement period for all transactions.
      - date-interval:
        - `method` (string, required)
          Enum: "date-interval"
        - `duration` (integer, required)
          Number of time units.
        - `unit` (any, required)
          Unit of time.
        - `anchor` (object) — one of (discriminator: method):
          Instruction for calculating the period anchor.
          - day-of-month:
            - `method` (string, required)
              Enum: "day-of-month"
            - `day` (integer, required)
              Day of the month in which the event occurs.
If the month has less days, the last day of the month is selected.
            - `time` (string)
              Extended ISO-8601 format of time.
          - day-of-week:
            - `method` (string, required)
              Enum: "day-of-week"
            - `day` (string, required)
              Day of the week when the event occurs.
              Enum: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
            - `week` (string, required)
              Enum: "next", "first-in-month", "last-in-month"
            - `time` (string)
              Extended ISO-8601 format of time.
      - immediately:
        - `method` (string, required)
          Enum: "immediately"
    - `advancedSettings` (array)
      Advanced settlement settings.
Use these settings to override either default settlement currency,
period, or both for the transactions matched a filter.
    - `advancedSettings.filter` (string, required)
      Filter that is based on transaction properties and is used to determine when to apply the settings.
      Example: "currency:EUR,GBP"
    - `advancedSettings.settlementCurrency` (string)
      Currency code in ISO 4217 format.
    - `advancedSettings.settlementPeriod` (object) — one of (discriminator: method):
      Instruction for calculating the settlement time.
The settlement time and settlement period anchor are used
in conjunction with the transaction processed time,
to calculate the time in which the amount settles.
      - date-interval:
        - `method` (string, required)
          Enum: same as `method` in "date-interval" (1 values)
        - `duration` (integer, required)
          Number of time units.
        - `unit` (any, required)
          Unit of time.
        - `anchor` (object) — one of (discriminator: method):
          Instruction for calculating the period anchor.
          - day-of-month:
            - `method` (string, required)
              Enum: same as `method` in "day-of-month" (1 values)
            - `day` (integer, required)
              Day of the month in which the event occurs.
If the month has less days, the last day of the month is selected.
            - `time` (string)
              Extended ISO-8601 format of time.
          - day-of-week:
            - `method` (string, required)
              Enum: same as `method` in "day-of-week" (1 values)
            - `day` (string, required)
              Day of the week when the event occurs.
              Enum: same as `day` in "day-of-week" (7 values)
            - `week` (string, required)
              Enum: same as `week` in "day-of-week" (3 values)
            - `time` (string)
              Extended ISO-8601 format of time.
      - immediately:
        - `method` (string, required)
          Enum: same as `method` in "immediately" (1 values)

## Response 401 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 403 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 422 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

  - `invalidFields` (array)
    Invalid field details.

  - `invalidFields.field` (string)
    Name of the field.
Dot notation is used for nested object field names.

  - `invalidFields.message` (string)
    Message field.

## Response 429 fields (application/json):

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".
    Example: "about:blank"

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.
    Example: "Rate Limit Exceeded"

  - `status` (integer)
    HTTP status code.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.
    Example: "A request cannot be executed because the user has sent too many requests within a certain period of time"

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.


