---
title: "Create a new payment"
method: POST
path: "/v1/payments"
tags: ["Payments"]
---

# Create a new payment

`POST /v1/payments`

Creates a new payment with the provided payment details.

## Headers

- `Api-Key` string, required
- `Merchant-Id` string, required
- `WCP-Version` string, nullable
- `Sdk-Name` string, nullable
- `Sdk-Version` string, nullable
- `Sdk-Platform` string, nullable
- `Idempotency-Key` string, nullable

## Request body

- CreatePayment
  - `amount` AmountParameter, required
    - `unit` string, required — Currency unit, prefixed with either "iso4217/" or "caip19/"
    - `value` string, required — Amount value, in the currency unit's minor units
  - `expiresAt` integer, nullable
  - `referenceId` string, required

## Response `201`

Payment created successfully

- CreatePaymentResponse
  - `expiresAt` integer, required — Payment expiration timestamp, in seconds since epoch
  - `gatewayUrl` string, required — Gateway URL to redirect the user to for payment
  - `isFinal` boolean, required — True if the payment is in a final state and no longer requires polling
  - `paymentId` string, required — Payment ID
  - `pollInMs` integer, nullable — Time to poll for payment status, in milliseconds. Not present if the payment is in a final state.
  - `status` 'requires_action' | 'processing' | 'succeeded' | 'failed' | 'expired' | 'cancelled', required — Payment status representing the lifecycle of a payment. Payments progress through these states from creation to terminal status. Some states are specific to the payment source (pull vs push).

## Other responses

- `400` — Invalid request
- `401` — Invalid API key
- `500` — Internal error

---

[API](https://skmtc.net/walletconnect/apis/walletconnect-pay-api.md) · [All operations](https://skmtc.net/walletconnect/apis/walletconnect-pay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/walletconnect/walletconnect-pay-api/versions/8e5708191dde/schema)
