...
RemoveItemFromCart returns OperationNotAllowedInCurrentStateFault if paid or paid now on the line is greater than 0.
Change in offline exception when searching for on-hold receipt
When searching for a non-existent on-hold receipt in POS and ReceiptOnHoldServiceUrl is configured, this is no longer considered as an "offline" exception. The "offline" exception will still occur and will be logged if the URL configured is indeed offline.
Split Delivery in BatchToPosApi
...
When there are multiple discounts available for items in the cart, they are properly selected, so the best price is picked.
BatchToPosApi - Filtering entries to fetch the details from the last 48hrs from the database
...
Digital receipt is send with account id based on new DigitalReceiptMdsAccountId parameter value.
Error message includes EAN of the item
To make it easier to identify which item is causing a problem, when you get ItemSaleNotStarted error, or ItemSaleEnded, the error message will now include the EAN of the item.
Link for FAQ added in the swagger index page
...
Updated the ItemExt/SearchItem endpoint to ignore the single character search.
Updated error codes for customer
The error messages and the codes provided by POS API have their prefixes updated specifically for the customer
...
Released 17.10.2024
Fix for "success" field in ResumeCart
...
Removing item which is previously/already removed will fail with an error
Coupon Type in SetLoyaltyIncart
SetLoyaltyIncart returns the coupon information for the cart with in the new field "Type" to indicate what type of coupon it is. Possible returned values are: Unknown, CouponId, CustomerId, Bonus, BonusReward, BonusAmount, BonusCheck, StampCard, TenderCoupon.
BatchToPosApi - Delivery address not required for click and collect
(RTP-4516)
When the delivery method is set to "LRS.RIS" (click and collect), the delivery address is not be required.
BatchToPosApi - Adjust ordered quantity in deliveryOrder
It is possible to adjust ordered quantity using the deliveryOrder file type through BatchToPosApi. The items must not have been already delivered.
...
Released 19.09.2024
Customer-specific transaction details in POS API
Structured notes for 'ExternalTypeCode', 'CountryCode', 'ExternalLineTypeCode', and 'TaxGroupID' are included in all EG POSLogs from the POS API. Even if a receipt is converted to a lower POSLog version that doesn't support these fields, the information is retained in the POSlog as long as the version supports structured notes. The structured notes correctly translate to ARTS extensions during conversion in ReceiptService, ensuring consistent handling of transaction data across different versions and sources.
Expand | ||
---|---|---|
| ||
|
...
We're encountering an Invalid Cast Exception on certain endpoints related to POSLog, which is causing the POS API to return a 500 error. This issue has been resolved by updating the error code to 400 and providing a valid failure message.
External Order Number
External Order Number can be set in ReserveCartInStore and is sent through POS Message.
...
Released 05.09.2024
Post-registration of members through NewCartForTransactions
Adding a member to a finished receipt can be done by passing the value "PostRegisterCustomer" for transactionMode in NewCartForTransactions method, including a reference to the finished cart in cartReference. The loyalty number of the member can be added by using SetLoyaltyInCart method using the cart ID in the response from NewCartForTransactions.
Fix for rounding issues
...
Fetching latest completed receipts
The latest completed receipts can be fetched by using GetLatestCompletedCarts. By default, the end point returns the last 50 receipts, but it can be configured to retrieve between 1 and 200 receipts.
...
Released 28.08.2024
Update Klarna after capture
When updating an order in POS API, by reducing the quantity of an item or deleting an undelivered item, the Klarna payment is updated. After the change in quantity and capturing the transaction, the remaining amount is released in Klarna and no longer requires settling.
...
When an invalid or expired coupon is added or used, proper error message is displayed.
...
Released 08.08.2024
Improved error handling in SetStoresForCartOrderPicking method
When using the SetStoresForCartOrderPicking endpoint with a non-existing item identifier, the response is more descriptive. It gives information about the cart id and the wrong cart item identifier.
Removal of picking order when using DeleteCartOrder
Deleting an order from cart in POS API also deletes it in Backoffice, as well as makes it unavailable for picking in InStore App.
...
Released 23.07.2024
CouponValidationType in CartCalculator
...
Method SendCartOrderConfirmationNotification can be used on already finished/cancelled receipts to send SMS with information to the customer.
SKU (Stock Keeping Unit) in POSLog XML and ARTS POSLog XML
Extended POSLog with string field called "SKU" in element "ArticleDetails".
The new field is also included in the transformation to ARTS POSLog XML v2/v6.
...
Released 11.07.2024
Restrict update of default customer information
When customer Id and the default customer (ItemSaleServiceCustomerNumber) are same then customer information update will not happen.
Unit of measure for returns
...
When searching for items in POS API using the SearchItem methods, items with the flag IsDeleted = True don't show up in the results.
...
Released 01.07.2024
Conditional Setting of 'CustomerId' During Member Fetch
When fetching a member from PosCustomerService to POS API, the customer ID is included if the response contains any 'CustomerId'. This ensures that discounts can be applied based on the customer, not just the member information fetched
...
Released 27.06.2024
Support for EAN14 (D-PAK/DUN)
...
- /CancelBonusPayment
- /CancelGiftCardPayment
- /GetAvailableBonus
- /GetCloudPaymentServiceConfiguration
- /SetCartReadyForPaymentAction
Boarding pass count
GetCart endpoint shows correct boarding pass count.
Delivered Cart ID in GetItemsAvailableForReturn
...
When BeginCartEditing is called on a cart with age restricted items and RequestAgeVerification = FALSE, AgeVerificationResult is retained from previous receipt.
...
Released 23.05.2024
Fix for exceptions generated when searching for receipts on hold
Calling SearchReceiptOnHold no longer causes exceptions when ShopAndGoReceiptOnHoldServiceURL parameter is configured and IsShopAndGoCheckoutRegister is set to true.
Import of item attributes related to duty-free and grocery
Attributes 'Duty free', 'Sealing bag', 'Restricted', 'Origin' and 'Weight control' are visible in item details, and are exported and imported by both JSON and Excel files. Origin and weight control can be defined as store local values.
Info | ||
---|---|---|
| ||
POS Master 3.0.0.161 or higher |
...
Released 15.05.2024
New parameter skipAddingLinkedItems in NewcartWithItems and AddItem(s)ToCart
...
Support EANs that allows to add price discount to the specific item
Support for EANs with format defined in POS Configuration Parameter DiscountLabelRegEx is added to methods NewCartWithItems, AddItem(s)ToCart.
Expand | ||
---|---|---|
| ||
|
Override fixed price in cart
When AllowLineDiscountOnFixedPricedItems POS parameter is set to true, it is possible to change price if an item with fixed price.
...
Released 02.05.2024
Group links for linked items
...
If a cash register has a number series missing, it doesn't fail the SendEobdJob. Instead, it logs a warning and proceeds with the rest of the cash registers that have the proper configuration. The EOBD receipt is created at a previously specified time.
...
Released 18.04.2024
FaultCode added to GeneralFault response
New parameter FaultCode, which is a string property on the PosApiBadRequestResponse, is returned for bad requests in POS API.
PosApiDataExport - Id and VatRate in PriceItem export
The following are added in PriceItem export:
- Id is included for normal price and campaign price in the exported blobs
- VAT rate is included for normal price in the exported blobs
New cart properties for delivery/payment state
Properties added for carts:
...
"couponCodeUsed" property on the discountDetails in cart shows the coupon used when it triggers a discount.
Improvements in price calculation performance
Generic improvements has been made to performance of price calculations in POS. Some mixtypes will be significantly faster than before with many items in the mix/receipt.
ItemSale/AddGiftCardToCart
...
BatchToPosApi - Support for orders without payment
Orders with no payment lines included are properly processed and merged in the BatchToPosApi database.
BatchToPosApi - Fusion Fuel Integration - Import of fuel transactions from outdoor payment terminals
...
Info | ||
---|---|---|
| ||
POS Master 3.0.0.154 |
...
Released 26.03.2024
Voyado coupons only available in the assigned sales channel (POS, POS API or both)
Voyado coupons that is marked in Voyado as only available in web shop will be visible only in web shop (through the POS API). Similarly, coupons marked available in store (in Voyado) will only be available in POS in physical stores. Lastly, if a coupon is marked in Voyado as available both in store and in web shop it will be visible both in POS and in the web shop (through the POS API).
...
When searching for items via the GetItem, GetItems or ParseScanCode methods in POS API, item number can be used as the input to get the item details.
Online return fails if item is paid before delivery
When returning an item, which was bought with a discount, via the NewCartWithItemReturn method, it no longer fails when the IncludeDiscountsInOnlinereturn=true.
...
When paying for an order, it is possible to make the transaction with a pre-validated gift card using the AddGiftcardPayment method. Pre-validated gift cards can also be purchased like other items by adding them with AddGiftcardToCart method.
BatchToPosApi - Support for line discounts when using SKU/Item Number to identify order lines
When POS API is configured to lookup items on item numbers, BatchToPosApi supports assigning line discount when SKU/Item Number is used instead of EAN to identify items on order lines.
...
Released 28.02.2024
BatchToPosApi - Support for item number in adding to cart
...
When splitting a line while delivering items (using DeliverCartItem), item and price information is no longer taken from the database but from cache instead.
...
Released 22.02.2024
PreferredDeliveryDateTime in ReserveCartInStore
ReserveCartInStore is updated to send/receive preferred date time of a delivery (PreferredDeliveryDateTime) of a click and collect order.
Changes in functions "SearchItem" and "GetItem"
...
For BatchToPosApi, a new parameter called 'useUniqueOrderNumber' was added to the DeliveryFromStagingToPosApi and PaymentFromStagingToPosApi jobs. When set to True, the job will call the GetCartIdByOrderNumber endpoint with isUniqueOrderNumber=True.
...
Released 07.02.2024
Adyen Checkout
Adyen is available as a payment terminal in POSAPI. It is possible to pay for an order with an authorized Adyen payment. After the transaction, the payment can be captured by using PaymentService to contact Adyen itself.
Exception when main currency is a supported currency
...
Fixed exception thrown by EndCart and CheckOutCart endpoints when Main currency is not a part of supported currency.
...
Released 01.02.2024
Support for InternalOrderNumber
Both external order number and internal order number are supported in order delivery and order payment BatchToPosApi jobs.
Coupon texts from Voyado
...
Info | ||
---|---|---|
| ||
POS Import 4.0.63 or higher |
Info |
---|
See separate documentation for Jira story RTP-26535 for implementation details in POS |
Improvement of mix calculation with effect items
When calculating price for promotions, EG POS will only fetch the items that is relevant for the calculation in the current receipt. This will improve the calculation time because there is less data to process. The improvement works particularly well for promotions with a large number of items.
BatchToPosApi - Support multiple tender types
...
VAT Rate in Price Export
VAT Rate is included in POS API Data Export (PriceExport job), which enables different VAT rates for different countries (multi-country support). Previously, this was only included in Item Export.
Info | ||
---|---|---|
| ||
POS Master 3.0.0.141 |
...
BatchToPosApi - Support for importing through cloud POS API
Support for importing batch files received regarding orders, payments and deliveries through cloud POS API using the BatchToPosApi integration package is added.
BatchToPosApi - Capture payment for web orders
...
This initial release will add the following permissions to User Management:
Support for importing all of these new permissions has been added to POS Import and POS Master database.
Info |
---|
The "old" POS permissions in User Management have been moved toa separate group "deprecated - do not use": These should not be used and will be removed in the future when retailers using them have been migrated to using the new permissions. |
Full text search fix for SQL 2008
...
Info | ||
---|---|---|
| ||
POS Import v. 4.0.59 or higher. |
...
Released 22.11.2023
Improved error handling in POS API when adding coupons from Voyado
We have improved error handling in the POS API so that we don't experience calls to POS API failing if fetching coupons from Voyado fails.
...
Released 14.11.2023
Support UTC input in CalculateCart
...
Info | ||
---|---|---|
| ||
POS Import v. 4.0.58 or higher. |
Overriding of price to 0
It is now possible to override or change the prices of items returned and items added to cart to 0. It is The new price can be set through itemPrice in NewCartWithItemReturn method.
AlternativeOperatorId as OperatorId
...
Import multi-country item group texts
Support for importing country-specific item group text is added to POS. This will enable showing the item group text in the language of the country the cash register is in.
Info | ||
---|---|---|
| ||
POS Import v4.0.57 or higher POS Master v3.0.0.132 or higher |
...
Info | ||
---|---|---|
| ||
POS Master 3.0.0.128 or higher. |
...
Released 03.10.2023
Improved performance of mix 24 and mix 28 in POS API
Improvements have been made to the performance of mix 24 and 28 for model mixes with large number of items. Performance is now significantly better in POS API.
AmountLimitPerReceipt now matches with the maximum purchases per receipt for the campaign
...
Info | ||
---|---|---|
| ||
POS Import v. 4.0.55 or higher. |
Show couponAmount for Voyado bonus checks
The couponAmount field will now show the correct amount when fetching Voyado bonus checks using the POS API. Previously the couponAmount would allways be '0.0'.
Import of item weighted cost price per store
...
Info | ||
---|---|---|
| ||
POS Master v. 3.0.0.127 or higher. |
Improved performance of import of prices and discounts from Promotion
To reduce delay from creating and approving a promotion in promotion module, and getting them available in POS, we've made procedural changes to how we import these updates, which will result in better performance between products.
Info | ||
---|---|---|
| ||
POS Master v. 3.0.0.127 or higher. |
...
If an offer is created for a specific customer group, the offer should only be applied in the POS when a customer belonging to that group is added to the receipt.
Info | ||
---|---|---|
| ||
POS Import v. 4.0.54 or higher. |
Import of reason/actions codes from Inventory Service
...
Info | ||
---|---|---|
| ||
POS Master v. 3.0.0.119 or higher. POS Import v. 4.0.53 or higher. |
Performance improvement for cart with lots of bundles
...
When adding a member to cart, the assigned Voyado voucher no longer activates automatically. Instead, there is an option to select it at will.
...
Released 21.08.2023
Coupons for promotions
Coupons are identified as optional or automatically applied through isSelectable flag. This flag is now by default set to true, making it possible to activate the coupon even before a relevant item for the coupon is added to cart.
...
Released 17.08.2023
Bundle mix information in POS API data export
Information about bundle mixes (mix type 100 from Promotion module) is included in the POS API data export. For this mix, IdentifierType is Group and EANInBundle and SubConditionItems are used to support group mixes.
...
We've improved logging regarding CartNotReadyForCompletionFault to include the reason why the cart is not ready. This is to make it more possible for clients to resolve the situation based on the provided information.
...
Released 11.07.2023
Ignore cached warmup result in health check
When running regular availability tests we now check on current health check status, instead of a cached result from the startup procedure.
...
Released 06.07.2023
New method to get customer credit information
...
(Previously we would only send samples of exceptions to telemetry client, meaning some exceptions might not show up in logs.)
...
Release 27.06.2023
Support for Read Replica feature in Premium Azure SQL
...
When member did not agree to the digital receipt subscription, and AlwaysSendDigitalReceipt = True, the digital receipt is no longer sent to that member.
...
Released 23.06.2023
Create cart even when member does not exist in Voyado
...
When 'CreateCartWithItems' is called with a member that doers not exist in Voyado, the cart will still be created and the member will be added in the cart. This ensures that the member will receive member prices. Previously we would get an exception in POS API and 'CreateCartwithItems' would fail if the member did not exist in Voyado.
...
Released 22.06.2023
Registering payment when POS API is scaled out
...
Incorrect exception for unknown receipts was thrown from ReceiptOnHold service after changing POS API to run as 64 bit. This has been fixed.
...
Released21.06.2023
Run as 64 bit process to improve performance
...
Improvements to timeout handling in the integration with Voyado has been implemented. If Voyado does not respond in 7 seconds on one of the following lookups, GetPromotionsByContactId / GetMemberByIdentifier / GetMemberLevelForContactId, POS will cancel the lookup by passing a cancellation token.
...
Released15.06.2023
SetCartOrderReferenceExt does not work when scaled out
Method that allows adding order reference to the cart has been improved to support scale out. Customer orders without a customers are now handled properly by SetCartOrderReferenceExt method.
CheckPrice does not handle start/stop time correctly
Using CheckPrice on an EAN that is part of a campaign with dateTimeStart/Stop set to NULL in the condition table no longer fails.
...
Released 14.06.2023
GetCart does not work on resumed carts
...
A problem that could cause SetDigitalReceipt to fail when POS API is running on multiple instances has been fixed.
...
Released 01.06.2023
NewCartWithItemReturn requests are missing OperatorID on the response
Using the method NewCartWithItemReturn it is now possible to change the Operator of the cart.
Improve performance of loading group mixes from database
Performance of loading mix information from the database was improved when an item is contained in a lot of different mix definitions.
...
Released 30.05.2023
Parallel calls to BeginCartEditing
Indexing was changed to improved performance of parallel calls to the method BeginCartEditing.
ArticleDetails is missing on link items
...
When adding an item with a linked item, the linked item's details will also be added in the POSLog XML, provided that the parameter IncludeArticleDetails is set to tTue.
...
Released 10.05.2023
Reduce amount of SaveReceipt on DeliverCartItem
The amount of SaveReceipt instances was significantly reduced when calling DeliverCartItem method on a given cart. It results in less time spent on processing for every cart.
Discount description element does not match with swagger
Swagger documentation of attribute Description for itemSale.CartItemDiscountDetail was updated to be nullable.
Fetch PLU board configuration
Added new method GetPluConfiguration. Request has to contain APIKey and optional StoreIdentifier.
...
Not possible to use default customer in ReserveCartInStore
We've implemented support for using ReserveCartInStore method in Cloud POS API. The method will now properly create a click & collect order to the store specified in your ReserveCartInStore request.
New method to add coupon discount to a Cart
...
- GetCartIdByOrderNumber
- EndCartEditing
- SetCartItemPrice
- AddCouponByDiscountCode
...
Released 07.03.2023
Cart calculator and first item of NewCartWithItems does not get any discounts
The first item in a cart created by NewCartWithItems request will find its correct discounts/campaigns. This fix is done for both ItemSale and CartCalculator.
Correct discounts should now be shown in cart for all items.
Change pos api release pipeline stages
Database upgrade stages are now merged to one stage, so that we can disable sync group and upgrade each tenant separately instead of disabling for every tenant, and only enabling once all tenants are updated fully.
This will significantly reduce the time lost in the process, if the upgrade fails.
Cart calculator and first item of NewCartWithItems does not get any discounts
Price calculation of first item in receipt
...
Correct discounts should now be shown in cart for all items.
Make ReloadConfiguration work without related stores exported
The configuration is now reloaded without exporting related stores. It now selects store from the store table.
EndCartEditing fails validation when editing cart with negative subtotal
...
We've fixed an issue where validation of cart failed on EndCartEditing requests. This validation has now been improved so that ending editing on carts with a negative subtotal (returns, for instance) now succeeds.
...
Released 21.02.2023
Return stop reason in ItemRequirementsNotMetFault
Error message improvement
A new property - 'MessageToCashier', that shows a stop reason, has been added to 'ItemRequirementsNotMetFault' response.
New endpoint to fetch receipt in epos format
Added a new endpoint that fetches the order receipt in the epos format.
Cached prices are filtered based on a single cart's timestamp
When caching the price of an item, inactive prices are included so that if they activate within the cached duration, they will be available to be added to cart.
...
The NoteKey field when adding Notes to items is no longer required and is now set as optional.
Add ShipmentProvider to DeliverCartItem
Added ShipmentProvider field to DeliverCartItem method. Now the carrier name can be added to the delivery information.
...
Released 24.01.2023
Not possible to cancel order in Chain Web due to missing member.
Customer orders are cancelled through POS API without showing error message in Chain Web.
POS / POS API performance issue with voided articles
The request time does not increase rapidly when there are many voided/added items to cart.
Cloud POS API: spikes in SQL procedure duration
We've made improvements to database executions that improves POS API performance, and alleviates an issue where some database queries sporadically spiked in duration.
...
Released 19.01.2023
Performance in cloud POS API
...
POS API supports scale out to multiple instances of the same application service. This allows us greater performance during high load. This release also includes multiple performance improvements.
This change allows us to support auto scaling and requires no configuration. Scaling is handled by DevOps POSAPI team, in Azure portal.
...
Released 12.01.2023
Documentation for SetCartReadyForPaymentAction
Documentation for SetCartReadyForPaymentAction was missing, and this is now published to swagger.
Link to documentation: https://posapi.egretail.cloud/swagger/index.html
Send order to Kitchen screen on-premise
Enabled POS API to send kitchen order to on-premises POS Services via POS WCF relay.
Enabled POS API to assign numbers to kitchen orders that auto-reset daily.
KitchenOrderNumber value increases every time kitchen order is created.
...
Released 04.01.2023
APIKey on method GetPLUConfiguration
GetPluConfiguration was changed to not require cash register number as input.
New property APIKey was created and now it is used to find specify the store/cash register.
Member validation
Customers get an error message regarding member card when arriving to the cash register to pay, and it may lead to re-scanning all items.
When adding member by scanning a QR code, member with deactivated card is no longer added to the transaction.
...
Released 15.12.2022
Fallback for electronic receipt E-commerce
If sending mail with digital receipt fails due to e.g. downtime on services, the mail details will be saved in a new table in POS Local database and a job will retry sending the mail until it succeeds.
When the sending is successful, the row will be deleted from the table. When the job tries to send unsent mails, it will write the number of unsent rows/mails to the POS logfile.
Expand | ||
---|---|---|
| ||
|
...
Released 06.12.2022
Improvement of POS API swagger documentation
Swagger documentation of the following 3 methods has been improved: NewCartWithItems, AddItemsToCart, GetCart
- A red star marks required fields.
- Which fields are rounded in the response is specified.
Return PaymentTerminalType in Cart
Added PaymentTerminalType to Cart. This method is needed for detecting what kind of payment provider is used to start refund in Mobile POS.
It is set in AddPaymentToCart2 and stored in POSLog.
Option for not expanding bundles when added to item transaction
Added a new parameter that gives the option to treat bundles as normal items in the POSLog, with less information shown.
Improvement of calculation rounding amount on customer orders
An improvement is done so it's not possible to complete a receipt if the paid amount doesn't match the sale total on customer orders.
Previous there has been issues with some amounts of both positive and negative rounding on receipts from customer orders, and this potentially caused trouble for stores when doing balance registration.
Expand | ||
---|---|---|
| ||
|
POS API Data Export - Export of prices from EG Item/Promotion management
A new job to export price data has been added to the POSApiDataExport package. This job includes the unique price identifier from EG Item Management.
...
The jobs used different procedures to fetch data in POS Master and will not affect each other.
...
Released 24.11.2022
Added DispatchServiceRule to DeliveryDetails
Added a new DispatchRuleId field that is given in methods that return a cart. It can be set with CheckoutCart or SetCartDeliveryInfo methods.
Improvement of recalculation after completed checkout
Methods EndKlarnaPayment and UpdateKlarnaPayment no longer recalculate the total amount in the created cart.
...
Released 16.11.2023
Introduced a new method called SetCartItemNotes
A new method called SetCartItemNotes is added, which lets the user add/change item notes already added to a cart.
Notes can also be added now while using methods like AddItemToCart, NewCartWithItems and AddItemsToCart.
Added Backoffice as CustomerOrderProvider
CustomerOrderProvider can now be set to Backoffice in Chainweb without causing problems for method BeginCartEditing.
Backoffice was not supported as provider, and that made BeginCartEditing fail wen calling Pos Services CustomerOrderService to get information about supported providers.
Capture and refund supporting Klarna.
(RTP-386)
There is now added functionality for performing capture and refund with Klarna in POS API.
Orders can be now paid and refunded with Klarna through POSAPI.
...
Released 20.10.2023
Improvement of logic of storing sequence number in database
...
When a Click & Collect order is picked, CustomerOrderVariant field is set to WebReservedStorePickup.
...
Released 08.08.2022
Improvement to loyalty number distribution
CoopID is now only added to the ExternalLoyaltyNumber, while the member number is set to the LoyaltyNumber.
...