---
title: "Create checkout session"
method: POST
path: "/checkouts"
tags: ["Checkouts"]
---

# Create checkout session

`POST /checkouts`

Creates a hosted checkout for AR (transfer + DNI match), BR (PIX QR), CL (provider iframe), or BO (QR payment).
Returns `checkoutUrl` for the payer and optional provider fields (QR, iframe URL).

## Request body

- CreateCheckoutRequest
  - `country` 'AR' | 'BR' | 'CL' | 'BO', required
  - `amount` string, required — Decimal amount as string
  - `accountId` string, uuid
  - `successUrl` string, uri, required
  - `cancelUrl` string, uri
  - `webhookUrl` string, uri
  - `expiresInSeconds` integer
  - `idempotencyKey` string
  - `locale` 'es' | 'en'
  - `metadata` object
  - `payer` object — BR requires name, document, and email; BO requires name, document, and email
    - `name` string — Payer full name (required for BR and BO)
    - `document` string — AR 8-digit DNI; BR payer CPF/CNPJ; BO payer CI/document
    - `email` string, email
  - `paymentMethodId` string, uuid — Required for CL
  - `customer` object — Required for CL (see ClInboundTransactionRequest customer fields)

## Response `201`

Created

- CreateCheckoutResponse
  - `id` string, uuid
  - `publicToken` string
  - `checkoutUrl` string, uri
  - `status` string
  - `expiresAt` string, date-time
  - `accountDisplay` object — Present for AR (CVU, alias, holder)
  - `qrCode` string
  - `pixCopiaECola` string
  - `checkoutUrlProvider` string, uri

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `403` — Forbidden — account is not operative (`Bloqueada` or `Cerrada`) or caller lacks access
- `500` — Internal Server Error

---

[API](https://skmtc.net/hg/apis/hg-cash-api.md) · [All operations](https://skmtc.net/hg/apis/hg-cash-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hg/hg-cash-api/revisions/0d337f48a0b9/schema)
