openapi: 3.2.0 info: contact: name: API Support email: support@getpliant.com url: https://www.getpliant.com title: Pliant Customer Cards API description: Pliant Customer API version: 2.1.0 license: name: MIT url: https://opensource.org/license/MIT servers: - url: https://partner-api.getpliant.com/api description: Pliant Production Server - url: https://sandbox.partner-api.getpliant.com/api description: Pliant Sandbox Server - url: https://pci-api.getpliant.com description: PCI Vault Production Server - url: https://pci-sandbox.partner-api.getpliant.com description: PCI Vault Sandbox Server security: - bearerAuth: [] tags: - name: Cards description: This tag is for operations related to cards paths: /cards: get: summary: List Cards description: 'Returns a list of cards. You can use the `limit`, `page`, `sortBy` and `sortDirection` parameters to filter and sort the results. **This endpoint has changed in comparison to the previous version of the API.** The following changes were made: - changed the enumeration for the status field in the response body' tags: - Cards operationId: get-cards parameters: - name: organizationId in: query description: The ID of the organization to filter by. schema: type: string format: uuid required: true - name: cardAccountId in: query description: The ID of the card account to filter by. A card always carries the card account it is currently assigned to. Once a card has been reassigned (see the `CARD_REASSIGNED` callback), it is only returned for its new card account, not for the superseded one. schema: type: string format: uuid - name: status in: query description: A list of statuses of cards to filter by. schema: type: array items: type: string enum: - PENDING - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - REQUEST_APPROVED - REQUESTED - REQUEST_CANCELLED - REQUEST_REJECTED - ACTIVE - LOCKED - LOCKED_PIN - EXPIRED - TERMINATED - TERMINATED_LOST - TERMINATED_STOLEN - name: cardholderId in: query description: The ID of the [cardholder](/docs/cardholder-entity) to filter by. schema: type: string format: uuid - name: type in: query deprecated: true description: '**DEPRECATED**: Use `cardConfig` parameter instead. A list of types of cards to filter by.' schema: type: array items: type: string enum: - VIRTUAL - SINGLE_USE - TRAVEL - PHYSICAL - BLACK - name: cardConfig in: query description: Filter by exact card configuration (e.g., PLIANT_PHYSICAL, PLIANT_VIRTUAL_TRAVEL, PLIANT_SINGLE_USE). Can be specified multiple times for filtering by multiple configurations. schema: type: array items: type: string - name: fromDate in: query description: The `from` date to filter by as zero-offset UTC time. The date boundary is inclusive. Meaning we compare with `>=`. schema: type: string format: date-time example: '2024-07-19T15:00:00.000000Z' - name: toDate in: query description: The `to` date to filter by as zero-offset UTC time. The date boundary is inclusive. Meaning we compare with `<=`. schema: type: string format: date-time example: '2024-07-19T15:00:00.000000Z' - name: byDateField in: query description: The date field to filter by if `fromDate` and `toDate` are present. schema: type: - string - 'null' enum: - createdAt - updatedAt default: createdAt - name: limit in: query description: The maximum number of items to return per page. The default value if not provided is 100, the maximum allowed value is 1000. schema: type: integer - name: page in: query description: The page number to return, starting with 0, this counts up to the total number of pages. The total number of pages is determined by the total number of records divided by the limit. schema: type: integer - name: sortBy in: query description: The field to sort by. schema: type: string enum: - organizationId - status - cardholderId - updatedAt - name: sortDirection in: query description: The direction to sort by. schema: type: string enum: - ASC - DESC responses: '200': description: Ok content: application/json: schema: type: object properties: data: type: array items: type: object properties: cardId: type: string format: uuid description: The unique identifier of the card. organizationId: type: string format: uuid description: The unique identifier of the organization. cardAccountId: type: string format: uuid description: The unique identifier of the card account. cardholderId: type: string format: uuid description: The unique identifier of the cardholder. type: type: - string - 'null' deprecated: true description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases ' enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. platformFee: type: boolean description: Whether the card is used for the internal Pliant platform fee or not. cardDesignId: type: string format: uuid description: The unique identifier of the card design used for this specific card. cardDesignLogoName: type: - string - 'null' description: The name of the card design used for this specific card. createdAt: type: string format: date-time description: The date-time when card was created. updatedAt: type: string format: date-time description: The date-time when card was updated. hasNextPage: type: boolean description: Indicates whether there is a next page available. '400': description: Bad Request. The API consumer sent a malformed request which could not be processed. content: application/json: schema: $ref: '#/paths/~1card-accounts~1{cardAccountId}~1deactivate/post/responses/400/content/application~1json/schema' '401': description: Unauthorized. The API consumer is not authorized to access the requested resource. content: application/json: schema: $ref: '#/paths/~1card-accounts~1{cardAccountId}~1deactivate/post/responses/400/content/application~1json/schema' '403': description: Forbidden. The API consumer is not allowed to access the requested resource. content: application/json: schema: $ref: '#/paths/~1card-accounts~1{cardAccountId}~1deactivate/post/responses/400/content/application~1json/schema' '429': description: Too Many Requests. The API consumer has sent too many requests in a given amount of time. Please check our [API guidelines](/docs/pliant-api-guidelines#api-rate-limits). content: application/json: schema: type: object properties: error: type: string description: Detailed description of the error and breached rate limit. '500': description: Internal Server Error. The request was not completed due to an internal error. content: application/json: schema: $ref: '#/paths/~1card-accounts~1{cardAccountId}~1deactivate/post/responses/400/content/application~1json/schema' post: summary: Issue Card with Cardholder description: 'Issue a new credit card for an existing or a new cardholder. A detailed explanation of different types and statuses can be found in our guides section. Hint: you can also replace an existing card instead. If the cardholder is in the invited state at the time of issuing the card, we will park the card issuing request and automatically issue the card once the cardholder is active. Please be aware that card issuing is (as many other processes in Pliant''s API) an asynchronous process. This means you need to rely on the callback for the card being active, before you can start using it.' tags: - Cards operationId: issue-card-with-cardholder requestBody: required: true content: application/json: schema: allOf: - type: object required: - organizationId - limit - transactionLimit - cardConfig properties: cardholderId: type: - string - 'null' format: uuid description: The id of the [cardholder](/docs/cardholder-entity) to issue the card for. This cardholder needs to have a phone number, otherwise 3DS security mechanism during a purchase will not work. If not provided, you must provide a `cardholder` object to create a new cardholder as part of the card issuing process. organizationId: type: string format: uuid description: The ID of the organization to issue the card for. cardAccountId: type: string format: uuid description: The ID of the [card account](/docs/card-account) to issue the card for. If not provided, the card will be issued for the default [card account](/docs/card-account) of the organization. If the given card account has `status` `SUPERSEDED`, the request is transparently resolved to its successor (`supersededBy`) and the response carries the id of that successor card account. cardConfig: type: string description: 'The Pliant card configuration of this card. This describes all features of this card in one single configuration, e.g. the type of the card and also the design of the card etc. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. ' cardDesignId: type: - string - 'null' format: uuid description: 'The unique identifier of the card design used for this card. This field can only be set when creating virtual cards. Available designs for a card config can be retrieved via the [available cards endpoint](/reference/get-available-cards). ' label: type: - string - 'null' description: Mandatory only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`, the maximum length is 40 characters. maxLength: 40 purpose: type: string description: Mandatory only for virtual cards with `cardConfig` ending with `SINGLE_USE` maxLength: 200 validityPeriod: type: number description: "Number of months when card expires.\n- Mandatory for `cardConfig` containing `VIRTUAL` and `TRAVEL`\n- For `cardConfig` ending with `PHYSICAL` or `BLACK`: set to 36 months automatically\n- For `cardConfig` ending with `SINGLE_USE`: set to 12 months automatically\n- For `cardConfig` containing `INSURANCE`:\n - Physical insurance: set to 24 months automatically\n - Virtual insurance (excluding single-use): validated from enum, defaults to 36 months\n - Single-use insurance: set to 12 months automatically\nFor cards with fixed validity periods, user input is ignored.\n" enum: - 3 - 6 - 9 - 12 - 18 - 24 - 30 - 36 validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases, replaces the `validityPeriod` if used. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. This field can be [updated later](/reference/update-card-validity-period). This field must be `null` when issuing benefit cards. validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases, replaces the `validityPeriod` if used. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. This field can be [updated later](/reference/update-card-validity-period). This field must be `null` when issuing benefit cards. validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). This field can be [updated later](/reference/update-card-validity-period). This field must be `null` when issuing benefit cards. example: Europe/Berlin maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: ':exclamation: IMPORTANT: if the `cardConfig` is `TRAVEL` and this field is not set, the **default value will be `5`**. Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. ' limit: type: object description: The limit of the card. The limit renews according to the `limitRenewFrequency` or never, if `limitRenewFrequency` is set to `TOTAL`. This limit can later be adjusted via the [update limit endpoint](/reference/update-card-limit). The limit can be up to the organization's overall limit. For instance an organization with a limit of 1,000,000 EUR can have a card with a limit up to 1,000,000 EUR. It is also possible to have more than one card with the maximum limit. For example you can have two cards each with a limit of 1,000,000 EUR. The card limits are not added up on creation, only the transactions happening on the card are added up and checked against the organization's overall limit. The limit must be `0` (of the card's currency) when issuing benefit cards. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro. This has to match the currency of the respective [card account](/docs/card-account)! limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The frequency of the card limit renewal. * `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month, this is the default setting. * `QUARTERLY` - The card limit is renewed every calendar quarter. * `ANNUAL` - The card limit is renewed every year. * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' transactionLimit: type: object description: The transaction limit of the card. Meaning the maximum amount of a single transaction. This is always below or equal to the `limit` of the card. This limit can later be adjusted via the [update limit endpoint](/reference/update-card-limit). The transaction limit can be up to the card's limit. For instance a card with a limit of 1,000 EUR can have a transaction limit up to 1,000 EUR. The transaction limit must be `0` (of the card's currency) when issuing benefit cards. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro. This has to match the currency of the respective [card account](/docs/card-account)! customFirstName: type: - string - 'null' description: 'Optional first name on `TRAVEL` cards which will be used on the card. When used, this replaces the [cardholder](/docs/cardholder-entity) first name, which normally is used on the card. The maximum length of `customFirstName` is 50 characters. If used, both fields (`customFirstName` and `customLastName`) have to be provided with at least one character each. It is important to note, that only the following characters are allowed for issuing cards: `A-Z`, `a-z`, `0-9`, `äöüÄÖÜ.-`' maxLength: 50 customLastName: type: - string - 'null' description: 'Optional last name on `TRAVEL` cards which will be used on the card. When used, this replaces the [cardholder](/docs/cardholder-entity) last name, which normally is used on the card. The maximum length of `customLastName` is 50 characters. If used, both fields (`customFirstName` and `customLastName`) have to be provided with at least one character each. It is important to note, that only the following characters are allowed for issuing cards: `A-Z`, `a-z`, `0-9`, `äöüÄÖÜ.-`' maxLength: 50 cardControls: type: - object - 'null' description: Optionally, the card controls which will be applied to this card. $ref: '#/paths/~1cards~1{cardId}~1card-controls/put/requestBody/content/application~1json/schema/allOf/0' customFields: type: - array - 'null' description: 'Optional custom fields which can be set on a card. A custom field may have a default value which will be copied to every transaction made with this card. You can identify a custom field either by its `id` or its `label`. If both are provided, the `id` will be used. You can also create new custom fields (of type `TEXT`) on-the-fly by providing a newly, unused label and the corresponding default value you want to set. So mainly two uses cases exist: 1. Use an existing custom field on the card, mostly identified via its `id`. 2. Create a new custom field (of type `TEXT`) on-the-fly via the `label` and set it on the card.' items: type: object required: - defaultValue properties: id: type: string format: uuid description: The id of the custom field, to identify an existing custom field which should be set on this card. Either `id` or `label` has to be provided. If both are provided, the `id` will be used. label: type: string description: The label of the custom field, to identify which custom field should be set on this card. Or, to create a new custom field on-the-fly, if the label is currently unused. Either `id` or `label` has to be provided. If both are provided, the `id` will be used. defaultValue: type: string description: The default value of the custom field to set on this card. This default value will be copied to every transaction made with this card. This is not the default value of the custom field itself, but the default value of the custom field on this card! The maximum length of the default value is 64kB. maxLength: 65536 teamId: type: - string - 'null' format: uuid description: The ID of the team to issue the card for. projectId: type: - string - 'null' format: uuid description: The ID of the project to issue the card for. copilots: type: - object - 'null' description: Optional feature for `TRAVEL` cards. This feature allows to assign cardholders or teams as copilots to the card. The copilot also has access to the card and its card details alongside with the cardholder of the card itself. properties: cardholderIds: type: - array - 'null' items: type: string format: uuid description: The IDs of the cardholders to assign as copilot to the card. teamIds: type: - array - 'null' items: type: string format: uuid description: The IDs of the teams to assign as copilot to the card. deliverTo: type: - string - 'null' enum: - ORGANIZATION - CARDHOLDER description: 'Optionally, specifies where the physical card should be delivered. * `ORGANIZATION` - Ship to organization address (default) * `CARDHOLDER` - Ship to cardholder''s personal delivery address This field is only applicable for physical cards. If not provided, the card will be shipped to the organization address. The request will fail if the cardholder''s personal delivery address is not set and `deliverTo` is set to `CARDHOLDER`. ' cardholder: type: - object - 'null' description: Optional description of a new [cardholder](/docs/cardholder-entity) to be created alongside the card. If `cardholderId` is not provided, this field is required. required: - firstName - lastName - email - language properties: membershipType: type: - string - 'null' description: 'Defines how the cardholder is onboarded and accesses their cards. `STANDARD` - Cardholders receive an invitation email to register, set up a password and MFA, and become registered members with access to the Pliant web app according to their assigned role. `LIMITED` - For distributing cards via access links without requiring registration. This is also intended for direct customers sharing cards with recipients outside their organization. Cardholders do not receive a registration invitation and cannot access the Pliant web app. Instead, they access their cards through access links shared with them, with access limited to card-related functionality. The `GUEST` role is assigned automatically and does not need to be provided. `EMBEDDED` - Reserved for partners embedding the cardholder experience in their own application. No invitation email is sent. The partner is responsible for obtaining acceptance of the terms and conditions and verifying the cardholder''s phone number. If not provided, `STANDARD` is applied. `LIMITED` and `EMBEDDED` always have to be requested explicitly.' enum: - STANDARD - LIMITED - EMBEDDED salutation: type: string enum: - MR - MRS description: The Salutation used for email communication. email: type: string maxLength: 50 description: The email address of the cardholder. This will be used for email communication. If a cardholder with this email address already exists, all the information from the existing cardholder will be used, the cardholder information sent in this request will be ignored. firstName: type: string description: 'The first name of the cardholder. This will be printed on credit cards as the cardholder. It is important to note, that only the following characters are allowed for issuing cards: `A-Z`, `a-z`, `0-9`, `äöüÄÖÜ.-` The combined length of first name and last name must not exceed 24 characters. One additional character is reserved for the space inserted between them when displayed on the card (25 characters in total).' lastName: type: string description: 'The last name of the cardholder. This will be printed on credit cards as the cardholder. It is important to note, that only the following characters are allowed for issuing cards: `A-Z`, `a-z`, `0-9`, `äöüÄÖÜ.-` The combined length of first name and last name must not exceed 24 characters. One additional character is reserved for the space inserted between them when displayed on the card (25 characters in total).' language: type: string enum: - en - de - es - fi - fr - it - pt - nl - et - el - lv - lt - sk - sl - pl - hu description: Used for setting the language in Pliant apps as well as for email communication. dateOfBirth: type: - string - 'null' format: date description: The date-of-birth of the cardholder. nationality: type: - string - 'null' description: The nationality of the cardholder (ISO 3166-1 alpha-2). roles: type: array items: type: string enum: - ACCOUNT_OWNER, - ORG_ADMIN, - ACCOUNTANT, - CARDHOLDER, - LEGAL_REP - GUEST description: 'Roles of the cardholder to be created. Usually, the regular cardholder uses the `CARDHOLDER` role, granting them full access to the Pliant platform. Alternatively the `GUEST` role can be provided to give the cardholder limited access to Pliant apps. Required for `STANDARD` memberships. For `LIMITED` the `GUEST` role is assigned automatically and cannot be combined with any other role, so you do not need to provide this property. For `EMBEDDED` roles do not apply and `CARDHOLDER` is used when none is provided.' phoneNumber: type: - string - 'null' maxLength: 16 pattern: ^\+[0-9]{8,15}$ description: Phone number of the cardholder. If provided, must start with `+` followed by 8 to 15 numbers, e.g. `+49123456789`. personalAddress: type: - object - 'null' description: The personal address of the cardholder. properties: country: type: - string - 'null' maxLength: 2 description: The country of the address in ISO 3166-1 alpha-2 notation. state: type: - string - 'null' minLength: 2 maxLength: 2 pattern: ^[A-Z]{2}$ description: The US state (e.g. `CA`, `NY`). Only applicable when `country` is `US`. city: type: - string - 'null' maxLength: 50 description: The city of the address. postalCode: type: - string - 'null' maxLength: 10 description: The postal code of the address. Must match the country-specific format (e.g. 5 digits for `DE`/`FR`/`ES`, 4 digits for `AT`/`BE`). Both `postalCode` and `country` must be provided together. streetName: type: - string - 'null' maxLength: 50 description: The street name of the address. streetNumber: type: - string - 'null' maxLength: 50 description: The street number of the address. additionalInformation: type: - string - 'null' maxLength: 50 description: Optional additional address information. deliveryAddress: type: - object - 'null' description: The delivery address of the cardholder. properties: country: type: - string - 'null' maxLength: 2 description: The country of the address in ISO 3166-1 alpha-2 notation. state: type: - string - 'null' minLength: 2 maxLength: 2 pattern: ^[A-Z]{2}$ description: The US state (e.g. `CA`, `NY`). Only applicable when `country` is `US`. city: type: - string - 'null' maxLength: 50 description: The city of the address. postalCode: type: - string - 'null' maxLength: 10 description: The postal code of the address. Must match the country-specific format (e.g. 5 digits for `DE`/`FR`/`ES`, 4 digits for `AT`/`BE`). Both `postalCode` and `country` must be provided together. streetName: type: - string - 'null' maxLength: 50 description: The street name of the address. streetNumber: type: - string - 'null' maxLength: 50 description: The street number of the address. additionalInformation: type: - string - 'null' maxLength: 50 description: Optional additional address information. responses: '200': description: Ok. The card can be used after you received the callback for the card being active. content: application/json: schema: type: object properties: cardId: type: string format: uuid description: The Pliant card id (UUIDv4) of the card. type: type: - string - 'null' deprecated: true enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. ' cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. cardDesignId: type: - string - 'null' format: uuid description: The unique identifier of the card design used for this card. Present only for virtual cards. cardholderId: type: string format: uuid description: The ID of the [cardholder](/docs/cardholder-entity) this card is issued for. organizationId: type: string format: uuid description: The ID of the organization this card is issued for. cardAccountId: type: string format: uuid description: The ID of the [card account](/docs/card-account) this card is issued for. transactionLimit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. monthlyLimit: type: object deprecated: true description: Use `limit` instead properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: '* `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' expiryDate: type: string format: date-time label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: Available only for cards with type `SINGLE_USE` customFirstName: type: - string - 'null' description: Optional first name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. customLastName: type: - string - 'null' description: Optional last name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. cardControls: type: - object - 'null' $ref: '#/paths/~1cards~1{cardId}~1card-controls/put/requestBody/content/application~1json/schema/allOf/0' validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-01' validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-31' validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. clickToPayInfo: type: - object - 'null' description: 'Click to Pay enrollment information for this card. Only present for Visa cards that support Click to Pay. This object may be `null` if Click to Pay is not supported generally (e.g., per country), but normally it will be present with a `status` of `NOT_SUPPORTED` if the card type doesn''t support Click to Pay (e.g., Mastercard or Travel Purchasing Cards). ' properties: status: type: string description: 'The Click to Pay enrollment status of the card. * `NOT_SUPPORTED` - Card type doesn''t support Click to Pay (e.g., Mastercard or Travel Purchasing Cards) * `NOT_ENROLLED` - Card is eligible but not enrolled in Click to Pay * `PENDING` - Card enrollment is awaiting the cardholder''s Click to Pay member enrollment to complete * `ENROLLED` - Card is currently enrolled in Click to Pay ' enum: - NOT_SUPPORTED - NOT_ENROLLED - PENDING - ENROLLED x-enumDescriptions: NOT_SUPPORTED: Card type doesn't support Click to Pay (e.g., Mastercard or Travel Purchasing Cards). NOT_ENROLLED: Card is eligible but not enrolled in Click to Pay. PENDING: Card enrollment is awaiting the cardholder's Click to Pay member enrollment to complete. Once the member is enrolled, the card enrollment is triggered automatically. ENROLLED: Card is currently enrolled in Click to Pay. enrolledAt: type: - string - 'null' format: date-time description: Date-time when the card was enrolled in Click to Pay. `null` if the card has never been enrolled. unenrolledAt: type: - string - 'null' format: date-time description: Date-time when the card was unenrolled from Click to Pay. `null` if the card has never been unenrolled. customFields: type: array description: The [custom fields](/docs/custom-fields-on-transactions) set on this card. These [custom fields](/docs/custom-fields-on-transactions) are used as default values for every transaction made with this card. If no [custom fields](/docs/custom-fields-on-transactions) are assigned to the card, we return an empty list. items: type: object $ref: '#/paths/~1cards~1{cardId}~1custom-fields/patch/responses/202/content/application~1json/schema/items' copilots: type: - object - 'null' description: Optional feature for `TRAVEL` cards. The copilot also has access to the card and its card details alongside with the cardholder of the card itself. properties: cardholderIds: type: array items: type: string format: uuid description: The IDs of the cardholders assigned as copilots to the card. teamIds: type: array items: type: string format: uuid description: The IDs of the teams assigned as copilots to the card. additionalLimits: type: array description: Additional limits set on the card. Empty when none were configured at creation. items: type: object description: An additional limit applied to this card. properties: id: type: string format: uuid description: The unique identifier of this additional limit. Use this `id` when updating or removing the limit via `PUT /api/cards/limits/{cardId}`. limitRenewFrequency: type: string enum: - PER_TRANSACTION - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The renewal frequency of this additional limit. `PER_TRANSACTION` is only valid for additional limits, not for the card''s primary limit. * `PER_TRANSACTION` - Limit applies to each individual transaction. * `DAILY` - The limit is renewed every day. * `WEEKLY` - The limit is renewed every week. * `MONTHLY` - The limit is renewed every calendar month. * `QUARTERLY` - The limit is renewed every calendar quarter. * `ANNUAL` - The limit is renewed every year. * `TOTAL` - The limit is never renewed. Once spent, no further transactions are allowed under this limit. ' limit: type: object description: The monetary cap for this additional limit. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. maxTransactionCount: type: - number - 'null' minimum: 1 maximum: 999999999 description: Maximum number of transactions allowed under this additional limit within its renewal period. Null if no transaction-count cap is configured. scope: type: - object - 'null' description: The scope restriction of this additional limit. Null when no scope is defined (`categories` and `acceptanceMethods` empty, `atmWithdrawal` false, `currency` null). properties: categories: type: array description: Merchant category types this limit applies to. Empty when no category restriction is set. items: type: string enum: - ADVERTISING_AND_MARKETING - COMPUTING_AND_SOFTWARE - EDUCATION_AND_TRAINING - ELECTRONICS_AND_IT_EQUIPMENT - ENTERTAINMENT_AND_WELLNESS - FOOD_AND_DRINKS - GIFTS_AND_VOUCHERS - HEALTHCARE - MATERIALS_AND_PACKAGING - OFFICE_SUPPLIES_AND_EQUIPMENT - SERVICES - TRAVEL_AND_ACCOMMODATION - OTHER acceptanceMethods: type: array description: The card acceptance methods this limit applies to. Empty when no acceptance-method restriction is set. items: type: string enum: - ONLINE - MOBILE_WALLET - MANUAL_ENTRY - CONTACTLESS - CHIP_DIP - NOT_AVAILABLE - MAGNETIC_STRIPE - OTHER atmWithdrawal: type: boolean description: When `true`, this additional limit applies to ATM withdrawal transactions. currency: type: - string - 'null' description: ISO 4217 currency code this limit is scoped to, e.g. `PLN`. Null when no currency scope is defined. balanceInfo: type: - object - 'null' description: Spending balance information for this additional limit. Null when no balance record exists. properties: balance: type: object description: Amount spent under this additional limit in the current renewal period. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. availableLimit: type: object description: Remaining amount available under this additional limit in the current renewal period. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limitRenewDate: type: - string - 'null' format: date description: Date when this additional limit's balance will next be renewed, e.g. `2026-06-01`. Null for `TOTAL` frequency limits. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': description: Not Found. The requested resource could not be found. content: application/json: schema: $ref: '#/paths/~1card-accounts~1{cardAccountId}~1deactivate/post/responses/400/content/application~1json/schema' '422': description: Unprocessable Content. The request could not be completed due to contents of the request. The syntax of the request content was correct. content: application/json: schema: $ref: '#/paths/~1card-accounts~1{cardAccountId}~1deactivate/post/responses/400/content/application~1json/schema' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/available-cards: get: summary: Available Card Configs description: Returns a list of card configurations which are available for the API user to issue for the given organization. Pliant describes cards with a so called `cardConfig`. The card config describes all relevant aspects of a card, like the look of the card or the type of the card. Card configs can be used to issue new cards and they then replace the old `type` field of the card issuing. tags: - Cards operationId: get-available-cards parameters: - name: organizationId required: true description: The unique identifier of the organization. in: query schema: type: string format: uuid responses: '200': description: Ok content: application/json: schema: type: object required: - cardConfigs properties: cardConfigs: type: array description: A list of card configs which are available for the API user to issue for the given organization. items: type: object properties: id: type: string format: uuid description: The unique identifier of the card config. accountGroup: type: string description: The account group this card config belongs to. cardConfig: type: string description: The technical name of the card config. This can be used as a parameter for the [card issuing](./issue-card) endpoint. canBeIssued: type: boolean description: Indicates whether new cards can currently be issued using this card config. name: type: string description: The business name of the card config. description: type: - string - 'null' description: A description of the card config. type: type: string description: Determines if the card is virtual or physical. enum: - VIRTUAL - PHYSICAL country: type: string description: The country-availability of the card config in ISO 3166-1 alpha-2 notation. minLength: 2 maxLength: 2 maxTransactions: type: - integer - 'null' description: The maximum number of transactions which are allowed on cards using this card config. If this is `null`, there is no limit. If this is `1`, the card can only be used once etc. cardDesigns: type: array description: A list of card designs which are available for this specific card config. items: type: object properties: cardDesignId: type: string format: uuid description: The unique identifier of the card design. cardDesignLogoName: type: - string - 'null' description: The name of the card design. fundingType: type: - string - 'null' description: '* `CHARGE` - normal (non-benefit) credit card * `LOAD_BASED_ACCRUING` - benefit card where money not spent is transferred to the next month * `LOAD_BASED_NON_ACCRUING` - benefit card where money not spent is lost end of month * `BALANCE_BASED` - benefit card with a standing balance that persists across months and is spent down until depleted (no monthly reset). ' enum: - CHARGE - LOAD_BASED_ACCRUING - LOAD_BASED_NON_ACCRUING - BALANCE_BASED loadBasedSettings: type: - object - 'null' description: 'Defines the load configuration for this card config. Only filled for cards with `LOAD_BASED_ACCRUING` or `LOAD_BASED_NON_ACCRUING` funding type. ' properties: fixedFrequency: type: string description: 'The frequency at which the card is loaded. * `MONTHLY` - loaded once per month * `QUARTERLY` - loaded once per quarter * `ANNUAL` - loaded once per year ' enum: - MONTHLY - QUARTERLY - ANNUAL fixedAmount: type: object description: The fixed amount loaded onto the card at each load interval. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. clickToPaySupported: type: boolean description: Whether this card configuration supports Visa Click to Pay enrollment. Only Visa cards (excluding Travel Purchasing Cards) support Click to Pay. expiryPeriodsInMonths: description: Defines available expiry periods for this card config in months. type: array items: type: integer cardAccounts: type: array description: The set of card account IDs associated with this card config. items: type: string format: uuid cardControls: type: object description: A summary of the card control settings available for this card config, indicating which controls are enabled, editable, and required. properties: categories: type: object description: Card controls based on merchant category. Keys are category control types (`MCC`, `CATEGORY`). additionalProperties: $ref: '#/paths/~1cards~1available-cards/get/responses/200/content/application~1json/schema/properties/cardConfigs/items/properties/cardControls/properties/dates/additionalProperties' merchants: type: object description: Card controls based on specific merchants. Keys are merchant control types (`MATCH_TERM`, `MID`, `PMDB_ID`). additionalProperties: $ref: '#/paths/~1cards~1available-cards/get/responses/200/content/application~1json/schema/properties/cardConfigs/items/properties/cardControls/properties/dates/additionalProperties' dates: type: object description: Card controls based on date restrictions. Keys are date control types (`FIXED`, `WEEKLY`, `MONTHLY`, `YEARLY`). additionalProperties: type: object description: Describes the availability of a specific card control for cards issued with this card config. required: - enabled - editable - required properties: enabled: type: boolean description: Whether this card control is enabled for cards using this card config. editable: type: boolean description: Whether cardholders or card managers can change this control on individual cards. required: type: boolean description: Whether this control must always be set and cannot be removed from cards using this card config. times: type: object description: Card controls based on time-of-day restrictions. Keys are time control types (`TIMERANGE`). additionalProperties: $ref: '#/paths/~1cards~1available-cards/get/responses/200/content/application~1json/schema/properties/cardConfigs/items/properties/cardControls/properties/dates/additionalProperties' locations: type: object description: Card controls based on geographic location. Keys are location control types (`POSTAL_CODE`, `REGION`). additionalProperties: $ref: '#/paths/~1cards~1available-cards/get/responses/200/content/application~1json/schema/properties/cardConfigs/items/properties/cardControls/properties/dates/additionalProperties' acceptanceMethods: type: object description: Card controls based on payment acceptance method. Keys are acceptance method types (`ONLINE`, `MOBILE_WALLET`, `MANUAL_ENTRY`, `CONTACTLESS`, `CHIP_DIP`, `NOT_AVAILABLE`, `MAGNETIC_STRIPE`, `OTHER`). additionalProperties: $ref: '#/paths/~1cards~1available-cards/get/responses/200/content/application~1json/schema/properties/cardConfigs/items/properties/cardControls/properties/dates/additionalProperties' countries: description: Card control settings for country-based restrictions. allOf: - $ref: '#/paths/~1cards~1available-cards/get/responses/200/content/application~1json/schema/properties/cardConfigs/items/properties/cardControls/properties/dates/additionalProperties' copilotAllowed: type: boolean description: Indicates whether the Pliant Copilot feature is available for cards using this card config. transactionCountLimitSupported: type: boolean description: Indicates whether a transaction count limit can be configured on cards using this card config. validityPeriodEnabled: type: boolean description: Indicates whether a custom validity period can be set on cards using this card config. premiumProductType: type: - string - 'null' description: The premium product type associated with this card config, if applicable. network: type: string description: The card network (e.g. `VISA`, `MASTERCARD`) for this card config. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/details: post: summary: Card Details description: 'Returns card details for one or more cards depending on the given input. You can also request card details per cardholder(s) or organization(s). The API returns all card details to the given input which can be found in the system. So you can also combine the different input fields (OR relation). Be aware that the usage of cardholder or organizations IDs most likely add multiple card details themselves. Also cardholders can be part of multiple organizations, thus when searching via cardholder IDs, it might return more data than it would for just one organization this cardholder is part of. At least one parameter has to be set. **This endpoint has changed in comparison to the previous version of the API.** The following changes were made: - added `cardControls` to response body - changed the enumeration for the status field in the response body - deprecated `type` and replaced it with `cardConfig`' tags: - Cards operationId: get-multiple-card-details requestBody: required: true description: All fields are optional content: application/json: schema: type: object properties: cardIds: type: array items: type: string format: uuid cardholderIds: type: array items: type: string format: uuid organizationIds: type: array items: type: string format: uuid pagination: type: object properties: page: type: integer description: The page number to return, starting with 0, this counts up to the total number of pages. The total number of pages is determined by the total number of records divided by the limit. limit: type: integer description: The number of records to return per page. sortBy: type: object description: The field to sort by and the direction to sort by. properties: field: type: string description: The field to sort by. enum: - organizationId - status - cardholderId - updatedAt default: updatedAt direction: description: The direction to sort by. type: string enum: - ASC - DESC default: ASC responses: '200': description: Ok content: application/json: schema: type: object properties: data: type: array items: type: object properties: cardId: type: string format: uuid description: The unique identifier of the card. cardRequestId: type: - string - 'null' format: uuid description: If this card originated from a card request, this field contains the unique identifier of the card request. organizationId: type: string format: uuid description: The unique identifier of the organization, this card belongs to. cardholderId: type: string format: uuid description: The unique identifier of the cardholder, this card belongs to. cardAccountId: type: string format: uuid description: The unique identifier of the card account, this card belongs to. type: type: - string - 'null' deprecated: true description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases ' enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. status: type: string description: 'The status of the card. **Deprecation Notice:** The status values `PENDING_ACTIVATION`, `PENDING_ISSUANCE`, and `PENDING_REGISTRATION` are deprecated and will be mapped to `PENDING` with appropriate `pendingDetails` in the future. Use `PENDING` with the corresponding `pendingDetails` value instead. ' enum: - PENDING - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - REQUEST_APPROVED - REQUESTED - REQUEST_CANCELLED - REQUEST_REJECTED - ACTIVE - LOCKED - LOCKED_PIN - EXPIRED - TERMINATED - TERMINATED_LOST - TERMINATED_STOLEN x-enumDescriptions: PENDING: Card is in a pending state. Check `pendingDetails` for the specific reason. PENDING_ACTIVATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ACTIVATION` instead.~~' PENDING_ISSUANCE: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ISSUANCE` instead.~~' PENDING_REGISTRATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_REGISTRATION` instead.~~' REQUEST_APPROVED: Card request has been approved. REQUESTED: Card has been requested. REQUEST_CANCELLED: Card request has been cancelled. REQUEST_REJECTED: Card request has been rejected. ACTIVE: Card is active and can be used. LOCKED: Card is locked. LOCKED_PIN: Card is locked due to PIN issues. EXPIRED: Card has expired. TERMINATED: Card has been terminated. TERMINATED_LOST: Card has been terminated because it was lost. TERMINATED_STOLEN: Card has been terminated because it was stolen. pendingDetails: type: - string - 'null' description: 'The internal reason for a card''s pending state. This field is only populated when `status` is `PENDING` or one of the deprecated `PENDING_...` statuses, and will be `null` for all non-pending statuses. ' enum: - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - PENDING_VALIDITY - PENDING_SANCTION_SCREEN - PENDING_INFORMATION x-enumDescriptions: PENDING_ACTIVATION: Card is pending activation. PENDING_ISSUANCE: Card is pending issuance. PENDING_REGISTRATION: Card is pending registration. PENDING_VALIDITY: Card is pending validity period. PENDING_SANCTION_SCREEN: Card is pending sanction screening. PENDING_INFORMATION: Card is pending additional information. label: type: - string - 'null' description: A short text describing the card. Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: A short text describing the card. Available only for virtual cards with a `cardConfig` containing `SINGLE_USE`, the maximum length is 40 characters. maxLength: 40 refNum: type: - string - 'null' description: The last 4 digits of the PAN (payment card number), better known as the credit card number. It can be `null` e.g. for terminated cards. issuingDate: type: - string - 'null' description: Date-time of card issuing, e.g. `2023-08-23T14:28:53.600608Z`. Can be null e.g. for cards which are requested by a [cardholder](/docs/cardholder-entity) but the request is declined. format: date-time expiryDate: type: - string - 'null' description: Date-time (without nanoseconds) when card expires, e.g. `2026-07-31T23:59:59Z`. For cards with type `SINGLE_USE` this is set to 12 months automatically and every value put here is ignored. Can be null e.g. for cards which are requested by a [cardholder](/docs/cardholder-entity) but the request is declined. format: date-time limit: type: object description: The limit of the card, describing the overall limit of this card. It might get reset regularly depending on the field `limitRenewFrequency`. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. transactionLimit: type: object description: The transaction limit of the card, describing the maximum amount a single transaction can have on this card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. spendingBalance: type: object description: The spending balance of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. availableBalance: type: object description: The available balance of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. token: type: string description: The network token of the card. cardDesign: type: string description: The card design of the card on Thredd (Pliant's credit card processor) side. productRef: type: string description: The product reference of the card on Thredd (Pliant's credit card processor) side. This field is deprecated and will be removed in the future. Use `cardDesignId` instead. deprecated: true platformFee: type: boolean description: Whether the card is used for the internal Pliant platform fee or not. limitPeriodEnd: type: string description: Date-time (without nanoseconds) when the current limit period ends, e.g. `2023-09-30T23:59:59Z`. format: date-time limitRenewDate: type: string description: Date when the limit will be renewed, e.g. `2023-10-01`. format: date limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: "Describes how often the limit of the card is renewed.\n * `DAILY` - The card limit is renewed every day\n * `WEEKLY` - The card limit is renewed every week\n * `MONTHLY` - The card limit is renewed every calendar month\n * `QUARTERLY` - The card limit is renewed every calendar quarter\n * `ANNUAL` - The card limit is renewed every year\n * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore.\n" customFirstName: type: - string - 'null' description: Optional first name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. customLastName: type: - string - 'null' description: Optional last name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. cardControls: type: - object - 'null' description: The card controls of the card, if any apply. $ref: '#/paths/~1cards~1{cardId}~1card-controls/put/requestBody/content/application~1json/schema/allOf/0' replacedByCardId: type: - string - 'null' format: uuid description: Filled, if this card was replaced by another card. replacedCardId: type: - string - 'null' format: uuid description: Filled, if this card replaced another card. replacementReason: type: - string - 'null' description: Describes the reason for the card replacement, if any happened. enum: - DAMAGED - EXPIRING_SOON - LOST - OTHER - STOLEN shippingDate: type: - string - 'null' description: Date-time when the physical card was shipped, e.g. `2023-10-16T11:34:59.595Z`. This field is empty for all other types of cards, or when the physical card is not shipped yet. format: date-time panAlias: type: - string - 'null' description: The PAN alias of the card. This is not the real credit card number (PAN) but a alias version of it. validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-01' validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-31' validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. customFields: type: array description: The [custom fields](/docs/custom-fields-on-transactions) set on this card. These [custom fields](/docs/custom-fields-on-transactions) are used as default values for every transaction made with this card. items: type: object $ref: '#/paths/~1cards~1{cardId}~1custom-fields/patch/responses/202/content/application~1json/schema/items' cardDesignId: type: string format: uuid description: The unique identifier of the card design used for this specific card. cardDesignLogoName: type: - string - 'null' description: The name of the card design used for this specific card. maskedPan: type: string description: The masked PAN of the card. This is the real credit card number (PAN) but with the middle digits replaced by `*`. E.g. `481063******6054`. benefit: type: boolean description: Indicates that the card was issued as an employee benefit. copilots: type: - object - 'null' description: Optional feature for `TRAVEL` cards. The copilot also has access to the card and its card details alongside with the cardholder of the card itself. properties: cardholderIds: type: array items: type: string format: uuid description: The IDs of the cardholders assigned as copilots to the card. teamIds: type: array items: type: string format: uuid description: The IDs of the teams assigned as copilots to the card. clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' fundingType: type: string description: '* `CHARGE` - normal (non-benefit) credit card * `LOAD_BASED_ACCRUING` - benefit card where money not spent is transferred to the next month * `LOAD_BASED_NON_ACCRUING` - benefit card where money not spent is lost end of month * `BALANCE_BASED` - benefit card with a standing balance that persists across months and is spent down until depleted (no monthly reset). ' enum: - CHARGE - LOAD_BASED_ACCRUING - LOAD_BASED_NON_ACCRUING - BALANCE_BASED nextLoadDate: type: string format: date description: For cards that are loaded periodically, indicates the date when the card will be loaded the next time. additionalLimits: type: array description: Additional limits on this card. Empty when none are configured. items: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/additionalLimits/items' hasNextPage: type: boolean description: Indicates whether there is a next page available. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/instant: post: summary: Issue Card with Cardholder (Instant) description: 'This endpoint offers similar card issuing functionality as the main card issuing and cardholder creation endpoint, but specifically allows for a _synchronous_ and _instant_ card issuing and cardholder creation, whereas the main card issuing flow works asynchronously and requires the consumption of a callback to confirm the card is actually active. This endpoint issues cards instantly in a synchronous fashion. Meaning the card is active and usable when this endpoint returns a `200 Ok` response. The use case being here a fully automated card issuing flow, followed by an immediate card usage on API level for normally PCI-DSS certified companies. Please note, that the sensitive card data still needs to be fetched separately after issuing a new card (if PCI-DSS compliant). **This endpoint should only be used if aligned with Pliant upfront. In 90% of cases, you want to use the normal card issuing endpoint instead, as linked above.**' tags: - Cards operationId: issue-card-with-cardholder-instant requestBody: required: true content: application/json: schema: allOf: - $ref: '#/paths/~1cards/post/requestBody/content/application~1json/schema/allOf/0' responses: '200': description: Ok. The card can be directly used now. content: application/json: schema: type: object properties: cardId: type: string format: uuid description: The Pliant card id (UUIDv4) of the card. type: type: - string - 'null' deprecated: true enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. ' cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. cardDesignId: type: - string - 'null' format: uuid description: The unique identifier of the card design used for this card. Present only for virtual cards. cardholderId: type: string format: uuid description: The ID of the [cardholder](/docs/cardholder-entity) this card is issued for. organizationId: type: string format: uuid description: The ID of the organization this card is issued for. cardAccountId: type: string format: uuid description: The ID of the [card account](/docs/card-account) this card is issued for. transactionLimit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. monthlyLimit: type: object deprecated: true description: Use `limit` instead properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: '* `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' expiryDate: type: string format: date-time label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: Available only for cards with type `SINGLE_USE` customFirstName: type: - string - 'null' description: Optional first name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. customLastName: type: - string - 'null' description: Optional last name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. cardControls: type: - object - 'null' $ref: '#/paths/~1cards~1{cardId}~1card-controls/put/requestBody/content/application~1json/schema/allOf/0' validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-01' validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-31' validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' customFields: type: array description: The [custom fields](/docs/custom-fields-on-transactions) set on this card. These [custom fields](/docs/custom-fields-on-transactions) are used as default values for every transaction made with this card. If no [custom fields](/docs/custom-fields-on-transactions) are assigned to the card, we return an empty list. items: type: object $ref: '#/paths/~1cards~1{cardId}~1custom-fields/patch/responses/202/content/application~1json/schema/items' maskedPan: type: string description: The masked PAN of the card. This is the real credit card number (PAN) but with the middle digits replaced by `*`. E.g. `481063******6054`. teamId: type: - string - 'null' format: uuid description: The ID of the team the card is issued for. teamName: type: - string - 'null' description: Name of the team the card is issued for. projectId: type: - string - 'null' format: uuid description: The ID of the project the card is issued for. projectName: type: - string - 'null' description: Name of the project the card is issued for. copilots: type: - object - 'null' description: Optional feature for `TRAVEL` cards. The copilot also has access to the card and its card details alongside with the cardholder of the card itself. properties: cardholderIds: type: array items: type: string format: uuid description: The IDs of the cardholders assigned as copilots to the card. teamIds: type: array items: type: string format: uuid description: The IDs of the teams assigned as copilots to the card. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '422': $ref: '#/paths/~1cards/post/responses/422' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/instant-pci: post: summary: Issue Card with Cardholder (Instant as PCI-DSS) description: 'This endpoint offers similar card issuing functionality as the main card issuing and cardholder creation endpoint, but specifically allows for a _synchronous_ and _instant_ card issuing and cardholder creation, **including PCI-DSS compliant sensitive card data retrieval**, which can be then found in the response as object `sensitiveCardData`. This endpoint issues cards instantly in a synchronous fashion and returns the sensitive card data like the cards PAN and CVV directly. Meaning the card is active and usable when this endpoint returns a `200 Ok` response and you can directly use the card data to do a purchase of any kind. The use case being here a fully automated card issuing flow, followed by an immediate card usage on API level. **This endpoint can only be used after a separate configuration done by Pliant and the partner using this endpoint needs to be PCI-DSS certified!** **A dedicated host URL `pci-api.getpliant.com` is used for this endpoint!** Please refer to the documentation for more information.' tags: - Cards operationId: issue-card-with-cardholder-instant-with-pci requestBody: required: true content: application/json: schema: allOf: - $ref: '#/paths/~1cards/post/requestBody/content/application~1json/schema/allOf/0' responses: '200': description: Ok. The card can be directly used now. content: application/json: schema: type: object properties: cardId: type: string format: uuid description: The Pliant card id (UUIDv4) of the card. type: type: - string - 'null' deprecated: true enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. ' cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. cardDesignId: type: - string - 'null' format: uuid description: The unique identifier of the card design used for this card. Present only for virtual cards. cardholderId: type: string format: uuid description: The ID of the [cardholder](/docs/cardholder-entity) this card is issued for. organizationId: type: string format: uuid description: The ID of the organization this card is issued for. cardAccountId: type: string format: uuid description: The ID of the [card account](/docs/card-account) this card is issued for. transactionLimit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. monthlyLimit: type: object deprecated: true description: Use `limit` instead properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: '* `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' expiryDate: type: string format: date-time label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: Available only for cards with type `SINGLE_USE` customFirstName: type: - string - 'null' description: Optional first name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. customLastName: type: - string - 'null' description: Optional last name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. cardControls: type: - object - 'null' $ref: '#/paths/~1cards~1{cardId}~1card-controls/put/requestBody/content/application~1json/schema/allOf/0' validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-01' validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-31' validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' customFields: type: array description: The [custom fields](/docs/custom-fields-on-transactions) set on this card. These [custom fields](/docs/custom-fields-on-transactions) are used as default values for every transaction made with this card. If no [custom fields](/docs/custom-fields-on-transactions) are assigned to the card, we return an empty list. items: type: object $ref: '#/paths/~1cards~1{cardId}~1custom-fields/patch/responses/202/content/application~1json/schema/items' sensitiveCardData: type: object description: The sensitive card data like the PAN and CVV of the card. This is only available for PCI-DSS certified companies. properties: id: type: string format: uuid description: The Pliant internal ID of the card. pan: type: string minLength: 16 maxLength: 16 description: The PAN (Primary Account Number) of the card, also known as the credit card number. cvv: type: string minLength: 3 maxLength: 3 description: The CVV (Card Verification Value) of the card, also known as the card security code. expiryMonth: type: integer description: The expiry month of the card. expiryYear: type: integer description: The expiry year of the card. teamId: type: - string - 'null' format: uuid description: The ID of the team the card is issued for. teamName: type: - string - 'null' description: Name of the team the card is issued for. projectId: type: - string - 'null' format: uuid description: The ID of the project the card is issued for. projectName: type: - string - 'null' description: Name of the project the card is issued for. copilots: type: - object - 'null' description: Optional feature for `TRAVEL` cards. The copilot also has access to the card and its card details alongside with the cardholder of the card itself. properties: cardholderIds: type: array items: type: string format: uuid description: The IDs of the cardholders assigned as copilots to the card. teamIds: type: array items: type: string format: uuid description: The IDs of the teams assigned as copilots to the card. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '422': $ref: '#/paths/~1cards/post/responses/422' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/limits/{cardId}: put: summary: Update Card Limit description: 'Change the card limit for a given virtual or physical card, as long as the card is not terminated. This is unrelated to the renew frequency of the card. Meaning you can update the limit of a card with a `TOTAL` renew frequency (equals no limit renewal) as well as a `MONTHLY` renew frequency etc. **Additional limits:** Use the `additionalLimits` field to create, update, or remove additional limits on the card in the same request. - Entries **with** an `id` → update the matching existing additional limit. - Entries **without** an `id` → create a new additional limit. - Existing additional limits **omitted** from the array → soft-delete (removed). - Passing `null` or omitting `additionalLimits` → leave existing additional limits unchanged. - Passing an **empty array `[]`** → remove all additional limits from the card. **Response:** This endpoint returns `204 No Content`. To read the updated limit state use `GET /api/cards/{cardId}` or subscribe to the `CARD_LIMITS_CHANGED` callback.' tags: - Cards operationId: update-card-limit parameters: - name: cardId in: path description: The ID of the card to update the limit for. required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: allOf: - type: object required: - limit - transactionLimit properties: limit: type: object description: The limit of the card. The limit renews according to the `limitRenewFrequency` or never, if `limitRenewFrequency` is set to `TOTAL`. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)! limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The frequency of the card limit renewal. * `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month, this is the default setting. * `QUARTERLY` - The card limit is renewed every calendar quarter. * `ANNUAL` - The card limit is renewed every year. * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' transactionLimit: type: object description: The transaction limit of the card. Meaning the maximum amount of a single transaction. This is always below or equal to the `limit` of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)! maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: 'Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. ' monthlyLimit: type: object deprecated: true properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)! - type: object properties: additionalLimits: type: - array - 'null' description: Additional limits to create, update, or remove. See endpoint description for update semantics. items: type: object description: 'An additional limit to set on a card. **Update semantics (applies to `PUT /api/cards/limits/{cardId}`):** - Entries **with** an `id` → update the matching existing additional limit. - Entries **without** an `id` → create a new additional limit. - Existing additional limits **omitted** from the array → soft-delete (removed from the card). - Passing `null` or omitting `additionalLimits` entirely → leave existing additional limits unchanged. - Passing an **empty array `[]`** → remove all additional limits from the card. The `id` field is only meaningful for `PUT /api/cards/limits/{cardId}` and `POST /api/cards/limits/requests`. It is ignored in all other contexts. ' properties: id: type: - string - 'null' format: uuid description: Identifies an existing additional limit to update. Omit or set to null to create a new limit. Only meaningful for `PUT /api/cards/limits/{cardId}` and `POST /api/cards/limits/requests`. limitRenewFrequency: type: string enum: - PER_TRANSACTION - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The renewal frequency for this additional limit. `PER_TRANSACTION` is only valid for additional limits, not for the card''s primary limit. * `PER_TRANSACTION` - Limit applies to each individual transaction. * `DAILY` - The limit is renewed every day. * `WEEKLY` - The limit is renewed every week. * `MONTHLY` - The limit is renewed every calendar month. * `QUARTERLY` - The limit is renewed every calendar quarter. * `ANNUAL` - The limit is renewed every year. * `TOTAL` - The limit is never renewed. Once spent, no further transactions are allowed under this limit. ' limit: type: object description: The monetary cap for this additional limit. For unscoped limits and limits with `categories`, `acceptanceMethods`, or `atmWithdrawal` scope, the currency must match the card account currency. For currency-scoped limits (`scope.currency` is set), the currency must match `scope.currency`. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. maxTransactionCount: type: - number - 'null' minimum: 1 maximum: 999999999 description: Max number of transactions per renewal period (`1..999999999`). Null means no cap. scope: type: - object - 'null' description: 'Restricts when this limit applies. Null for a general (unscoped) limit. At least one of `categories`, `acceptanceMethods`, `atmWithdrawal: true`, or `currency` must be set for a scoped limit.' properties: categories: type: - array - 'null' description: Merchant category types this limit applies to. items: type: string enum: - ADVERTISING_AND_MARKETING - COMPUTING_AND_SOFTWARE - EDUCATION_AND_TRAINING - ELECTRONICS_AND_IT_EQUIPMENT - ENTERTAINMENT_AND_WELLNESS - FOOD_AND_DRINKS - GIFTS_AND_VOUCHERS - HEALTHCARE - MATERIALS_AND_PACKAGING - OFFICE_SUPPLIES_AND_EQUIPMENT - SERVICES - TRAVEL_AND_ACCOMMODATION - OTHER acceptanceMethods: type: - array - 'null' description: The card acceptance methods this limit applies to. items: type: string enum: - ONLINE - MOBILE_WALLET - MANUAL_ENTRY - CONTACTLESS - CHIP_DIP - NOT_AVAILABLE - MAGNETIC_STRIPE - OTHER atmWithdrawal: type: - boolean - 'null' description: When `true`, this additional limit applies to ATM withdrawal transactions. currency: type: - string - 'null' description: 'ISO 4217 currency code this limit applies to, e.g. `PLN` or `USD`. When set, the limit tracks spending in that currency only and is independent of the card''s billing currency. Constraints: * Must differ from the card account''s billing currency. * The `limit` amount currency must equal this value. ' responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/load: post: summary: Load Benefit Cards description: 'Load money onto a batch of benefit cards. Provide a list of cards and individual amounts to be loaded onto each card. If all pre-conditions are fulfilled, then the request is accepted and processed asynchronously. Listen for appropriate `CARD_BALANCE_UPDATED` callbacks. If any of the pre-conditions is not fulfilled, the request will be rejected immediately. All cards have to be eligible for card loading, i.e. they are active benefit cards and belong to the same organization. There has to be enough money on the organization''s card-account. All requested amounts must be positive and specified in the card-account''s currency.' tags: - Cards operationId: load-cards-batch requestBody: required: true content: application/json: schema: type: object properties: cards: type: array items: type: object properties: cardId: type: string format: uuid loadAmount: type: object description: The amount of money to be loaded on this card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. responses: '202': description: Ok. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/subscription: post: summary: 'Callback: Add/Update' description: Subscribe to callbacks for this entity or change an existing callback. tags: - Cards operationId: create-card-subscription requestBody: required: true content: application/json: schema: type: object properties: callbackUrl: type: string format: uri example: https://myserver.com/send/callback/here description: The URL to send the callback to. Must be a valid and reachable URL. We do some basic validation to ensure the URL is syntactically correct and reachable for Pliant. Only HTTPS URLs are supported. eventTypes: type: array items: type: string description: "The event types to subscribe to.\nThe initial flow of events for cards is: \n`CARD_CREATED` - as soon as the card is created within Pliant, \n`CARD_ISSUED` - when the card is issued with the card issuer, and \n`CARD_ACTIVATED` - when the card is activated by the system or [cardholder](/docs/cardholder-entity) (virtual cards get activated automatically by the system, physical card are activated by the cardholder).\nAll other callback types can occur later over the lifetime of the card.\n" enum: - CARD_CREATED - CARD_ISSUED - CARD_ACTIVATED - CARD_LOCKED - CARD_UNLOCKED - CARD_TERMINATED - CARD_EXPIRED - CARD_LIMIT_CHANGED - CARD_LIMIT_CHANGE_FAILED - CARD_DETAILS_CHANGED - CARD_BALANCE_UPDATED - CARD_AVAILABLE_BALANCE_CHANGED - CARD_STATUS_CHANGED - CARD_VALIDITY_UPDATED - CARD_SHIPPED - CARD_CLICK_TO_PAY_INFO_CHANGED - CARD_BENEFIT_LOADED - CARD_BENEFIT_UNLOADED - CARD_LIMITS_CHANGED - CARD_ACCESS_LINK_REQUESTED - CARD_REASSIGNED required: - callbackUrl - eventTypes responses: '201': description: Created '401': description: Unauthorized '403': description: Forbidden '500': description: Internal Server Error callbacks: cardUpdated: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_CREATED`, `CARD_ISSUED`, `CARD_ACTIVATED`, `CARD_LOCKED`, `CARD_UNLOCKED`, `CARD_TERMINATED`, `CARD_LIMIT_CHANGED`, `CARD_DETAILS_CHANGED`, `CARD_SHIPPED`.' content: application/json: schema: allOf: - type: object properties: eventType: type: string description: The type of event. - properties: cardId: type: string format: uuid organizationId: type: string format: uuid cardholderId: type: string format: uuid cardAccountId: type: string format: uuid description: The unique identifier of the [card account](/docs/card-account). type: type: - string - 'null' deprecated: true description: 'Deprecated, please use `cardConfig` instead. `BLACK` - Physical black premium credit card `PHYSICAL` - Physical credit card `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `TRAVEL` - Virtual cards used specifically in travel industry related use cases ' enum: - BLACK - PHYSICAL - VIRTUAL - SINGLE_USE - TRAVEL cardConfig: type: string description: Please contact your Pliant contact person for details cardDesignId: type: - string - 'null' format: uuid description: The unique identifier of the card design used for this card. Present only for virtual cards. status: type: string description: 'The status of the card. **Deprecation Notice:** The status values `PENDING_ACTIVATION`, `PENDING_ISSUANCE`, and `PENDING_REGISTRATION` are deprecated and will be mapped to `PENDING` with appropriate `pendingDetails` in the future. Use `PENDING` with the corresponding `pendingDetails` value instead. ' enum: - PENDING - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - REQUEST_APPROVED - REQUESTED - REQUEST_CANCELLED - REQUEST_REJECTED - ACTIVE - LOCKED - LOCKED_PIN - EXPIRED - TERMINATED - TERMINATED_LOST - TERMINATED_STOLEN x-enumDescriptions: PENDING: Card is in a pending state. Check `pendingDetails` for the specific reason. PENDING_ACTIVATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ACTIVATION` instead.~~' PENDING_ISSUANCE: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ISSUANCE` instead.~~' PENDING_REGISTRATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_REGISTRATION` instead.~~' REQUEST_APPROVED: Card request has been approved. REQUESTED: Card has been requested. REQUEST_CANCELLED: Card request has been cancelled. REQUEST_REJECTED: Card request has been rejected. ACTIVE: Card is active and can be used. LOCKED: Card is locked. LOCKED_PIN: Card is locked due to PIN issues. EXPIRED: Card has expired. TERMINATED: Card has been terminated. TERMINATED_LOST: Card has been terminated because it was lost. TERMINATED_STOLEN: Card has been terminated because it was stolen. pendingDetails: type: - string - 'null' description: 'The internal reason for a card''s pending state. This field is only populated when `status` is `PENDING` or one of the deprecated `PENDING_...` statuses, and will be `null` for all non-pending statuses. ' enum: - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - PENDING_VALIDITY - PENDING_SANCTION_SCREEN - PENDING_INFORMATION x-enumDescriptions: PENDING_ACTIVATION: Card is pending activation. PENDING_ISSUANCE: Card is pending issuance. PENDING_REGISTRATION: Card is pending registration. PENDING_VALIDITY: Card is pending validity period. PENDING_SANCTION_SCREEN: Card is pending sanction screening. PENDING_INFORMATION: Card is pending additional information. label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: Available only for virtual cards with type `SINGLE_USE` limitChange: type: - object - 'null' description: Filled only for events of type CARD_LIMIT_CHANGED properties: beforeChange: type: - object - 'null' properties: limit: type: object properties: value: type: number currency: type: string limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: '* `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' transactionLimit: type: object properties: value: type: number currency: type: string afterChange: type: - object - 'null' properties: limit: type: object properties: value: type: number currency: type: string limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: '* `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' transactionLimit: type: object properties: value: type: number currency: type: string isBenefit: type: - boolean - 'null' description: Indicates that the card was issued as an employee benefit. clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' fundingType: type: string description: '* `CHARGE` - normal (non-benefit) credit card * `LOAD_BASED_ACCRUING` - benefit card where money not spent is transferred to the next month * `LOAD_BASED_NON_ACCRUING` - benefit card where money not spent is lost end of month * `BALANCE_BASED` - benefit card with a standing balance that persists across months and is spent down until depleted (no monthly reset). ' enum: - CHARGE - LOAD_BASED_ACCRUING - LOAD_BASED_NON_ACCRUING - BALANCE_BASED nextLoadDate: type: - string - 'null' format: date description: For cards that are loaded periodically, indicates the date when the card will be loaded the next time. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardBalanceUpdated: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_BALANCE_UPDATED`. Hint: all cards are issued with zero limit until they are activated. The limit is updated to the desired amount when the card is activated.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: organizationId: type: string format: uuid cardholderId: type: string format: uuid cardId: type: string format: uuid cardAccountId: type: string format: uuid description: The card account to which the card belongs. availableBalance: type: object description: The available balance of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. spendingBalance: type: object description: The spending balance of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. transactionLimit: type: object description: The transaction limit of the card, describing the maximum amount a single transaction can have on this card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limit: type: object description: The limit of the card, describing the overall limit of this card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. isBenefit: type: - boolean - 'null' description: Indicates that the card was issued as an employee benefit. fundingType: type: string description: '* `CHARGE` - normal (non-benefit) credit card * `LOAD_BASED_ACCRUING` - benefit card where money not spent is transferred to the next month * `LOAD_BASED_NON_ACCRUING` - benefit card where money not spent is lost end of month * `BALANCE_BASED` - benefit card with a standing balance that persists across months and is spent down until depleted (no monthly reset). ' enum: - CHARGE - LOAD_BASED_ACCRUING - LOAD_BASED_NON_ACCRUING - BALANCE_BASED nextLoadDate: type: - string - 'null' format: date description: For cards that are loaded periodically, indicates the date when the card will be loaded the next time. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardAvailableBalanceChanged: '{$request.body#/callbackUrl}': post: parameters: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/0' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/1' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/2' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/3' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/4' requestBody: description: 'This callback object is used for the following event types: `CARD_AVAILABLE_BALANCE_CHANGED`. Fired whenever the card''s available balance is set or changes (value or currency), including the initial population when the card balance is first established. ' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: organizationId: type: string format: uuid description: The unique identifier of the organization this card belongs to. cardholderId: type: string format: uuid description: The unique identifier of the cardholder this card belongs to. cardId: type: string format: uuid description: The unique identifier of the card whose available balance changed. cardAccountId: type: string format: uuid description: The unique identifier of the [card account](/docs/card-account) this card belongs to. availableBalance: type: - object - 'null' description: The available balance of the card after the change. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardExpired: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_EXPIRED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: organizationId: type: string format: uuid cardholderId: type: string format: uuid cardId: type: string format: uuid cardAccountId: type: string format: uuid description: The card account to which this card belongs to. expirationDate: type: string description: Date when card expires. For cards with type `SINGLE_USE` this is set to 12 months automatically and every value put here is ignored. format: date-time label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 isBenefit: type: - boolean - 'null' description: Indicates that the card was issued as an employee benefit. fundingType: type: string description: '* `CHARGE` - normal (non-benefit) credit card * `LOAD_BASED_ACCRUING` - benefit card where money not spent is transferred to the next month * `LOAD_BASED_NON_ACCRUING` - benefit card where money not spent is lost end of month * `BALANCE_BASED` - benefit card with a standing balance that persists across months and is spent down until depleted (no monthly reset). ' enum: - CHARGE - LOAD_BASED_ACCRUING - LOAD_BASED_NON_ACCRUING - BALANCE_BASED nextLoadDate: type: - string - 'null' format: date description: For cards that are loaded periodically, indicates the date when the card will be loaded the next time. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardStatusChanged: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_STATUS_CHANGED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid organizationId: type: string format: uuid cardholderId: type: string format: uuid cardAccountId: type: string format: uuid description: The unique identifier of the [card account](/docs/card-account). cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. Please refer to the [guide section](/docs/card-entity) to learn more about this. Please contact your Pliant contact person for details status: type: string description: 'The current status of the card. **Deprecation Notice:** The status values `PENDING_ACTIVATION`, `PENDING_ISSUANCE`, and `PENDING_REGISTRATION` are deprecated and will be mapped to `PENDING` with appropriate `pendingDetails` in the future. Use `PENDING` with the corresponding `pendingDetails` value instead. ' enum: - PENDING - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - REQUEST_APPROVED - REQUESTED - REQUEST_CANCELLED - REQUEST_REJECTED - ACTIVE - LOCKED - LOCKED_PIN - EXPIRED - TERMINATED - TERMINATED_LOST - TERMINATED_STOLEN x-enumDescriptions: PENDING: Card is in a pending state. Check `pendingDetails` for the specific reason. PENDING_ACTIVATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ACTIVATION` instead.~~' PENDING_ISSUANCE: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ISSUANCE` instead.~~' PENDING_REGISTRATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_REGISTRATION` instead.~~' REQUEST_APPROVED: Card request has been approved. REQUESTED: Card has been requested. REQUEST_CANCELLED: Card request has been cancelled. REQUEST_REJECTED: Card request has been rejected. ACTIVE: Card is active and can be used. LOCKED: Card is locked. LOCKED_PIN: Card is locked due to PIN issues. EXPIRED: Card has expired. TERMINATED: Card has been terminated. TERMINATED_LOST: Card has been terminated because it was lost. TERMINATED_STOLEN: Card has been terminated because it was stolen. pendingDetails: type: - string - 'null' description: 'The internal reason for a card''s pending state. This field is only populated when `status` is `PENDING` or one of the deprecated `PENDING_...` statuses, and will be `null` for all non-pending statuses. ' enum: - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - PENDING_VALIDITY - PENDING_SANCTION_SCREEN - PENDING_INFORMATION x-enumDescriptions: PENDING_ACTIVATION: Card is pending activation. PENDING_ISSUANCE: Card is pending issuance. PENDING_REGISTRATION: Card is pending registration. PENDING_VALIDITY: Card is pending validity period. PENDING_SANCTION_SCREEN: Card is pending sanction screening. PENDING_INFORMATION: Card is pending additional information. clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' statusBeforeChange: type: string description: 'The previous status of the card before the change. **Deprecation Notice:** The status values `PENDING_ACTIVATION`, `PENDING_ISSUANCE`, and `PENDING_REGISTRATION` are deprecated and will be mapped to `PENDING` with appropriate `pendingDetails` in the future. Use `PENDING` with the corresponding `pendingDetails` value instead. ' enum: - PENDING - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - REQUEST_APPROVED - REQUESTED - REQUEST_CANCELLED - REQUEST_REJECTED - ACTIVE - LOCKED - LOCKED_PIN - EXPIRED - TERMINATED - TERMINATED_LOST - TERMINATED_STOLEN x-enumDescriptions: PENDING: Card was in a pending state. Check `pendingDetails` for the specific reason. PENDING_ACTIVATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ACTIVATION` instead.~~' PENDING_ISSUANCE: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ISSUANCE` instead.~~' PENDING_REGISTRATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_REGISTRATION` instead.~~' REQUEST_APPROVED: Card request was approved. REQUESTED: Card was requested. REQUEST_CANCELLED: Card request was cancelled. REQUEST_REJECTED: Card request was rejected. ACTIVE: Card was active and could be used. LOCKED: Card was locked. LOCKED_PIN: Card was locked due to PIN issues. EXPIRED: Card expired. TERMINATED: Card was terminated. TERMINATED_LOST: Card was terminated because it was lost. TERMINATED_STOLEN: Card was terminated because it was stolen. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardValidityUpdated: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_VALIDITY_UPDATED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid description: The unique identifier of the card. organizationId: type: string format: uuid description: The unique identifier of the organization. cardholderId: type: string format: uuid description: The unique identifier of the cardholder. cardAccountId: type: string format: uuid description: The unique identifier of the [card account](/docs/card-account). validFrom: type: - string - 'null' format: date description: The start date of the validity period in which the card is usable for purchases. example: '2024-01-30' validTo: type: - string - 'null' format: date description: The end date of the validity period in which the card is usable for purchases. example: '2024-12-31' timezone: type: - string - 'null' description: The timezone for the validity period. example: Europe/Berlin responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardLimitChangeFailed: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_LIMIT_CHANGE_FAILED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid organizationId: type: string format: uuid limitChangeFailure: type: string description: Description of why the limit change failed. attemptedLimitChange: type: object properties: limit: type: object description: The limit that was attempted to set. See [card](/docs/card-entity). properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)! transactionLimit: type: object description: The transaction limit that was attempted to set. See [card](/docs/card-entity). properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. This has to match the currency of the respective [card account](/docs/card-account)! limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The limit that was attempted to set. See [card](/docs/card-entity). * `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: The maximum number of transactions that was attempted to set. See [card](/docs/card-entity). Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardClickToPayInfoChanged: '{$request.body#/callbackUrl}': post: parameters: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/0' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/1' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/2' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/3' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/4' requestBody: description: 'This callback object is used for the following event types: `CARD_CLICK_TO_PAY_INFO_CHANGED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid description: The unique identifier of the card. organizationId: type: string format: uuid description: The unique identifier of the organization. cardholderId: type: string format: uuid description: The unique identifier of the cardholder. cardAccountId: type: string format: uuid description: The unique identifier of the [card account](/docs/card-account). clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardBenefitLoaded: '{$request.body#/callbackUrl}': post: parameters: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/0' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/1' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/2' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/3' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/4' requestBody: description: 'This callback object is used for the following event types: `CARD_BENEFIT_LOADED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - type: object required: - organizationId - cardId - cardAccountId - loadAmount properties: organizationId: type: string format: uuid description: The ID of the organization. example: 54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df cardId: type: string format: uuid description: The ID of the card that was loaded. example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 cardAccountId: type: string format: uuid description: The ID of the card account associated with the card. example: b2c3d4e5-f6a7-8901-bcde-f12345678901 loadAmount: type: object description: The amount loaded onto the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. example: 5000 currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. example: EUR responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardBenefitUnloaded: '{$request.body#/callbackUrl}': post: parameters: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/0' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/1' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/2' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/3' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/4' requestBody: description: 'This callback object is used for the following event types: `CARD_BENEFIT_UNLOADED`.' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - type: object required: - organizationId - cardId - cardAccountId - unloadAmount properties: organizationId: type: string format: uuid description: The ID of the organization. example: 54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df cardId: type: string format: uuid description: The ID of the card that was unloaded. example: a1b2c3d4-e5f6-7890-abcd-ef1234567890 cardAccountId: type: string format: uuid description: The ID of the card account associated with the card. example: b2c3d4e5-f6a7-8901-bcde-f12345678901 unloadAmount: type: object description: The amount unloaded from the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. example: 5000 currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. example: EUR responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardLimitsChanged: '{$request.body#/callbackUrl}': post: parameters: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/0' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/1' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/2' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/3' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/4' requestBody: description: 'This callback object is used for the following event types: `CARD_LIMITS_CHANGED`. Fired when additional limits are created, updated, or removed on a card. The payload includes the full updated `additionalLimits[]` array and the `cardAccountId`. ' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid description: The unique identifier of the card whose additional limits changed. cardAccountId: type: - string - 'null' format: uuid description: The unique identifier of the card account this card belongs to. organizationId: type: string format: uuid description: The unique identifier of the organization this card belongs to. cardholderId: type: string format: uuid description: The unique identifier of the cardholder this card belongs to. additionalLimits: type: array description: The full current set of additional limits on the card after the change. An empty array indicates all additional limits were removed. items: type: object description: An additional limit entry in the CARD_LIMITS_CHANGED callback payload. This shape differs from the GET card response — it includes `limitRenewDate` directly and does not include `balanceInfo`. properties: id: type: string format: uuid description: The unique identifier of this additional limit. limitRenewFrequency: type: - string - 'null' enum: - PER_TRANSACTION - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The renewal frequency of this additional limit. * `PER_TRANSACTION` - Limit applies to each individual transaction. * `DAILY` - The limit is renewed every day. * `WEEKLY` - The limit is renewed every week. * `MONTHLY` - The limit is renewed every calendar month. * `QUARTERLY` - The limit is renewed every calendar quarter. * `ANNUAL` - The limit is renewed every year. * `TOTAL` - The limit is never renewed. ' limitRenewDate: type: - string - 'null' format: date description: Date when this additional limit's balance will next be renewed, e.g. `2026-06-01`. Null for `TOTAL` frequency limits. limit: type: - object - 'null' description: The monetary cap for this additional limit. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. maxTransactionCount: type: - number - 'null' minimum: 1 maximum: 999999999 description: Maximum number of transactions allowed under this additional limit within its renewal period. Null if no transaction-count cap is configured. scope: type: - object - 'null' description: The scope restriction of this additional limit. Null when no scope is defined. properties: categories: type: array description: Merchant category types this limit applies to. items: type: string enum: - ADVERTISING_AND_MARKETING - COMPUTING_AND_SOFTWARE - EDUCATION_AND_TRAINING - ELECTRONICS_AND_IT_EQUIPMENT - ENTERTAINMENT_AND_WELLNESS - FOOD_AND_DRINKS - GIFTS_AND_VOUCHERS - HEALTHCARE - MATERIALS_AND_PACKAGING - OFFICE_SUPPLIES_AND_EQUIPMENT - SERVICES - TRAVEL_AND_ACCOMMODATION - OTHER acceptanceMethods: type: array description: The card acceptance methods this limit applies to. items: type: string enum: - ONLINE - MOBILE_WALLET - MANUAL_ENTRY - CONTACTLESS - CHIP_DIP - NOT_AVAILABLE - MAGNETIC_STRIPE - OTHER atmWithdrawal: type: boolean description: When `true`, this additional limit applies to ATM withdrawal transactions. currency: type: - string - 'null' description: ISO 4217 currency code this limit is scoped to, e.g. `PLN`. Null when no currency scope is defined. responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardAccessLinkRequested: '{$request.body#/callbackUrl}': post: parameters: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/0' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/1' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/2' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/3' - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardReassigned/{$request.body#~1callbackUrl}/post/parameters/4' requestBody: description: 'This callback object is used for the following event types: `CARD_ACCESS_LINK_REQUESTED`. Fired when a new card access link has been requested. The payload includes the data required to send out an access link to the cardholder. ' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid description: The Pliant card id (UUIDv4) of the card. cardholderId: type: string format: uuid description: The id (UUIDv4) of the cardholder this card has been issued for. organizationId: type: string format: uuid description: The id (UUIDv4) of the organization this cardholder and card belong to. accessLink: type: string description: The access link to that the user can use to access the card. expiryDate: type: string description: The point in time this access link expires. example: '2026-01-01T00:00:00Z' format: date-time responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. cardReassigned: '{$request.body#/callbackUrl}': post: parameters: - in: header name: X-Organization-Id schema: type: string format: uuid description: 'Referencing the organization this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Partner-Organization-Id schema: type: string description: 'Filled, if the value `partnerOrganizationId` is [set](/reference/update-organization) by the partner on the organization itself. Referencing the organization identifier of the partner. Example value: `abc123`.' - in: header name: X-Payment-Program-Id schema: type: string format: uuid description: 'Referencing the payment program this callback was sent for. See [guides](/docs/callbacks) for more details. Example value: `54e6e7e7-0c23-4a54-bccb-2d3ff2fd02df`.' - in: header name: X-Callback-Id schema: type: string format: uuid description: 'A unique identifier for this callback. Can be used to deduplicate callbacks to achieve idempotent behavior. See [guides](/docs/callbacks) for more details. Example value: `12a03093-eaad-4ae5-9d8d-42e7f6f8b7c6`.' - in: header name: X-Callback-Created-At schema: type: string format: date-time description: 'The date and time when the callback was created. Can be used to reorder callbacks. See [guides](/docs/callbacks) for more details. Example value: `2024-03-15T15:55:58.623375258Z`.' requestBody: description: 'This callback object is used for the following event types: `CARD_REASSIGNED`. Fired once per card when the card is moved from one [card account](/docs/card-account) to another, for example when a card account is superseded by a successor card account. The card itself is unchanged - card number, expiry date, limits and status stay the same - only the card account the card belongs to changes. Partners that store a card to card account mapping should update it to `cardAccountId` when receiving this event. ' content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1subscription/post/callbacks/cardUpdated/{$request.body#~1callbackUrl}/post/requestBody/content/application~1json/schema/allOf/0' - properties: cardId: type: string format: uuid description: The Pliant card id (UUIDv4) of the card that was reassigned. organizationId: type: string format: uuid description: The id (UUIDv4) of the organization this card belongs to. previousCardAccountId: type: string format: uuid description: The id of the [card account](/docs/card-account) the card was assigned to before the reassignment. This card account is `SUPERSEDED` from this point on and keeps the history of the card, e.g. its past transactions, statements and account entries. cardAccountId: type: string format: uuid description: The id of the [card account](/docs/card-account) the card is assigned to now. This is the successor card account, referenced as `supersededBy` on the previous card account. Balance, limits and bank account information of the card are served from this card account from now on. reassignedAt: type: string format: date-time description: The point in time the card was reassigned to the new card account. example: '2026-01-01T00:00:00Z' responses: '200': description: We expect the partner to return a HTTP 200 status code if the callback was successfully received. On 4xx and 5xx status codes, we will [retry](/docs/callbacks#retries) the callback. delete: summary: 'Callback: Remove' description: Remove a callback subscription for this entity. tags: - Cards operationId: remove-cards-subscription requestBody: required: true content: application/json: schema: type: object properties: eventTypes: type: array description: The event types to unsubscribe from. items: type: string enum: - CARD_CREATED - CARD_ISSUED - CARD_ACTIVATED - CARD_LOCKED - CARD_UNLOCKED - CARD_TERMINATED - CARD_EXPIRED - CARD_LIMIT_CHANGED - CARD_LIMIT_CHANGE_FAILED - CARD_DETAILS_CHANGED - CARD_BALANCE_UPDATED - CARD_AVAILABLE_BALANCE_CHANGED - CARD_STATUS_CHANGED - CARD_VALIDITY_UPDATED - CARD_SHIPPED - CARD_CLICK_TO_PAY_INFO_CHANGED - CARD_BENEFIT_LOADED - CARD_BENEFIT_UNLOADED - CARD_LIMITS_CHANGED - CARD_ACCESS_LINK_REQUESTED - CARD_REASSIGNED required: - eventTypes responses: '200': description: Ok /cards/{cardId}: get: summary: Card Details (Single) deprecated: true description: 'Returns details for a single card. For details of multiple cards, use our batch-style endpoint. **This endpoint has changed in comparison to the previous version of the API.** The following changes were made: - added `cardControls` to response body - changed the enumeration for the status field in the response body - deprecated `type` and replaced it with `cardConfig`' tags: - Cards operationId: get-single-card-details parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid responses: '200': description: Ok content: application/json: schema: type: object properties: cardId: type: string format: uuid description: The unique identifier of the card. cardRequestId: type: - string - 'null' format: uuid description: If this card originated from a card request, this field contains the unique identifier of the card request. organizationId: type: string format: uuid description: The unique identifier of the organization, this card belongs to. cardholderId: type: string format: uuid description: The unique identifier of the cardholder, this card belongs to. cardAccountId: type: string format: uuid description: The unique identifier of the card account, this card belongs to. type: type: - string - 'null' deprecated: true description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases ' enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL cardConfig: type: string description: The Pliant card configuration of this card. This describes all feature of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. status: type: string description: 'The status of the card. **Deprecation Notice:** The status values `PENDING_ACTIVATION`, `PENDING_ISSUANCE`, and `PENDING_REGISTRATION` are deprecated and will be mapped to `PENDING` with appropriate `pendingDetails` in the future. Use `PENDING` with the corresponding `pendingDetails` value instead. ' enum: - PENDING - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - REQUEST_APPROVED - REQUESTED - REQUEST_CANCELLED - REQUEST_REJECTED - ACTIVE - LOCKED - LOCKED_PIN - EXPIRED - TERMINATED - TERMINATED_LOST - TERMINATED_STOLEN x-enumDescriptions: PENDING: Card is in a pending state. Check `pendingDetails` for the specific reason. PENDING_ACTIVATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ACTIVATION` instead.~~' PENDING_ISSUANCE: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_ISSUANCE` instead.~~' PENDING_REGISTRATION: '~~(Deprecated) Use `PENDING` with `pendingDetails: PENDING_REGISTRATION` instead.~~' REQUEST_APPROVED: Card request has been approved. REQUESTED: Card has been requested. REQUEST_CANCELLED: Card request has been cancelled. REQUEST_REJECTED: Card request has been rejected. ACTIVE: Card is active and can be used. LOCKED: Card is locked. LOCKED_PIN: Card is locked due to PIN issues. EXPIRED: Card has expired. TERMINATED: Card has been terminated. TERMINATED_LOST: Card has been terminated because it was lost. TERMINATED_STOLEN: Card has been terminated because it was stolen. pendingDetails: type: - string - 'null' description: 'The internal reason for a card''s pending state. This field is only populated when `status` is `PENDING` or one of the deprecated `PENDING_...` statuses, and will be `null` for all non-pending statuses. ' enum: - PENDING_ACTIVATION - PENDING_ISSUANCE - PENDING_REGISTRATION - PENDING_VALIDITY - PENDING_SANCTION_SCREEN - PENDING_INFORMATION x-enumDescriptions: PENDING_ACTIVATION: Card is pending activation. PENDING_ISSUANCE: Card is pending issuance. PENDING_REGISTRATION: Card is pending registration. PENDING_VALIDITY: Card is pending validity period. PENDING_SANCTION_SCREEN: Card is pending sanction screening. PENDING_INFORMATION: Card is pending additional information. label: type: - string - 'null' description: A short text describing the card. Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: A short text describing the card. Available only for virtual cards with a `cardConfig` containing `SINGLE_USE`, the maximum length is 40 characters. maxLength: 40 refNum: type: - string - 'null' description: The last 4 digits of the PAN (payment card number), better known as the credit card number. It can be `null` e.g. for terminated cards. issuingDate: type: - string - 'null' description: Date-time of card issuing, e.g. `2023-08-23T14:28:53.600608Z`. Can be null e.g. for cards which are requested by a [cardholder](/docs/cardholder-entity) but the request is declined. format: date-time expiryDate: type: - string - 'null' description: Date-time (without nanoseconds) when card expires, e.g. `2026-07-31T23:59:59Z`. For cards with type `SINGLE_USE` this is set to 12 months automatically and every value put here is ignored. Can be null e.g. for cards which are requested by a [cardholder](/docs/cardholder-entity) but the request is declined. format: date-time limit: type: object description: The limit of the card, describing the overall limit of this card. It might get reset regularly depending on the field `limitRenewFrequency`. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. transactionLimit: type: object description: The transaction limit of the card, describing the maximum amount a single transaction can have on this card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. spendingBalance: type: object description: The spending balance of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. availableBalance: type: object description: The available balance of the card. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. token: type: string description: The network token of the card. cardDesign: type: string description: The card design of the card on Thredd (Pliant's credit card processor) side. productRef: type: string deprecated: true description: The product reference of the card on Thredd (Pliant's credit card processor) side. This field is deprecated and will be removed in the future. Use `cardDesignId` instead. platformFee: type: boolean description: Whether the card is used for the internal Pliant platform fee or not. limitPeriodEnd: type: string description: Date-time (without nanoseconds) when the current limit period ends, e.g. `2023-09-30T23:59:59Z`. format: date-time limitRenewDate: type: string description: Date when the limit will be renewed, e.g. `2023-10-01`. format: date limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: "Describes how often the limit of the card is renewed.\n * `DAILY` - The card limit is renewed every day\n * `WEEKLY` - The card limit is renewed every week\n * `MONTHLY` - The card limit is renewed every calendar month\n * `QUARTERLY` - The card limit is renewed every calendar quarter\n * `ANNUAL` - The card limit is renewed every year\n * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore.\n" customFirstName: type: - string - 'null' description: Optional first name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. customLastName: type: - string - 'null' description: Optional last name on `TRAVEL` cards which is used on the card, instead of the regular [cardholder](/docs/cardholder-entity) name. If empty, the regular [cardholder](/docs/cardholder-entity) name is used. replacedByCardId: type: - string - 'null' format: uuid description: Filled, if this card was replaced by another card. replacedCardId: type: - string - 'null' format: uuid description: Filled, if this card replaced another card. replacementReason: type: - string - 'null' description: Describes the reason for the card replacement, if any happened. enum: - DAMAGED - EXPIRING_SOON - LOST - OTHER - STOLEN shippingDate: type: - string - 'null' description: Date-time when the physical card was shipped, e.g. `2023-10-16T11:34:59.595Z`. This field is empty for all other types of cards, or when the physical card is not shipped yet. format: date-time panAlias: type: - string - 'null' description: The PAN alias of the card. This is not the real credit card number (PAN) but a alias version of it. validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-01' validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. example: '2023-12-31' validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. fundingType: type: string description: '* `CHARGE` - normal (non-benefit) credit card * `LOAD_BASED_ACCRUING` - benefit card where money not spent is transferred to the next month * `LOAD_BASED_NON_ACCRUING` - benefit card where money not spent is lost end of month * `BALANCE_BASED` - benefit card with a standing balance that persists across months and is spent down until depleted (no monthly reset). ' enum: - CHARGE - LOAD_BASED_ACCRUING - LOAD_BASED_NON_ACCRUING - BALANCE_BASED clickToPayInfo: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/clickToPayInfo' nextLoadDate: type: string format: date description: For cards that are loaded periodically, indicates the date when the card will be loaded the next time. additionalLimits: type: array description: Additional limits on this card. Empty when none are configured. Re-fetch or subscribe to `CARD_LIMITS_CHANGED` to get the latest state after a limit change. items: $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema/properties/additionalLimits/items' '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '500': $ref: '#/paths/~1cards/get/responses/500' patch: summary: Update Card description: Can be used to update card properties tags: - Cards operationId: update-card parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: label: type: string description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. minLength: 0 maxLength: 40 purpose: type: string description: Available only for virtual cards with type `SINGLE-USE`. The maximum length is 40 characters. minLength: 0 maxLength: 40 responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/activate: post: summary: Activate Physical Card description: 'Activate a specific, physical credit card. You can chose between two activation methods: `activationCode` and `refNum`. To activate physical cards on the sandbox environment, use `999999` **or** the `refNum` of the card (available via Card Details) as the activation code. Virtual cards are activated automatically upon creation (if the cardholder is active) and do not require manual activation.' tags: - Cards operationId: activate-physical-card parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: activationCode: type: string description: The 6-digit activation code or the last 4-digits of the card (called `refNum`). minLength: 4 maxLength: 6 required: - activationCode responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/custom-fields: patch: summary: Update/Add Custom Fields description: 'Update the default values of custom fields related to a card or add new ones by `label`. All custom fields need to be provided, by not providing a custom field, the default value of that custom field will be removed, i.e. set to `null`. Updates of existing custom fields may happen via `id` or `label`. Adding new fields is only possible by providing a currently unused `label`. Note: the `label` needs to be unique per organization.' tags: - Cards operationId: update-custom-fields-on-card parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: customFields: description: 'The [custom fields](/docs/custom-fields-on-transactions) to update/add on the card. All [custom fields](/docs/custom-fields-on-transactions) need to be provided, by not providing a custom field, the default value of that custom field will be removed, i.e. set to `null`. Updates of existing custom fields may happen via `id` or `label`. Adding new fields is only possible by providing a currently unused `label`. Note: the `label` needs to be unique per organization.' $ref: '#/paths/~1cards/post/requestBody/content/application~1json/schema/allOf/0/properties/customFields' responses: '202': description: Accepted content: application/json: schema: type: array description: The [custom fields](/docs/custom-fields-on-transactions) set on this card after the update. These [custom fields](/docs/custom-fields-on-transactions) are used as default values for every transaction made with this card. If no [custom fields](/docs/custom-fields-on-transactions) are assigned to the card, we return an empty list. items: type: object required: - id - label properties: id: type: string format: uuid description: The id of the custom field used on this card. label: type: string description: The label of the custom field used on this card. defaultValue: type: - string - 'null' description: The default value of the custom field on this card. This default value will be copied to every transaction made with this card. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/label: patch: summary: Update Card Label deprecated: true description: Can be used to update the card label for virtual cards tags: - Cards operationId: update-card-label parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/lock: post: summary: Lock Card description: Lock a card manually. This will prevent the card from being used for any transactions. tags: - Cards operationId: lock-card parameters: - name: cardId in: path required: true description: The ID of the card to lock. schema: type: string format: uuid responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/replace: post: summary: Replace Card description: 'Replace or renew an existing card. This endpoints terminates the card being replaced and creates a new card with the same settings and card type, but different sensitive card information under the same cardholder. This can be useful to replace for instance a stolen credit card. The following callbacks will be triggered by this action: - For the terminated card: `CARD_TERMINATED`, `CARD_STATUS_CHANGED` to terminated and `CARD_BALANCE_UPDATED` to set the card balance to zero. - For the newly created card: `CARD_ISSUED`, `CARD_ACTIVATED`, `CARD_STATUS_CHANGED` and `CARD_BALANCE_UPDATED` with the corresponding balance.' tags: - Cards operationId: replace-card parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: terminateCardReason: type: string enum: - DAMAGED - EXPIRING_SOON - LOST - STOLEN - OTHER description: "The reason why the card is being replaced. Depending on the card type there are different valid reasons.\n\n`DAMAGED` can be used for physical cards.\n`EXPIRING_SOON`\tcan be used for physical and virtual cards, plus the cards has to expiry within the next three months.\n`LOST` can be used for physical cards.\n`STOLEN` can be used for all types of cards.\n`OTHER` can be used for all types of cards.\n\nA replacement of a card is only possible if the card is _not_ in one of the following statuses: `PENDING_ISSUANCE`, `PENDING_REGISTRATION`, `REQUESTED`.\nAlso, single-use cards cannot be replaced at all.\n" expiryPeriodMonths: type: integer description: The number of months the new card should be valid for. This needs to follow the guidelines from normal [card issuing](./issue-card). required: - terminateCardReason - expiryPeriodMonths responses: '200': description: Ok content: application/json: schema: type: object properties: cardId: type: string format: uuid type: type: - string - 'null' deprecated: true enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL description: 'Deprecated, please use `cardConfig` instead. `VIRTUAL` - Virtual credit card `SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) `PHYSICAL` - Physical credit card `BLACK` - Physical black premium credit card `TRAVEL` - Virtual cards used specifically in travel industry related use cases ' cardholderId: type: string format: uuid organizationId: type: string format: uuid transactionLimit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limit: type: object properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro or `USD` for US Dollar. limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: '* `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month * `QUARTERLY` - The card limit is renewed every calendar quarter * `ANNUAL` - The card limit is renewed every year * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' expiryDate: type: string format: date-time label: type: - string - 'null' description: Available only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`. The maximum length is 40 characters. maxLength: 40 purpose: type: - string - 'null' description: Available only for cards with type `SINGLE_USE` cardDesign: type: string cardDesignId: type: string format: uuid description: The unique identifier of the card design used for this specific card. productRef: type: string deprecated: true description: This field is deprecated and will be removed in the future. Use `cardDesignId` instead. platformFee: type: boolean cardConfig: type: string description: Please contact your Pliant contact person for details replacedByCardId: type: string format: uuid description: Filled, if this card was replaced by another card. replacedCardId: type: string format: uuid description: Filled, if this card replaced another card. replacementReason: type: string description: Describes the reason for the card replacement. enum: - DAMAGED - EXPIRING_SOON - LOST - OTHER - STOLEN cardAccountId: type: string format: uuid description: The unique identifier of the card account. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/terminate: post: summary: Terminate Card description: Via this endpoint you can terminate a card. This cannot be undone. Card termination is a final step. tags: - Cards operationId: terminate-card parameters: - name: cardId in: path required: true description: The unique identifier of the card. schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: reason: type: string description: '* `LOST` - usable for `PHYSICAL` and `BLACK` cards * `STOLEN` - usable for `PHYSICAL`, `BLACK`, `VIRTUAL`, `SINGLE_USE` and `TRAVEL` cards * `OTHER` - usable for `PHYSICAL`, `BLACK`, `VIRTUAL`, `SINGLE_USE` and `TRAVEL` cards ' enum: - LOST - STOLEN - OTHER comment: type: - string - 'null' required: - reason responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '409': $ref: '#/paths/~1card-accounts/post/responses/409' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/unlock: post: summary: Unlock Card description: Unlock a card, if the card was locked manually or because of a wrong PIN. tags: - Cards operationId: unlock-card parameters: - name: cardId in: path required: true description: The ID of the card to unlock. schema: type: string format: uuid responses: '204': description: Ok '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardId}/validity-period: put: summary: Update Card Validity Period description: Update the validity period of a card. This validity period is set during card issuing. tags: - Cards operationId: update-card-validity-period parameters: - name: cardId in: path required: true description: The ID of the card to update. schema: type: string format: uuid requestBody: required: true content: application/json: schema: allOf: - type: object required: - validFrom - validTo - validTimezone properties: validFrom: type: string format: date description: Field to describe a fixed date range in which the card is usable for purchases. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together. example: '1970-01-30' validTo: type: string format: date description: Field to describe a fixed date range in which the card is usable for purchases, replaces the `validityPeriod` if used. After the specified date, the card is automatically terminated. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together. example: '1970-01-30' validTimezone: type: string description: Field to describe the timezone for the `validFrom` and `validTo` fields. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). example: Europe/Berlin responses: '204': description: Ok. Card validity period was updated successfully. '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardholderId}: post: summary: Issue Card description: 'Issue a new credit card for a specific cardholder. A detailed explanation of different types and statuses can be found in our guides section. Hint: you can also replace an existing card instead. If the cardholder is in the invited state at the time of issuing the card, we will park the card issuing request and automatically issue the card once the cardholder is active. Please be aware that card issuing is (as many other processes in Pliant''s API) an asynchronous process. This means you need to rely on the callback for the card being active, before you can start using it. **This endpoint has changed in comparison to the previous version of the API.** The following changes were made: - added `cardControls` to request and response body - deprecated `type` and replaced it with `cardConfig`' tags: - Cards operationId: issue-card parameters: - name: cardholderId in: path required: true description: The id of the [cardholder](/docs/cardholder-entity) to issue the card for. This cardholder needs to have a phone number, otherwise 3DS security mechanism during a purchase will not work. schema: type: string format: uuid requestBody: required: true content: application/json: schema: allOf: - type: object required: - organizationId - limit - transactionLimit - cardConfig properties: organizationId: type: string format: uuid description: The ID of the organization to issue the card for. cardAccountId: type: string format: uuid description: The ID of the [card account](/docs/card-account) to issue the card for. If not provided, the card will be issued for the default [card account](/docs/card-account) of the organization. If the given card account has `status` `SUPERSEDED`, the request is transparently resolved to its successor (`supersededBy`) and the response carries the id of that successor card account. type: type: - string - 'null' deprecated: true enum: - VIRTUAL - SINGLE_USE - PHYSICAL - BLACK - TRAVEL description: "Deprecated, please use `cardConfig` instead.\n`VIRTUAL` - Virtual credit card\n`SINGLE_USE` - One-time virtual credit card (only one authorization allowed per card) \n`PHYSICAL` - Physical credit card\n`BLACK` - Physical black premium credit card\n`TRAVEL` - Virtual cards used specifically in travel industry related use cases\nEither `type` or `cardConfig` has to be provided. Please prefer `cardConfig`.\n" cardConfig: type: string description: 'The Pliant card configuration of this card. This describes all features of this card in one single configuration, e.g. the type of the card and also the design of the card etc. It replaces the deprecated card `type`. Please refer to the [guide section](/docs/card-entity) to learn more about possible values. Either `type` or `cardConfig` has to be provided. Please prefer `cardConfig`. **Required** for INSURANCE cards - the deprecated `type` field cannot be used. ' cardDesignId: type: - string - 'null' format: uuid description: 'The unique identifier of the card design used for this card. This field can only be set when creating virtual cards. Available designs for a card config can be retrieved via the [available cards endpoint](/reference/get-available-cards). ' label: type: - string - 'null' description: Mandatory only for virtual cards with a `cardConfig` containing `VIRTUAL` or `TRAVEL`, the maximum length is 40 characters. maxLength: 40 purpose: type: string description: Mandatory only for virtual cards with `cardConfig` ending with `SINGLE_USE` maxLength: 200 validityPeriod: type: number description: "Number of months when card expires.\n- Mandatory for `cardConfig` containing `VIRTUAL` and `TRAVEL`\n- For `cardConfig` ending with `PHYSICAL` or `BLACK`: set to 36 months automatically\n- For `cardConfig` ending with `SINGLE_USE`: set to 12 months automatically\n- For `cardConfig` containing `INSURANCE`:\n - Physical insurance: set to 24 months automatically\n - Virtual insurance (excluding single-use): validated from enum, defaults to 36 months\n - Single-use insurance: set to 12 months automatically\nFor cards with fixed validity periods, user input is ignored.\n" enum: - 3 - 6 - 9 - 12 - 18 - 24 - 30 - 36 validFrom: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases, replaces the `validityPeriod` if used. Outside of this date range, the card cannot be used for any purchases, only for zero-amount card-checks, and is shown with `status` `PENDING`. If not provided, the card is active immediately. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the provided date is already a valid day to use the card. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The `validFrom` date needs to be before the `validTo` date. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. This field can be [updated later](/reference/update-card-validity-period). This field must be `null` when issuing benefit cards. validTo: type: - string - 'null' format: date description: Optional field to describe a fixed date range in which the card is usable for purchases, replaces the `validityPeriod` if used. After the specified date, the card is automatically terminated. If not provided, the card is active until the `validityPeriod` ends. Date needs to be provided as `yyyy-mm-dd` and is treated inclusive, meaning the card will be terminated one day after this date. If used, the parallel usage of card controls regarding `dates` and/or `times` is not allowed and the `validityPeriod` will be set to 36 months automatically. The earliest possible date is the current date. The latest possible date is the end date of the `validityPeriod`. The fields `validFrom`, `validTo` and `validTimezone` need to be used together, if used at all. This field can be [updated later](/reference/update-card-validity-period). This field must be `null` when issuing benefit cards. validTimezone: type: string description: Optional field to describe the timezone for the `validFrom` and `validTo` fields. This field is mandatory if `validFrom` and `validTo` fields are used. A list of valid timezones can be found in our [guide section](/docs/card-controls-1). This field can be [updated later](/reference/update-card-validity-period). This field must be `null` when issuing benefit cards. example: Europe/Berlin maxTransactionCount: type: number minimum: 1 maximum: 999999999 description: ':exclamation: IMPORTANT: if the `cardConfig` is `TRAVEL` and this field is not set, the **default value will be `3`**. Optional field to describe the maximum number of transactions within the range of `1..999999999` that can be performed with this card. If not provided, the card can be used for an unlimited number of transactions until the card expires. ' monthlyLimit: type: object deprecated: true description: Use `limit` instead. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro. This has to match the currency of the respective [card account](/docs/card-account)! limit: type: object description: The limit of the card. The limit renews according to the `limitRenewFrequency` or never, if `limitRenewFrequency` is set to `TOTAL`. This limit can later be adjusted via the [update limit endpoint](/reference/update-card-limit). The limit can be up to the organization's overall limit. For instance an organization with a limit of 1,000,000 EUR can have a card with a limit up to 1,000,000 EUR. It is also possible to have more than one card with the maximum limit. For example you can have two cards each with a limit of 1,000,000 EUR. The card limits are not added up on creation, only the transactions happening on the card are added up and checked against the organization's overall limit. The limit must be `0` (of the card's currency) when issuing benefit cards. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro. This has to match the currency of the respective [card account](/docs/card-account)! limitRenewFrequency: type: string enum: - DAILY - WEEKLY - MONTHLY - QUARTERLY - ANNUAL - TOTAL description: 'The frequency of the card limit renewal. * `DAILY` - The card limit is renewed every day * `WEEKLY` - The card limit is renewed every week * `MONTHLY` - The card limit is renewed every calendar month, this is the default setting. * `QUARTERLY` - The card limit is renewed every calendar quarter. * `ANNUAL` - The card limit is renewed every year. * `TOTAL` - The card limit is never going to be renewed. After the limit is spent the card cannot be used anymore. ' transactionLimit: type: object description: The transaction limit of the card. Meaning the maximum amount of a single transaction. This is always below or equal to the `limit` of the card. This limit can later be adjusted via the [update limit endpoint](/reference/update-card-limit). The transaction limit can be up to the card's limit. For instance a card with a limit of 1,000 EUR can have a transaction limit up to 1,000 EUR. The transaction limit must be `0` (of the card's currency) when issuing benefit cards. properties: value: type: number description: The value of the monetary amount, converted to minor units of the currency. For instance 1.00 EUR is 100 cents, thus the value here is `100`. See our [guides](/docs/monetary-values) for more details about how to handle monetary amounts. currency: type: string description: The currency of the monetary amount in ISO 4217 format, for example `EUR` for Euro. This has to match the currency of the respective [card account](/docs/card-account)! customFirstName: type: - string - 'null' description: 'Optional first name on `TRAVEL` cards which will be used on the card. When used, this replaces the [cardholder](/docs/cardholder-entity) first name, which normally is used on the card. The maximum length of `customFirstName` is 50 characters. If used, both fields (`customFirstName` and `customLastName`) have to be provided with at least one character each. It is important to note, that only the following characters are allowed for issuing cards: `A-Z`, `a-z`, `0-9`, `äöüÄÖÜ.-`' maxLength: 50 customLastName: type: - string - 'null' description: 'Optional last name on `TRAVEL` cards which will be used on the card. When used, this replaces the [cardholder](/docs/cardholder-entity) last name, which normally is used on the card. The maximum length of `customLastName` is 50 characters. If used, both fields (`customFirstName` and `customLastName`) have to be provided with at least one character each. It is important to note, that only the following characters are allowed for issuing cards: `A-Z`, `a-z`, `0-9`, `äöüÄÖÜ.-`' maxLength: 50 cardControls: type: - object - 'null' description: Optionally, the card controls which will be applied to this card. $ref: '#/paths/~1cards~1{cardId}~1card-controls/put/requestBody/content/application~1json/schema/allOf/0' customFields: $ref: '#/paths/~1cards/post/requestBody/content/application~1json/schema/allOf/0/properties/customFields' teamId: type: - string - 'null' format: uuid description: The ID of the team to issue the card for. projectId: type: - string - 'null' format: uuid description: The ID of the project to issue the card for. copilots: type: - object - 'null' description: Optional feature for `TRAVEL` cards. This feature allows to assign cardholders or teams as copilots to the card. The copilot also has access to the card and its card details alongside with the cardholder of the card itself. properties: cardholderIds: type: - array - 'null' items: type: string format: uuid description: The IDs of the cardholders to assign as copilot to the card. teamIds: type: - array - 'null' items: type: string format: uuid description: The IDs of the teams to assign as copilot to the card. deliverTo: type: - string - 'null' enum: - ORGANIZATION - CARDHOLDER description: 'Optionally, specifies where the physical card should be delivered. * `ORGANIZATION` - Ship to organization address (default) * `CARDHOLDER` - Ship to cardholder''s personal delivery address This field is only applicable for physical cards. If not provided, the card will be shipped to the organization address. The request will fail if the cardholder''s personal delivery address is not set and `deliverTo` is set to `CARDHOLDER`. ' additionalLimits: type: - array - 'null' description: Optional additional limits to set on the card at creation time. items: $ref: '#/paths/~1cards~1limits~1{cardId}/put/requestBody/content/application~1json/schema/allOf/1/properties/additionalLimits/items' responses: '200': description: Ok. The card can be used after you received the callback for the card being active. content: application/json: schema: type: object $ref: '#/paths/~1cards/post/responses/200/content/application~1json/schema' '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardholderId}/instant: post: summary: Issue Card (Instant) description: 'This endpoint offers similar card issuing functionality as the main card issuing endpoint, but specifically allows for a _synchronous_ and _instant_ card issuing, whereas the main card issuing flow works asynchronously and requires the consumption of a callback to confirm the card is actually active. This endpoint issues cards instantly in a synchronous fashion. Meaning the card is active and usable when this endpoint returns a `200 Ok` response. The use case being here a fully automated card issuing flow, followed by an immediate card usage on API level for normally PCI-DSS certified companies. Please note, that the sensitive card data still needs to be fetched separately after issuing a new card (if PCI-DSS compliant). **This endpoint should only be used if aligned with Pliant upfront. In 90% of cases, you want to use the normal card issuing endpoint instead, as linked above.**' tags: - Cards operationId: issue-card-instant parameters: - name: cardholderId in: path required: true description: The id of the [cardholder](/docs/cardholder-entity) to issue the card for. This cardholder needs to have a phone number, otherwise 3DS security mechanism during a purchase will not work. schema: type: string format: uuid requestBody: required: true content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1{cardholderId}/post/requestBody/content/application~1json/schema/allOf/0' responses: '200': description: Ok. The card can be directly used now. content: application/json: schema: type: object $ref: '#/paths/~1cards~1instant/post/responses/200/content/application~1json/schema' '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' /cards/{cardholderId}/instant-pci: post: summary: Issue Card (Instant as PCI-DSS) description: 'This endpoint offers similar card issuing functionality as the main card issuing endpoint, but specifically allows for a _synchronous_ and _instant_ card issuing, **including PCI-DSS compliant sensitive card data retrieval**, which can be then found in the response as object `sensitiveCardData`. This endpoint issues cards instantly in a synchronous fashion and returns the sensitive card data like the cards PAN and CVV directly. Meaning the card is active and usable when this endpoint returns a `200 Ok` response and you can directly use the card data to do a purchase of any kind. The use case being here a fully automated card issuing flow, followed by an immediate card usage on API level. **This endpoint can only be used after a separate configuration done by Pliant and the partner using this endpoint needs to be PCI-DSS certified!** **A dedicated host URL `pci-api.getpliant.com` is used for this endpoint!** Please refer to the documentation for more information.' tags: - Cards operationId: issue-card-instant-with-pci parameters: - name: cardholderId in: path required: true description: The id of the [cardholder](/docs/cardholder-entity) to issue the card for. This cardholder needs to have a phone number, otherwise 3DS security mechanism during a purchase will not work. schema: type: string format: uuid requestBody: required: true content: application/json: schema: allOf: - $ref: '#/paths/~1cards~1{cardholderId}/post/requestBody/content/application~1json/schema/allOf/0' responses: '200': description: Ok. The card can be directly used now. content: application/json: schema: type: object $ref: '#/paths/~1cards~1instant-pci/post/responses/200/content/application~1json/schema' '400': $ref: '#/paths/~1cards/get/responses/400' '401': $ref: '#/paths/~1cards/get/responses/401' '403': $ref: '#/paths/~1cards/get/responses/403' '404': $ref: '#/paths/~1cards/post/responses/404' '422': $ref: '#/paths/~1cards/post/responses/422' '429': $ref: '#/paths/~1cards/get/responses/429' '500': $ref: '#/paths/~1cards/get/responses/500' components: securitySchemes: bearerAuth: type: http scheme: bearer description: This API uses oAuth2 with client credentials flow to [obtain the Bearer Token](/docs/authenticated-api-usage). bearerFormat: JWT x-provenance: method: searched source: https://customer-api.getpliant.com/reference harvested: '2026-10-14' tool: harvest-readme-openapi.py note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored. assembled_from: - https://customer-api.getpliant.com/reference/activate-physical-card.md - https://customer-api.getpliant.com/reference/assign-project-team.md - https://customer-api.getpliant.com/reference/assign-to-team.md - https://customer-api.getpliant.com/reference/bulk-upsert-subscriptions.md - https://customer-api.getpliant.com/reference/card-pan-and-cvv-pci-vault.md - https://customer-api.getpliant.com/reference/card-pan-tokenized-from-pci-proxy.md - https://customer-api.getpliant.com/reference/claim-card-as-copilot.md - https://customer-api.getpliant.com/reference/create-account-entry-subscription.md - https://customer-api.getpliant.com/reference/create-accounting-project-subscription.md - https://customer-api.getpliant.com/reference/create-accounting-team-subscription.md - https://customer-api.getpliant.com/reference/create-accounting-transaction-subscription.md - https://customer-api.getpliant.com/reference/create-card-account-subscription.md - https://customer-api.getpliant.com/reference/create-card-account-transfer.md - https://customer-api.getpliant.com/reference/create-card-account.md - https://customer-api.getpliant.com/reference/create-card-copilot-subscription.md - https://customer-api.getpliant.com/reference/create-card-subscription.md - https://customer-api.getpliant.com/reference/create-cardholder-subscription.md - https://customer-api.getpliant.com/reference/create-custom-field-option.md - https://customer-api.getpliant.com/reference/create-custom-field.md - https://customer-api.getpliant.com/reference/create-payment-subscription.md - https://customer-api.getpliant.com/reference/create-project.md - https://customer-api.getpliant.com/reference/create-receipt-automatching-subscription.md - https://customer-api.getpliant.com/reference/create-receipt-subscription.md - https://customer-api.getpliant.com/reference/create-statement-subscription.md - https://customer-api.getpliant.com/reference/create-team.md - https://customer-api.getpliant.com/reference/create-transaction-subscription.md - https://customer-api.getpliant.com/reference/deactivate-card-account.md - https://customer-api.getpliant.com/reference/deactivate-cardholder.md - https://customer-api.getpliant.com/reference/deactivate-team.md - https://customer-api.getpliant.com/reference/delete-custom-field-option.md - https://customer-api.getpliant.com/reference/delete-custom-field.md - https://customer-api.getpliant.com/reference/delete-project.md - https://customer-api.getpliant.com/reference/delete-receipt.md - https://customer-api.getpliant.com/reference/delete-subscription.md - https://customer-api.getpliant.com/reference/delete-team.md - https://customer-api.getpliant.com/reference/delete-transaction-comment.md - https://customer-api.getpliant.com/reference/generate-test-transactions-in-sandbox.md - https://customer-api.getpliant.com/reference/get-account-entries.md - https://customer-api.getpliant.com/reference/get-accounting-transactions-batch.md - https://customer-api.getpliant.com/reference/get-available-cards.md - https://customer-api.getpliant.com/reference/get-callback-details.md - https://customer-api.getpliant.com/reference/get-callback-log.md - https://customer-api.getpliant.com/reference/get-callback-subscriptions.md - https://customer-api.getpliant.com/reference/get-callback.md - https://customer-api.getpliant.com/reference/get-card-account-details.md - https://customer-api.getpliant.com/reference/get-card-accounts-available-currencies.md - https://customer-api.getpliant.com/reference/get-card-accounts.md - https://customer-api.getpliant.com/reference/get-card-controls-by-card.md - https://customer-api.getpliant.com/reference/get-card-pin.md - https://customer-api.getpliant.com/reference/get-cardholder-details.md - https://customer-api.getpliant.com/reference/get-cards.md - https://customer-api.getpliant.com/reference/get-custom-field-options.md - https://customer-api.getpliant.com/reference/get-custom-fields.md - https://customer-api.getpliant.com/reference/get-multiple-card-details.md - https://customer-api.getpliant.com/reference/get-organization-details.md - https://customer-api.getpliant.com/reference/get-otp-for-pci-widget.md - https://customer-api.getpliant.com/reference/get-payments-detail.md - https://customer-api.getpliant.com/reference/get-payments.md - https://customer-api.getpliant.com/reference/get-projects.md - https://customer-api.getpliant.com/reference/get-receipt-automatcher-status.md - https://customer-api.getpliant.com/reference/get-receipt-detail.md - https://customer-api.getpliant.com/reference/get-receipts.md - https://customer-api.getpliant.com/reference/get-single-card-details.md - https://customer-api.getpliant.com/reference/get-statement-csv.md - https://customer-api.getpliant.com/reference/get-statement-detail.md - https://customer-api.getpliant.com/reference/get-statementpdf.md - https://customer-api.getpliant.com/reference/get-statements.md - https://customer-api.getpliant.com/reference/get-teams.md - https://customer-api.getpliant.com/reference/get-transactions-detail-batch.md - https://customer-api.getpliant.com/reference/get-transactions-detail.md - https://customer-api.getpliant.com/reference/get-transactions.md - https://customer-api.getpliant.com/reference/invite-cardholders.md - https://customer-api.getpliant.com/reference/issue-card-instant-with-pci.md - https://customer-api.getpliant.com/reference/issue-card-instant.md - https://customer-api.getpliant.com/reference/issue-card.md - https://customer-api.getpliant.com/reference/list-cardholders.md - https://customer-api.getpliant.com/reference/list-organizations.md - https://customer-api.getpliant.com/reference/load-cards-batch.md - https://customer-api.getpliant.com/reference/lock-card.md - https://customer-api.getpliant.com/reference/metadata-receipt-to-automatcher.md - https://customer-api.getpliant.com/reference/receipt-as-merged-pdf.md - https://customer-api.getpliant.com/reference/receipt-as-pdf.md - https://customer-api.getpliant.com/reference/receipt-original.md - https://customer-api.getpliant.com/reference/receipt-thumbnail.md - https://customer-api.getpliant.com/reference/register-cardholders.md - https://customer-api.getpliant.com/reference/remove-account-entry-subscription.md - https://customer-api.getpliant.com/reference/remove-accounting-project-subscription.md - https://customer-api.getpliant.com/reference/remove-accounting-team-subscription.md - https://customer-api.getpliant.com/reference/remove-accounting-transaction-subscription.md - https://customer-api.getpliant.com/reference/remove-card-account-subscription.md - https://customer-api.getpliant.com/reference/remove-card-copilot-subscription.md - https://customer-api.getpliant.com/reference/remove-cardholder-subscription.md - https://customer-api.getpliant.com/reference/remove-cards-subscription.md - https://customer-api.getpliant.com/reference/remove-payment-subscription.md - https://customer-api.getpliant.com/reference/remove-receipt-automatching-subscription.md - https://customer-api.getpliant.com/reference/remove-receipt-subscription.md - https://customer-api.getpliant.com/reference/remove-statement-subscription.md - https://customer-api.getpliant.com/reference/remove-transaction-subscription.md - https://customer-api.getpliant.com/reference/replace-card.md - https://customer-api.getpliant.com/reference/resend-callbacks.md - https://customer-api.getpliant.com/reference/search-callbacks.md - https://customer-api.getpliant.com/reference/simulate-prefund-payment.md - https://customer-api.getpliant.com/reference/simulate-transaction-status-transition.md - https://customer-api.getpliant.com/reference/terminate-card.md - https://customer-api.getpliant.com/reference/unassign-from-team.md - https://customer-api.getpliant.com/reference/unassign-project-team.md - https://customer-api.getpliant.com/reference/unlock-card.md - https://customer-api.getpliant.com/reference/update-card-account.md - https://customer-api.getpliant.com/reference/update-card-controls-by-card.md - https://customer-api.getpliant.com/reference/update-card-copilots.md - https://customer-api.getpliant.com/reference/update-card-label.md - https://customer-api.getpliant.com/reference/update-card-limit.md - https://customer-api.getpliant.com/reference/update-card-validity-period.md - https://customer-api.getpliant.com/reference/update-card.md - https://customer-api.getpliant.com/reference/update-cardholders.md - https://customer-api.getpliant.com/reference/update-custom-field-option.md - https://customer-api.getpliant.com/reference/update-custom-field.md - https://customer-api.getpliant.com/reference/update-custom-fields-on-accounting-transaction.md - https://customer-api.getpliant.com/reference/update-custom-fields-on-card.md - https://customer-api.getpliant.com/reference/update-project.md - https://customer-api.getpliant.com/reference/update-team.md - https://customer-api.getpliant.com/reference/update-transaction-category.md - https://customer-api.getpliant.com/reference/update-transaction-comment.md - https://customer-api.getpliant.com/reference/update-transaction-partner-submission-status-batch.md - https://customer-api.getpliant.com/reference/update-transaction-partner-submission-status.md - https://customer-api.getpliant.com/reference/update-transaction-receipt-upload.md - https://customer-api.getpliant.com/reference/upload-receipt-to-automatcher.md - https://customer-api.getpliant.com/reference/upload-receipt.md merge: pages: 128 deduped: 452 conflicts_kept_first: 0