---
title: "Report the payment transaction"
method: POST
path: "/invoices/{id}/payments"
---

# Report the payment transaction

`POST /invoices/{id}/payments`

## Request

- Base URL: `https://swap.vurto.cc/v1`
- URL: `https://swap.vurto.cc/v1/invoices/{id}/payments`
- Auth: none required

The server reads the transaction on-chain and measures what reached the recipient in the invoice token. The payer must be the signer and the transaction newer than the invoice. Only a confirmed payment reserves a hash: a hash pays each recipient once (tx_already_used for a second invoice of the same recipient and token); different recipients in one transaction are a batch payout.

## Path parameters

- `id` string, required

## Request body

- object
  - `payer` string, required
  - `txHash` string, required: EVM hash or Solana signature.
  - `method` 'transfer' | 'swap'

## Response `200`

Already recorded, re-checked

- object
  - `invoice` object
    - `id` string
    - `label` string: INV-XXXX-XXXX, what people copy.
    - `family` 'evm' | 'svm'
    - `chainId` union
      - integer
      - string
    - `recipient` string
    - `token` string
    - `tokenSymbol` string
    - `tokenDecimals` integer
    - `amount` string: Requested amount, raw units.
    - `memo` string, nullable
    - `status` 'open' | 'paid'
    - `paidTx` string, nullable
    - `received` string: Raw amount measured on-chain reaching the recipient, over confirmed payments.
    - `url` string: Share this: https://swap.vurto.cc/i/<id>. Link previews show the QR.
    - `qr` string: PNG of the QR for url.
    - `payments` object[]

## Other responses

- `201`: Recorded
- `400`: invalid_tx_hash
- `404`: invoice_not_found
- `409`: tx_already_used

---

[API](https://skmtc.dev/vurto/apis/vurto-swap-public-api.md) · [All operations](https://skmtc.dev/vurto/apis/vurto-swap-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vurto/apis/vurto-swap-public-api/revisions/423be3a193b5?raw)
