> ## 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.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.dintero.com/feedback

```json
{
  "path": "/docs/checkout/checkout-client",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Create a Checkout API client

> Step-by-step guide for creating a Dintero Checkout API client in Backoffice and saving the client_id and client_secret credentials safely.

To start using the Dintero Checkout on your website, you need to create an API Client through the **Dintero Backoffice**.

### Step by step-guide

First, log into **[Backoffice](https://backoffice.dintero.com)**, then follow this interactive slide-show:

1. Click on **settings**.
2. Under API & Integrations click on **API clients**.
3. Click on **Create new API client**.
4. Click on **Checkout client**.
5. Write the **URL** of your website.
6. Click on **Create new API client**.
7. Remember to **Save the credentials**, the **Client Secret** can not be shown again.
8. Click **OK**.
9. The Client is now **Created**.

<div style={{ position: 'relative', paddingBottom: 'calc(57.7714012434242% + 41px)', height: 0, width: '100%' }}>
  <iframe src="https://demo.arcade.software/ZYZn1cDpEwxbB007nUGZ?embed" title="Dintero Backoffice" frameBorder="0" loading="lazy" webkitAllowFullScreen mozAllowFullScreen allowFullScreen allow="clipboard-write" style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', colorScheme: 'dark' }} />
</div>

#### Using Our Plugin

If you’re using our plugin, most of the technical details below are handled automatically. You can skip the following sections unless you’re customizing the integration or coding it yourself.

### For Developers

If you’re handling the integration directly, some of the following steps and details are crucial for a successful setup:

Check out how to [create a session] for the next steps in your integration.

[create a session]: /docs/checkout/create-session

#### More info

* Integrate these API endpoints
  * Authenticate [`POST /v1/accounts/{oid}/auth/token`](/api.html#operation/aid_auths_oauth_token_post)
  * Create session [`POST /v1/sessions-profile`](/payments-api.html#operation/checkout_session_profile_post)
  * Capture
    transaction [`POST /v1/transactions/{id}/capture`](/payments-api.html#operation/transactions_id_capture_post)
  * Void
    transaction [`POST /v1/transactions/{id}/void`](/payments-api.html#operation/transactions_id_void_post)
  * Refund
    transaction [`POST /v1/transactions/{id}/refund`](/payments-api.html#operation/transactions_id_refund_post)
* Handle redirect and callback
  * Callback,
    see `url.callback_url` [`POST /v1/sessions-profile`](/payments-api.html#operation/checkout_session_profile_post)
  * Redirect,
    see `url.return_url` [`POST /v1/sessions-profile`](/payments-api.html#operation/checkout_session_profile_post)
  * Redirect is not guaranteed, so it's important to handle both.
  * The order of callbacks and redirects are not guaranteed, so handle the possibility of both coming first.
  * Open for traffic from callback [Validating callbacks](/docs/checkout/validating-callbacks)
* Important details when [creating session](/payments-api.html#tag/session)
  * Prefer checkout profiles for configuring sessions
  * Each item in `order.items` should contain an unique `line_id`.
  * Each item in `order.items` should contain the `vat` percentage.
  * `amount = amount_without_vat + vat_amount`.
* Capturing
  * Make sure to include all the captured items in the call
    to [`/capture`](/payments-api.html#operation/transactions_id_capture_post), also the shipping option.
  * When capturing Collector payments, capture full item lines.
* Refunding
  * Include the details of the items being refunded.
* If using Checkout Express
  * Handle shipping address callback for updating shipping options when shipping address changes (optional)
  * Handle discount code callback to validate discount codes (optional)
* Other
  * Integrate [optional headers] for better tracking

[optional headers]: /docs/checkout/dintero-http-headers
