We are introducing a new entity: Accounting Transactions.
Accounting Transactions
In Pliant it's possible to
assign accounting-relevant data fields (e.g. G/L accounts, VAT rates...) to a transaction
and split one transaction into multiple sub-transactions
We do store this information not on the transaction level (transactionId) but on the accounting transaction level (accountingTransactionId). We do start exposing this data in our APIs as well by adding the following endpoints/callbacks:
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:
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
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.
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.
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 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.
We added a couple of improvements to several parts of our API especially on your possibilities to maintain callback subscriptions.
Callback management
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 limitChangeproperty will be omitted from the payload from now on.
Minor improvements
Previously it was possible to 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 errorCodeNOT_FOUND.
We added cardholderId to transactionUpdated object that is sent for callbacks that can be subscribed via POST /transactions/subscription.
We are introducing a new way to activate physical cards. Instead of dedicated activation codes that need to be added to the card carrier you can activate cards via API based on the last four digits of the card's PAN.
Using refNum to activate physical cards
Previously it has only been possible to activate physical cards with a dedicated activation code that was provided by the card manufacturer when shipping the cards. This special (one-time) activation code needs to be added to the card carrier (e.g. sticker) and is sometimes overlooked by end users.
To address this issue we are enhancing our POST /cards/{cardId}/activate endpoint with a way to activate cards based on the last four digits of the PAN (which in our API we call refNum )
Added a request body property called activationMethod with allowed ENUM values activationCode & refNum
Allowed to provide activationCode values with 4 digits (previously 6 digits)
extending the Callback object cardholderUpdate with status property
Possible ENUMs are:
INVITED
ACTIVE
DEACTIVATED
Card limit changes
We do now provide more granular information about card limit changes. So whenever one of the listed properties of a card is updated we trigger the CARD_LIMIT_CHANGED callback (if setup via POST /cards/subscription).
transactionLimit
monthlyLimit (this one is deprecated)
limit
limitRenewFrequency
We provide a new property called limitChange which includes the previous and the new values so you can easily build e.g. notifications on top of it. Please find an example below: