We added the possibility to implement Google Pay and/or Apple Pay for your cards.

Apple Pay / Google Pay Integration

It is now possible for partners to implement Google Pay and/or Apple Pay for their cards in their mobile apps. You can find all the necessary information in this article in our guides section: πŸ”—Apple Pay / Google Pay Integration.

We are offering a new endpoint that matches the receipt automatically to a transaction.

Receipt Automatching

You are now able to programmatically access our receipt auto-matching feature. There are multiple options/endpoints available:

  1. Automatch and attach a file to a transaction: Provide a receipt file (PDF, PNG, JPEG) and we try to find the corresponding transaction for this receipt.
    POST /receipts/automatching
  2. Automatch Metadata to a transaction: Provide us with metadata about a receipt and we try to find the corresponding transaction for this metadata. Nothing is attached to the transaction, we just provide a matching transactionId if found. The more data provided, the better the matching result.
    POST /receipts/automatching/metadata

Both endpoints work asynchronously and do start the auto-matching process.

There are two ways to check the result:

  1. Query the status of the auto-matching task specified by automatchingTaskId.
    GET /receipts/automatching/{automatchingTaskId}
  2. Subscribe to the event RECEIPT_AUTOMATCHING_FINISHED and you'll receive a callback once it is finished.
    POST /receipts/automatching/subscription

More information can be found in our guides section: πŸ”— Receipt Automatching

πŸ“˜

This feature is only available in API Version 2.1.0

We improved the way you are able to track the onboarding progress of an organization by adding an additional endpoint and several new callbacks.

Onboarding & Risk status

Sometimes the user who needs to provide data and/or documents during onboarding is not the one who applies/enables the credit card feature in your applications. Previously it was not possible for you to show any kind of information about onboarding progress to your customers.

We do now provide a new endpoint that allows you to fetch details about the onboarding of a specific organization: GET /organizations/{organizationId}/risk.

This enables you to either show information about the onboarding status to your support/ops/sales teams. You can even provide the progress of the onboarding as part of your UI to your customers.

Onboarding Events

Next to the endpoint, we are providing a list of new events that you can subscribe/unsubscribe to by adding or updating your subscriptions for the organization entity:

REPRESENTATIVE_SUBMISSION_STATUS_CHANGED
REPRESENTATIVE_LEGITIMATION_STATUS_CHANGED
DOCUMENT_CUSTOMER_STATUS_CHANGED
DIRECT_DEBIT_STATUS_CHANGED
BANK_CONNECTION_STATUS_CHANGE

All of the above do have eventType, organizationId and statusChange properties in the body of the callback.

  • For REPRESENTATIVE_SUBMISSION_STATUS_CHANGED and REPRESENTENTIVE_LEGITIMATION_STATUS_CHANGED we do additionally provide the representativeId.
  • For DOCUMENNT_CUSTOMER_STATUS_CHANGED we do additionally provide category.

Please find a sample below:

{
  "eventType": "REPRESENTATIVE_SUBMISSION_STATUS_CHANGED",
  "organizationId": "b1f8e35c-c500-4bbf-aa20-3dc14b83ff19",
  "representativeId": "2acaec98-b337-4006-ba09-a93874d9b338",
  "statusChange": {
    "beforeChange": "INTERNAL_ONLY",
    "afterChange": "INFO_REQUESTED"
  }
}

Important remarks

πŸ“˜

We do only share any information via endpoint or events if the owner of the organization has agreed to share the onboarding status within Pliant.

❗️

We do never share any personal and/or sensitive information of any of the involved parties nor do we share any details about the requested documents, connected bank accounts or the direct debits.

We have added a status page that allows you to monitor our APIs as well as subscribing to updates about incidents via Slack or Email

New status page

  • You can find the status of Pliants APIs by navigating to https://pliant-api.statuspage.io/
  • You are able to subscribe via E-Mail or Slack to be notified whenever we create, update or resolve an incident.

🚧

Breaking change 2.0.0 -β€Ί 2.1.0

We are introducing more granular card status information which helps you e.g identifying if the card has been locked by the user deliberately or because the PIN was entered incorrectly more than 3 times.

Granular card status

The following endpoints are modified

The allowed ENUM values for the new property detailedStatus are listed below:

PENDING_ACTIVATION
PENDING_ISSUANCE
PENDING_REGISTRATION
REQUEST_APPROVED
REQUESTED
REQUEST_CANCELLED
REQUEST_REJECTED
ACTIVE
LOCKED
LOCKED_PIN
EXPIRED
TERMINATED
TERMINATED_LOST
TERMINATED_STOLEN

πŸ“˜

This change is only available in API Version 2.1.0

Minor changes

We are adding new endpoints to handle card limit change requests.

Card limit requests

While API consumers have long been able to update card limits directly, card limit change requests have been only available through the Pliant UI. Now we are introducing new endpoints that enable you to create, fetch, list, approve, reject and cancel card limit change requests:

Remarks on the business logic:

  • Only one card limit request can be PENDING per card. In case there is already a card limit request open for one card and you are creating another one the API responds with a helpful error message.
  • Only card limit requests with the status PENDING can be cancelled as APPROVED, REJECTED and CANCELED are considered as final status.

Minor improvements

We are adding new batch endpoints that can be used to update the partnerSubmissionStatus of a given set of transactions and/or payments.

Batch endpoints for partnerSubmissionStatus

We are introducing two new endpoints that enable you to update the partnerSubmissionStatus for multiple transactions or payments.

If there is an error with one of the transactions (e.g. because the transition is not allowed for the given transactionId) we do process all other transactions and return the list of untouched transactions.

See this page in the documentation to get to know more about partnerSubmissionStatus property and business logic.

We are adding a new endpoint that allows replacing cards.

Replace cards

We are introducing a new endpoint POST /cards/{cardId}/replace that enables you to replace existing cards with new ones.

  • When replacing cards all existing configurations will be set up automatically based on the values of the existing card (e.g. limit, transactionLimit ...)
  • The big advantage of replacing cards (in comparison to terminate and re-issue a new card) is that most subscriptions (that have been set up using the payment data of the replaced card) will still continue to work without updating the payment data. To put it differently: Most merchants (especially big ones) will still be able to deduct money using outdated payment details (PAN, CVV and expiry date). This effectively reduced the danger of failed payments until the payment details have been updated by the cardholder.
  • The endpoint only works for cards with types VIRTUAL, PHYSICAL or TRAVEL
  • Allowed values for property terminateCardReason are depending on card type
    • For cards with type PHYSICAL all values are valid. If LOST, STOLEN is provided, the replaced card gets automatically terminated; if DAMAGED or OTHER is provided the replaced card gets terminated only once the newly created card is activated.
    • For cards with type VIRTUAL or TRAVEL only the values STOLEN (for compromised card details) or OTHER are allowed. In both cases, the replaced card gets immediately terminated.

Minor improvements

We added a couple of improvements to several parts of our API especially on your possibilities to maintain callback subscriptions.

Callback management

(1) We improved the management of subscriptions/callbacks

  • Consumers are now able to edit existing subscriptions simply by calling the respective POST endpoints with the updated payload.
  • We are introducing a new endpoint to fetch your current callback configuration: GET api/subscriptions. It returns a list of all active subscriptions.
  • Once the cardUpdated callback is sent for card updates (e.g. because the event CARD_DETAILS_CHANGED has happened) and no changes are made to the card limits the limitChange property will be omitted from the payload from now on.

(2) We are introducing the possibility of setting a syncFromDate once you activate organization authorization via POST /organizations/{organizationId}/activate. Once set you will only receive callbacks for business entities with createdAt later than syncFromDate.

  • The default setting is the organization's creation date in the Pliants system hence if not set while calling the endpoint you are going to receive all callbacks for all business entities no matter if they occurred before setting up the connection between Pliant and your application.
  • If existing authorization is removed (e.g. customer disconnects) and added afterwards again we do use the previously set and already existing syncFromDate if not provided during any (additional) re-activation call.
  • If you want to remove the syncFromDate you can simply set it to a date before the organization's creation date.
  • We are not re-pushing any historical data. When you set thesyncFromDate in the past, you will only get updates on business entities in the past if the event is happening (and not for events that happened in the past).

Minor improvements

  • Previously it was possible to request or issue a card for a member in INACTIVE state. This is not possible anymore. Instead, the API will respond with HTTP status codes 404 and errorCode NOT_FOUND.
  • We added cardholderId to transactionUpdated object that is sent for callbacks that can be subscribed via POST /transactions/subscription.

This week we are introducing travel purchasing cards to our API

New card type: TRAVEL

🚧

Important: This card type is disabled per default and each customer and/or partner needs to sign additonal contractual agreements for them to be enabled

Travel purchasing cards are virtual cards designed to be used in travel-related business processes.

From a business perspective travel purchasing cards,

  • only work for a specified set of merchants
  • are exempt from 3DS

From a technical perspective travel purchasing cards are basically the same as cards with type VIRTUAL.

Changes to the API

We introduced a new ENUM value TRAVEL for property type used in multiple endpoints for card and card requests entities.

List of updated endpoints for cards entity:

List of updated endpoints for card requests entity: