> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dintero.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fast-track returning customer payments

> Speed up checkout for returning customers with stored payment details, pre-filled addresses, and one-click payments using Dintero Express.

Give returning customers a faster checkout by pre-filling their payment details and shipping address. Express checkout reduces friction, skips address forms, and lets customers complete purchases in just a few clicks, improving conversion rates for repeat buyers.

Express checkout works on top of the standard Checkout session. You add an `express` configuration to the session, and Dintero handles pre-filling details and collecting the shipping address from the payment provider (e.g., Vipps). Your server receives a callback with the address so you can return available shipping options dynamically.

```mermaid theme={null}
sequenceDiagram
    participant Customer as Returning customer
    participant Checkout as Checkout page
    participant Merchant as Your server
    participant API as Dintero API

    Merchant->>API: Create express session
    API->>Checkout: Display express checkout
    Customer->>Checkout: Confirm pre-filled details
    Checkout->>Merchant: Shipping address callback
    Merchant-->>Checkout: Available shipping options
    Customer->>Checkout: Select shipping & pay
    Checkout->>API: Payment completed
    API->>Merchant: Callback with transaction + shipping details
```

## Integration steps

<Steps>
  <Step title="Add the express configuration">
    Create a checkout session and include an `express` section in the request body. This tells Dintero to show the streamlined express flow instead of the standard checkout.

    The `express` object configures which customer details to collect (shipping address, email, phone) and where to send the shipping address callback.

    See [Express checkout](/docs/checkout/express) for the full `express` object reference.
  </Step>

  <Step title="Implement the shipping address callback">
    When the customer confirms their address, Dintero sends a callback to your server with the address details. Your server responds with the available shipping options: name, price, and delivery estimate for each.

    This lets you calculate shipping dynamically based on the customer's actual address, rather than showing a fixed list.

    See [Shipping address callback](/docs/checkout/shipping-address-callback) for the request/response format.
  </Step>

  <Step title="Return shipping options">
    Your callback response includes an array of shipping options. Each option has an ID, display name, amount, and optional delivery details. The customer picks one in the checkout.

    You can also support [multiple shipments](/docs/checkout/shipping-options-multiple-shipments) if an order ships from multiple locations.

    See [Shipping options](/docs/checkout/shipping-options) for the full payload structure.
  </Step>

  <Step title="Handle discount codes (optional)">
    If your store supports discount codes, you can enable a discount code field in the express checkout. When the customer enters a code, Dintero sends it to your server for validation. You respond with the updated order total.

    See [Express discount codes](/docs/checkout/checkout-express-discount-code) for the configuration.
  </Step>

  <Step title="Handle the payment result">
    The callback includes the transaction status, the selected shipping option, and the customer's shipping address. Use this to fulfill the order and ship to the confirmed address.

    Capture, void, and refund through the [Transactions API](/docs/checkout/transaction-management).
  </Step>
</Steps>

## What's next

<CardGroup cols={2}>
  <Card title="Express checkout" icon="https://mintcdn.com/dintero-c3a7bfec/WW-UMjl-QNnroAqd/mintlify-docs/assets/icons/lightning-bolt.svg?fit=max&auto=format&n=WW-UMjl-QNnroAqd&q=85&s=d9cea7efda6954627ca39b6e7c74a3cf" href="/docs/checkout/express" width="20" height="20" data-path="mintlify-docs/assets/icons/lightning-bolt.svg">
    Full reference for the express session configuration.
  </Card>

  <Card title="Shipping options" icon="https://mintcdn.com/dintero-c3a7bfec/kqE6jEgPSu_iF1M_/mintlify-docs/assets/icons/truck.svg?fit=max&auto=format&n=kqE6jEgPSu_iF1M_&q=85&s=c70f752c0bb947a39ad5c94fac01c350" href="/docs/checkout/shipping-options" width="20" height="20" data-path="mintlify-docs/assets/icons/truck.svg">
    Return dynamic shipping options via callback.
  </Card>

  <Card title="Shipping address callback" icon="https://mintcdn.com/dintero-c3a7bfec/WW-UMjl-QNnroAqd/mintlify-docs/assets/icons/location-marker.svg?fit=max&auto=format&n=WW-UMjl-QNnroAqd&q=85&s=ba974aa35abe58f3f0281fa522d74d64" href="/docs/checkout/shipping-address-callback" width="20" height="20" data-path="mintlify-docs/assets/icons/location-marker.svg">
    Receive and validate the customer's address during checkout.
  </Card>

  <Card title="Update a session" icon="https://mintcdn.com/dintero-c3a7bfec/WW-UMjl-QNnroAqd/mintlify-docs/assets/icons/pencil.svg?fit=max&auto=format&n=WW-UMjl-QNnroAqd&q=85&s=de05f4e97171b76f3da3aacdb430b2a0" href="/docs/checkout/updating-session" width="20" height="20" data-path="mintlify-docs/assets/icons/pencil.svg">
    Modify the session after creation (e.g., after applying a discount).
  </Card>
</CardGroup>
