Authorization and Capture of Credit Card transactions of a pick-up-order
For Partners
Why must the customer pay the pick-up-order one more time in POS?
A pick-up-order is an order that is created in one sales channel and picked up by the customer himself in another sales channel. The most common scenario is where the customer creates an order in the online channel and selects a store where he wants to pick up the items in the order. The customer then pays online and visits the store to pick up the articles ordered.
Storefront 365 supports all omnichannel features that are exposed by Dynamics 365 for Finance and Operations and the Retail Server. The customer may see on-hand stock for all stores to ensure that the items ordered are available for pickup.
Pickup-orders are created as a pre-defined Delivery Method in Dynamics 365 for Finance and Operations assigned to the online retail channel.
The challenge in using Dynamics 365 for Finance and Operations Point of Sale (POS) for a pickup order is that the POS expects the sales order created in the online channel to be both authorized and captured.
That never happens since it’s not legal in many countries and because the Payment Connector in Dynamics 365 for Finance and Operations makes an authorization and no capture when the order is submitted.
When an order is submitted by the customer in the online channel it is authorized by the Retail Server using the Payment Connector for the selected payment method. The order amount is reserved on the customer’s credit card by the payment service provider (PSP). The sales transaction is created as a fully paid sales transaction.
The reservation on the credit card is captured by Dynamics 365 for Finance and Operations HQ when the sales order is picked and packed. The capture removes the reservation of the credit card and fetches the amount from the credit card.
A pickup order is picked and packed by the store that the customer selected for its pickup. It is the POS that will make the capture of the reserved amount and not Dynamics 365 for Finance and Operations HQ.
The issue
When a pickup order is opened in the POS it will treat the pickup order as if it wasn’t paid and require the customer to pay the order (once more). POS expects the order to be captured and ignores the fact that the order is authorized. POS displays the sales order with the reserved amount to pay.
The order must be paid once more to be delivered in the store. When the staff selects to pay the order there will be a posting exception thrown by the Retail Server, “Cannot find the credit card transaction needed to settle this invoice”. The reason is that POS detects that the order is authorized but not captured and tries to make the capture. But when POS tries to capture the remaining amount to pay, which is zero since it’s been paid twice, there is an exception thrown by POS. POS can’t capture a zero amount.
Workaround
The only known workarounds to solve this issue are:
- During demo scenarios, pay the pickup order in POS using a pay-later-payment method like “Customer Account”. It will make POS make the actual capture of the credit card. Click the amount in the checkout page in POS. Don’t use the pre-defined buttons since it is wrongly set to cash payment.
- The Shared Retail Parameters/Omni-channel Payments/Use Omni-channel Payments must be enabled to allow D365 to authorize and capture in subsequent transactions. However, the option does not affect anything regarding the double payment in POS.