Common issues encountered during the B2B Commerce checkout process and provides guidance to help identify and resolve them.
- OOTB Checkout, Payment, or Place Order API Fails
| Action |
Troubleshooting Notes |
| Check for concurrent modifications |
Verify if other endpoints or custom code are concurrently modifying WebCart. |
Validate last /checkouts API response |
Last operation on checkout should return 200. |
| Handle 202 response |
If last /checkouts API returned 202, wait until GET /checkouts returns 200, indicating asynchronous operations completed. |
- Custom Components Can’t Update Checkout Information
| Action |
Troubleshooting Notes |
| Verify checkout page load status |
Check result of last GET /checkouts call. 202 response means checkout wasn't completely loaded. |
| Update customization logic |
Modify customization to wait for GET /checkouts to return 200 before attempting updates. |
| Use out-of-the-box APIs |
Use OOTB APIs whenever possible. For example, OOTB API for updating phone number includes necessary validation at invocation. |
- Payment or Billing Information Gets Overridden
| Action |
Troubleshooting Notes |
| Review API orchestration |
Observe API call sequence and compare against standard OOTB Checkout flow. |
| Identify post-payment checkout API usage |
Check if any Checkout API is used after entering payment/billing information. For example, updating shipping address re-runs calculators and invalidates payments if total amount changes. |
| Check custom Apex calls |
Inspect all custom Apex calls made after entering payment/billing information. A customization might be overriding fields. |
- Payments Created But Not Updated on WebCart
| Action |
Troubleshooting Notes |
Examine /checkouts/payments PostAuth responses |
Look for failures in PostAuth API response. |
| Identify concurrent modifications |
Most frequent cause is concurrent modification. Look for concurrent custom code modifying cart state. |
| Avoid concurrent cart modifications |
Eliminate concurrent calls modifying cart state. |
| Verify pre-payment /checkouts status |
Verify last /checkouts call returned 200 before invoking payments. If not, modify orchestration to wait for 200 response. |
- Order or Order Summaries Not Created
| Action |
Troubleshooting Notes |
| Check Checkout API failures |
Review responses of all Checkout APIs for failures. |
| Focus on CheckoutPayment PostAuth API |
Common point of failure. Refer to troubleshooting steps in "Payments Created But Not Updated on WebCart." |
| Verify subsequent API success |
Ensure APIs following payment step (PlaceOrder/SubmitOrder) were successful. |
| Review process exceptions |
Navigate to Setup > Process Exceptions and check for recent exceptions. See Process Exceptions for more details. |
| Troubleshoot high scale order ingestion |
If High Scale Order Ingestion is enabled, try disabling and re-enabling Order Ingestion from Setup > Order Management. |
- "Payment Method Isn't Authorized" Error
| Action |
Troubleshooting Notes |
Check paymentMethodId and paymentGroupId on WebCart |
Verify both fields are present on WebCart. This applies to Commerce Webstore Checkout Orders API. |
| Validate payment amount sum |
Ensure: PaymentGroup.TotalAuthAndSaleAmount + PaymentGroup.PendingAuthAndSaleAmount = WebCart.GrandTotalAmount (or FirstPymtGrandTotalAmount for subscriptions). Applies to Commerce Webstore Checkout Place Order Action API. |
| Validate custom solution |
If using custom payment solution, ensure it incorporates required field validations. |
| Verify OOTB solution |
If using OOTB payments, verify CheckoutPayment APIs response was successful. |
- Order Summary Displays $NaN for $0.00 Line Items
| Action |
Troubleshooting Notes |
| Check for custom calculator |
Determine if custom calculator is used for price or promotion logic. |
| Identify null/undefined price fields |
Check if any price fields are left as null or undefined instead of being set to 0. |
| Fix custom calculator |
Update custom calculator to explicitly set fields to 0 instead of null or undefined. |
- Shipping Options or Delivery Methods Don’t Load (No Errors)
| Action |
Troubleshooting Notes |
| Check for custom shipping calculator |
Determine if shipping calculator is custom implementation. |
| Verify shipping method generation (custom) |
If custom, ensure calculator successfully generates and returns shipping methods. |
| Verify CartValidationOutput (custom) |
If custom, ensure it creates CartValidationOutput for failure scenarios. Otherwise, checkout may get stuck in bad state. |
- Phone Numbers Converted to E164 Format
| Action |
Troubleshooting Notes |
| Understand phone number validation |
Default validation converts input to E.164 format, removing hyphens. |
| Disable validation (workaround) |
Enable org permission CheckoutSkipPhoneValidation. |
- ListPrice on OrderItem Doesn’t Map from CartItem
| Action |
Troubleshooting Notes |
| Understand default mapping |
By default, CartItem.SalesPrice maps to OrderItem.ListPrice. |
| Change mapping |
Enable org permission SalesPriceToListPriceMap. This maps CartItem.ListPrice to OrderItem.ListPrice instead. |
- "Cart is Currently in Use" Error
Salesforce Knowledge Article Number: 002722661
| Action |
Troubleshooting Notes |
| Identify source API |
Pinpoint which API is returning this error. |
| Check for concurrent calls |
Error indicates multiple concurrent calls attempting to update cart state. |
| Eliminate concurrent calls |
Refactor process to eliminate concurrent calls modifying cart state. |
- CartCheckoutSession Not Created
| Action |
Troubleshooting Notes |
| Check for custom creation logic |
Determine if customization creates CartCheckoutSession before invoking Checkout API. |
| Use single creation method |
If custom logic exists, use only one method. Use standard Checkout API for this operation. |
- Orders Created Even When Payment Fails in B2B LWR Store
| Action |
Troubleshooting Notes |
| Identify Payment Provider and Webhook Usage |
Check if a payment provider, such as Adyen is used, which confirms payment via a webhook. |
| Check for Place Order API Usage |
If the webstore uses Place Order API, orders are created immediately without waiting for the payment confirmation webhook, leading to order creation even on failed payments. |
| Switch to Place order Action API (Recommendation) |
The recommended solution is to switch to Place order Action API, which only creates Orders after payment is confirmed by the webhook. |
- Out of Stock Error When Inventory Available
| Action |
Troubleshooting Notes |
| Check cart size limit |
B2B stores have hard limit of 500 line items per order. |
| Check OCI limit (if enabled) |
If Order Confirmation Integration (OCI) is enabled, there's a limit of 100 product ID and location combinations per request. |
15."Invalid checkout session status. Expect: PendingClosed, actual: Active" with cartToOrderSummary
| Action |
Notes |
| Check for Place Order Action API |
Determine if Place Order Action is enabled. See Streamline Place Order. |
| Compatibility issue |
If Place Order Action API is enabled, Apex method Sfdc_Checkout.CheckoutOrderService.cartToOrderSummary isn't supported. |
- Incorrect Payment Amount
| Action |
Troubleshooting Notes |
| Check API orchestration timing |
Payment was likely initiated before waiting for all Checkout APIs to complete (before receiving 200 response). |
| Potential amount changes |
Amount fields on WebCart can change after asynchronous calculators complete. Always wait for 200 status. |
- "We Can't Find Checkout" Error
| Action |
Troubleshooting Notes |
| Check OptionsCartCalculateEnabled |
If OptionsCartCalculateEnabled is disabled, this error is expected. New CartCheckoutSession is required after cart is modified. |
- Orders Created in Draft Status
Salesforce Knowledge Article Number: 000393690
| Action |
Troubleshooting Notes |
| Check for concurrent calls |
Concurrent calls modifying Cart and Checkout entities compete with Order Activation process, resulting in activation failure and order remaining in Draft status. |
| Eliminate competition |
Ensure no concurrent processes modify Cart/Checkout entities during Order Activation phase. |