Subject: Payment Link fails at capture after 3DS approval when order has type: 'DELIVERY' fulfillment

The Issue: We generate hosted payment links via the Checkout API (POST /v2/online-checkout/payment-links) with an inline order object.

  1. Pickup Orders:
    • When the order has fulfillments: [{ type: "PICKUP", pickup_details: { ... } }], the payment on checkout.square.site succeeds cleanly (Apple Pay, Google Pay, and Card all complete and capture).
  2. Delivery Orders:
    • When the order has fulfillments: [{ type: "DELIVERY", delivery_details: { ... } }], the customer enters their card, receives a 3D Secure bank challenge, and approves it in their banking app (bank allows the transaction).
    • However, immediately after bank 3DS approval, the checkout page fails to complete the payment and voids/aborts the authorization.

Questions for Square:

  1. Does Square Online Checkout (checkout.square.site) require a connected On-Demand Delivery courier integration (e.g. Uber/Stuart) to process payments for orders with type: "DELIVERY"?
  2. If a restaurant manages its own local delivery, what is the recommended way to model delivery orders in the Orders / Checkout API so payments capture without courier dispatch errors?