---
title: "Generate a checkout URL"
method: POST
path: "/billing/checkout-url"
tags: ["Billing & Subscriptions"]
---

# Generate a checkout URL

`POST /billing/checkout-url`

## Request

- Base URL: `https://getdynamicqr.com/api/v1`
- URL: `https://getdynamicqr.com/api/v1/billing/checkout-url`
- Auth: API key in header `X-Client-ID` and HTTP bearer

Creates a Paddle transaction for the chosen price ID and returns a hosted
checkout URL. Open this URL in the system browser — Paddle handles payment.
On completion the Paddle webhook updates the user's plan automatically.

## Request body

- object
  - `price_id` string, required: Paddle price ID (e.g. pri_01abc...).

## Response `200`

OK

## Other responses

- `401`: No credentials, or credentials that are not valid.
- `403`: The account is inactive, or the plan does not carry this feature.
- `429`: Rate limit exceeded. See `Retry-After`.
- `503`: Unavailable

---

[API](https://skmtc.dev/getdynamicqr/apis/d-qr-rest-api.md) · [All operations](https://skmtc.dev/getdynamicqr/apis/d-qr-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getdynamicqr/apis/d-qr-rest-api/revisions/4467aeca30ce?raw)
