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

# Quickstart

> Choose Hosted Payment Page or Direct API and create a Sandbox payment in about five minutes

Both payment paths use the same authentication, Payment resource, final
statuses, and error format. Choose the path that matches how you collect card
details.

## Before you start

* A Flowlix Sandbox secret key.
* `curl` or another server-side HTTP client.
* A server endpoint that can receive the customer at `return_url`.
* Five minutes for one test payment.

Configure the shared environment variables once in
[Authentication](/guides/authentication), then continue below.

## Choose your path

<CardGroup cols={2}>
  <Card title="Hosted Payment Page Quickstart" icon="globe" href="/guides/hosted-payment-page">
    Choose HPP when you want Flowlix to collect card details on a hosted page.
    Your server creates the Payment, redirects the customer, and retrieves the
    final result.
  </Card>

  <Card title="Direct API Quickstart" icon="server" href="/guides/direct-api">
    Choose Direct API only when your checkout and backend are approved to
    handle raw card data. Your server submits the card and handles any 3D
    Secure redirect.
  </Card>
</CardGroup>

| Decision                               | Hosted Payment Page                                      | Direct API                               |
| -------------------------------------- | -------------------------------------------------------- | ---------------------------------------- |
| Who renders card entry?                | Flowlix                                                  | Your checkout                            |
| Does raw card data enter your systems? | No                                                       | Yes                                      |
| Customer redirect                      | To the hosted page when the Payment is `REQUIRES_ACTION` | Only when the Payment requires 3D Secure |
| Final source of truth                  | Retrieved Payment                                        | Retrieved Payment                        |

## What both paths finish with

Each quickstart ends by retrieving `GET /v1/payments/{id}` until the Payment
reaches a terminal status:

* `SUCCEEDED` — fulfil the order.
* `FAILED` — inspect `failure_code` and create a new Payment for another
  attempt when appropriate.
* `EXPIRED` — the customer did not complete the required browser action;
  create a new Payment if they try again.

Do not fulfil from the browser return page alone. It is a navigation signal,
not proof of payment.

## After your first payment

<CardGroup cols={2}>
  <Card title="Refunds" icon="rotate-ccw" href="/guides/refunds">
    Return the full or partial refundable amount and track the Refund through
    its parent Payment.
  </Card>

  <Card title="Payouts" icon="send" href="/guides/payouts">
    Submit a card payout, retrieve it by ID, and reconcile payout lists.
  </Card>

  <Card title="Payment lifecycle" icon="list-tree" href="/guides/payment-lifecycle">
    Handle every non-terminal and terminal Payment status.
  </Card>

  <Card title="Webhooks" icon="bell" href="/guides/webhooks">
    Receive and verify Payment and Refund events on your server.
  </Card>

  <Card title="API errors" icon="triangle-alert" href="/guides/errors">
    Branch safely on HTTP status, `error.code`, and `Request-Id`.
  </Card>
</CardGroup>
