{
  "product": "Specification (reference)",
  "title": "Checkout",
  "summary": "Turn a cart into a paid order without losing the customer or double-charging them.",
  "category": "commerce",
  "entries": [
    {
      "path": [
        "AI",
        "Flow",
        "Guest checkout without forced account creation"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Flow",
        "Steps resumable after abandonment"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Address",
        "Validation and normalisation"
      ],
      "value": "",
      "status": "yes",
      "note": "with a manual override"
    },
    {
      "path": [
        "AI",
        "Address",
        "Separate billing and shipping addresses"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Shipping",
        "Methods with price and delivery estimate"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Payment",
        "Card, wallet and redirect-based methods"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Payment",
        "Card data never touches the server"
      ],
      "value": "",
      "status": "yes",
      "note": "tokenised by the processor"
    },
    {
      "path": [
        "AI",
        "Payment",
        "3-D Secure and other step-up challenges handled"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Payment",
        "Authorise then capture, or capture directly — stated"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Integrity",
        "Idempotency key prevents double charging"
      ],
      "value": "",
      "status": "yes",
      "note": "the double-submit case"
    },
    {
      "path": [
        "AI",
        "Integrity",
        "Prices re-validated server-side before charging"
      ],
      "value": "",
      "status": "yes",
      "note": "never trust the client total"
    },
    {
      "path": [
        "AI",
        "Integrity",
        "Order created only after payment confirmation"
      ],
      "value": "",
      "status": "yes",
      "note": "or explicitly reconciled"
    },
    {
      "path": [
        "AI",
        "Failure",
        "Declines explained without leaking card detail"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Failure",
        "Retry does not create a second order"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "After",
        "Confirmation page and email with order number"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "After",
        "Webhook or callback reconciles asynchronous payments"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Form",
        "One column, minimal fields, correct input types"
      ],
      "value": "",
      "status": "yes",
      "note": "numeric keypad for card"
    },
    {
      "path": [
        "UI",
        "Form",
        "Inline validation with recoverable errors"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Trust",
        "Total visible at every step"
      ],
      "value": "",
      "status": "yes",
      "note": "no surprise at the last click"
    }
  ]
}
