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

# Make your first transaction

> An end-to-end path from sandbox credentials to an executed payment with status tracking.

This guide walks the full flow in the sandbox: authenticate, set up the context,
quote, initiate an intent, execute a payment, and track it to completion.

<Info>
  This walkthrough is a scaffold. The structure and endpoints are correct; the
  worked request and response examples are still being finalised and are marked
  with `TODO`.
</Info>

<Steps>
  <Step title="Prerequisites" icon="list-checks">
    Before you start, make sure you have:

    * Sandbox application credentials (client ID, client secret, application
      secret). See [API keys](/authentication/api-keys).
    * A server-side environment to hold secrets and make requests.
    * Optional: a public `https` endpoint if you want to receive
      [webhook](/webhooks/overview) updates during the walkthrough.
  </Step>

  <Step title="Obtain sandbox credentials" icon="key-round">
    Confirm your credentials work against the sandbox base URL
    `https://api.dev.zeam.paytec.io/v1`. If you do not have credentials, ask your
    association administrator to register an application.
  </Step>

  <Step title="Configure authentication" icon="shield-check">
    Issue an access token with [`POST /v1/auth/token`](/authentication/tokens),
    then send it with your application secret on every call.

    ```bash cURL theme={null}
    curl -sS https://api.dev.zeam.paytec.io/v1/auth/token \
      -H "Content-Type: application/json" \
      -d '{ "clientId": "…", "clientSecret": "$ZEAM_CLIENT_SECRET" }'
    ```
  </Step>

  <Step title="Select the wallet and beneficiary context" icon="wallet">
    List your wallets and beneficiaries, or create what you need.

    * `GET /v1/wallets`, choose a source wallet (or `POST /v1/wallets` to create
      one).
    * `GET /v1/beneficiaries`, choose a destination (or `POST /v1/beneficiaries`
      to add one).
  </Step>

  <Step title="Discover a connector and request a quote" icon="calculator">
    Discover the connector for your corridor, then request a quote.

    * `GET /v1/connectors?country=…&method=…&direction=…`
    * `POST /v1/quotes` with the chosen `connectorId`, `amount`, and `direction`.
  </Step>

  <Step title="Initiate a transaction intent" icon="git-commit-horizontal">
    Create the intent that describes the transaction with
    `POST /v1/intents`. Keep the returned `intentId`.
  </Step>

  <Step title="Execute the payment" icon="arrow-left-right">
    Execute the intent as a payment with `POST /v1/payments`. The gateway accepts
    it for processing and returns a status.
  </Step>

  <Step title="Track the transaction status" icon="activity">
    Poll the intent state with `GET /v1/intents/{intentId}` until it reaches a
    terminal state.
  </Step>

  <Step title="Receive webhook updates" icon="webhook">
    Instead of polling, subscribe to payment-intent events so Zeam notifies your
    endpoint as the state changes. Register your endpoint in the business portal.
    See [Webhooks](/webhooks/overview).
  </Step>

  <Step title="Prepare for production" icon="rocket">
    When the flow works end to end in the sandbox, review
    [Production promotion](/access/production-promotion). Switch the base URL and
    production credentials through configuration, not code.
  </Step>
</Steps>

## Related

<CardGroup cols={2}>
  <Card title="API concepts" icon="book-open" href="/concepts">
    The intent-then-payment model in context.
  </Card>

  <Card title="API reference" icon="terminal" href="/api-reference/introduction">
    Exact request and response shapes for each step.
  </Card>
</CardGroup>
