---
title: "Let the named customer pay you"
method: POST
path: "/api/v1/deposits"
tags: ["Reseller API: act as your customers"]
---

# Let the named customer pay you

`POST /api/v1/deposits`

## Request

- Base URL: `https://hproxy.com`
- URL: `https://hproxy.com/api/v1/deposits`
- Auth: API key in header `X-API-Key`

With `X-Reseller-Customer-Id`, this creates an invoice on **your own** payment gateway (connected under Payments in your business dashboard) and returns its pay page: crypto through Heleket or NOWPayments (`method: "crypto"`), cards through Stripe Checkout or Payoneer Checkout (`method: "card"`); one live gateway per rail. The page shows your merchant name, the money goes to your account, and when it arrives we credit the customer's store credit automatically: the exact amount, the whole amount when they overpay, and what actually arrived when a crypto invoice closes short. Amounts are whole cents; sub-floor amounts are raised to the method floor ($3 crypto, $10 card) and one invoice is at most $5,000. Send an `Idempotency-Key` and a retried request returns the same open invoice. No gateway for that method ⇒ `403 deposits_not_available`.

**An order can pay for itself.** [`POST /orders`](/docs/proxy-api/orders) for a named customer with `method: "crypto"` or `"card"` and short credit still answers `402 customer_credit_insufficient`, but with `payUrl`, `depositId`, `chargeCents` (the shortfall raised to the rail's minimum) and `shortfallCents` added. Send the customer to `payUrl`: when the money lands, the credit is granted and the order is placed automatically under the same `Idempotency-Key`, a Telegram customer is told in the store's bot, and [`GET /deposits/{id}`](#partner-deposit-get) shows `for_order: true`. Without a gateway for that rail the 402 carries no pay page and the customer needs credit first.

## Request body

- object
  - `amount_cents` integer, required: Whole cents at your prices.
  - `method` string: "crypto" or "card". Default "card".
  - `return_url` string: Where the customer lands after paying (https). Default: your website, else your Telegram storefront.

## Response `200`

Success

- object

## Other responses

- `400`: Invalid input. The body names the field and the accepted set.
- `401`: Missing or invalid API key.
- `429`: Rate limited. Retry after the delay in the response.

---

[API](https://skmtc.dev/hproxy/apis/hproxy-api.md) · [All operations](https://skmtc.dev/hproxy/apis/hproxy-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hproxy/apis/hproxy-api/revisions/9f6898fe76e2?raw)
