# Create invoice

Create a payment invoice for an address in the current project and a specific token.
If no invoice is accepting payments at that address, create a new invoice and return `201 Created`.
If an invoice is already accepting payments with the same token and amount, return that
existing invoice with `200 OK`; its expiry and metadata remain unchanged, even if the
request supplies different values. A different token or amount returns `409 Conflict`.
Check the returned invoice ID, expiry and metadata before associating it with an order.
After cancellation closes an invoice's payment window, the address can be used for a
new invoice, subject to the usual creation requirements. The new invoice has its own
payment window; payments from the cancelled invoice are not transferred to it.
Use a new `Idempotency-Key` for the new invoice; retrying the original creation request
with its original key follows the mutation idempotency policy.

Endpoint: POST /invoices
Version: 2.0.0
Security: Auth

## Security:

  - `Auth` (unknown)
    apiKey in header X-Api-Key scopes: api:invoice:write

## Header parameters:

  - `Idempotency-Key` (string, required)
    Case-sensitive opaque key for one mutation intent. Send exactly one header occurrence containing 1 to 128 visible ASCII bytes (0x21..0x7e). Commas are literal data; do not trim, lowercase or require UUID syntax. Reuse the same key for retries, with current authorization checked on every attempt. Repeated header occurrences are rejected.

## Request fields (application/json):

  - `address` (string, required)
    Blockchain address in its native format.
**Format by network**:
- **EVM**: `0x` + 40 hex chars (normalized to [EIP-55](https://eips.ethereum.org/EIPS/eip-55) checksum on import)
- **Bitcoin**: P2PKH (1...), P2SH (3...), P2WPKH (bc1...)
- **Solana**: Base58, 32-44 chars
- **Tron**: Base58, starts with `T`
    Example: 0x8521E8b15eCEF4D4269Fded3E6694225E096959E

  - `asset_gid` (string, required)
    Global asset identifier in [CAIP-19](https://chainagnostic.org/CAIPs/caip-19) format.
Format: `{chain_gid}/{asset_path}`
**Examples**:
- `eip155:1/slip44:60`: ETH on Ethereum
- `eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7`: USDT on Ethereum
- `eip155:56/erc20:0x55d398326f99059fF775485246999027B3197955`: USDT on BNB Smart Chain
- `tron:728126428/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`: USDT on Tron
- `eip155:137/erc20:0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`: USDC on Polygon
    Example: eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7

  - `amount` (string, required)
    Amount in the smallest asset unit.

  - `expires_at` (string, required)
    Point in time in RFC 3339 format.
    Example: 2024-01-15T10:30:00Z

  - `metadata` (object)
    Optional key-value pairs for storing additional information about the invoice. The combined UTF-8 size of the decoded keys and values must not exceed 4096 bytes.
    Example: {"order_id":"1234"}

## Request examples:

  - `USDT invoice on BNB Smart Chain` (unknown)

## Response 200:

  - `200` (unknown)
    Invoice details.

## Response 200 fields (application/json):

  - `item` (object, required)
    Payment invoice. A request for crypto payment to a specific address for a specific token amount.
The invoice UUID is the access token: anyone with the UUID can view the invoice.
The payment window starts at `created_at` and ends at `expires_at`, or at an earlier
transition to `confirmed` or `cancelled`. Only payments included in a block within this
window count; its end is exclusive. Cancelled invoices do not accept new payment
links, including payments discovered later with a block time within the former window.
Existing payment links are retained.
    Example: {"id":"550e8400-e29b-41d4-a716-446655440000","address":"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18","asset_gid":"eip155:56/erc20:0x55d398326f99059fF775485246999027B3197955","amount":"42500000","receiv…

  - `item.id` (string, required)
    Unique identifier (UUID).
    Example: 550e8400-e29b-41d4-a716-446655440000

  - `item.address` (string, required)
    Blockchain address in the native format of its chain, as carried by transaction data.
The bound is wider than `AddressValue` and there is no character restriction, because a
transaction payload can name an address the project never imported.
    Example: 0x742d35cc6634c0532925a3b8d1e1d78d8E15e5c4

  - `item.asset_gid` (string, required)
    Global asset identifier in [CAIP-19](https://chainagnostic.org/CAIPs/caip-19) format.
Format: `{chain_gid}/{asset_path}`
**Examples**:
- `eip155:1/slip44:60`: ETH on Ethereum
- `eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7`: USDT on Ethereum
- `eip155:56/erc20:0x55d398326f99059fF775485246999027B3197955`: USDT on BNB Smart Chain
- `tron:728126428/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`: USDT on Tron
- `eip155:137/erc20:0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`: USDC on Polygon
    Example: eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7

  - `item.amount` (string, required)
    Amount in the smallest asset unit.

  - `item.status` (string, required)
    Lifecycle status of the invoice.
    Enum: "open", "processing", "confirmed", "cancelled", "expired"

  - `item.expires_at` (string, required)
    Point in time in RFC 3339 format.
    Example: 2024-01-15T10:30:00Z

  - `item.metadata` (object, required)
    Optional key-value pairs for storing additional information about the invoice. The combined UTF-8 size of the decoded keys and values must not exceed 4096 bytes.
    Example: {"order_id":"1234","customer":"john@example.com"}

  - `item.created_at` (string, required)
    Timestamp when the resource was created.
    Example: 2024-01-15T10:30:00Z

  - `item.updated_at` (string, required)
    Timestamp when the resource was last updated.
    Example: 2024-01-15T10:30:00Z

  - `item.status_logs` (array, required)
    Chronological log of invoice status transitions with optional comments.

  - `item.status_logs.comment` (any, required)
    Optional comment explaining the change (e.g. cancellation reason).
    Example: Cancelled by merchant

  - `item.transactions` (array, required)
    Transactions associated with the invoice, active and retained.

  - `item.transactions.chain_gid` (string, required)
    Blockchain identifier in [CAIP-2](https://chainagnostic.org/CAIPs/caip-2) format.
Format: `{namespace}:{reference}`
- **namespace**: Ecosystem identifier (3-8 chars, lowercase)
- **reference**: Blockchain identifier within namespace (1-32 chars)

**Examples**:
- `eip155:1`: Ethereum mainnet
- `eip155:56`: BNB Smart Chain mainnet
- `eip155:137`: Polygon mainnet
- `bip122:000000000019d6689c085ae165831e93`: Bitcoin mainnet
- `tron:728126428`: Tron mainnet
    Example: eip155:1

  - `item.transactions.txid` (string, required)
    Native transaction id of the chain (hash for EVM and Tron, txid for Bitcoin).
    Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  - `item.transactions.is_active` (boolean, required)
    Whether the observed transaction is still current on its chain; false after a reorg or
a replaced Bitcoin candidate. It says nothing about payment by itself: a transaction that
is only in the mempool is active but adds nothing to `received_amount`, and an active
transaction may carry deposits in other tokens only.

  - `item.transactions.deposits` (array, required)
    Net positive contribution per asset at the invoice address within this transaction.
Empty while no eligible contribution remains.

  - `item.transactions.deposits.is_matched` (boolean, required)
    Whether this deposit's token matches the invoice's expected token.
    Example: true

  - `references` (object, required)
    Related objects included in the response, keyed by ID.
    Example: {"tokens":{},"blockchains":{},"transactions":{}}

  - `references.tokens` (object, required)
    Map of tokens indexed by their CAIP-19 Asset GID.

  - `references.blockchains` (object, required)
    Map of blockchains indexed by their CAIP-2 Chain GID.

  - `references.transactions` (object, required)
    Summaries of the active linked transactions, keyed by chain GID and then by txid. An
inactive link has no entry here.

## Response 201:

  - `201` (unknown)
    Invoice details.

## Response 201 fields (application/json):

  - `item` (object, required)
    Payment invoice. A request for crypto payment to a specific address for a specific token amount.
The invoice UUID is the access token: anyone with the UUID can view the invoice.
The payment window starts at `created_at` and ends at `expires_at`, or at an earlier
transition to `confirmed` or `cancelled`. Only payments included in a block within this
window count; its end is exclusive. Cancelled invoices do not accept new payment
links, including payments discovered later with a block time within the former window.
Existing payment links are retained.
    Example: {"id":"550e8400-e29b-41d4-a716-446655440000","address":"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18","asset_gid":"eip155:56/erc20:0x55d398326f99059fF775485246999027B3197955","amount":"42500000","receiv…

  - `item.id` (string, required)
    Unique identifier (UUID).
    Example: 550e8400-e29b-41d4-a716-446655440000

  - `item.address` (string, required)
    Blockchain address in the native format of its chain, as carried by transaction data.
The bound is wider than `AddressValue` and there is no character restriction, because a
transaction payload can name an address the project never imported.
    Example: 0x742d35cc6634c0532925a3b8d1e1d78d8E15e5c4

  - `item.asset_gid` (string, required)
    Global asset identifier in [CAIP-19](https://chainagnostic.org/CAIPs/caip-19) format.
Format: `{chain_gid}/{asset_path}`
**Examples**:
- `eip155:1/slip44:60`: ETH on Ethereum
- `eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7`: USDT on Ethereum
- `eip155:56/erc20:0x55d398326f99059fF775485246999027B3197955`: USDT on BNB Smart Chain
- `tron:728126428/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`: USDT on Tron
- `eip155:137/erc20:0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`: USDC on Polygon
    Example: eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7

  - `item.amount` (string, required)
    Amount in the smallest asset unit.

  - `item.status` (string, required)
    Lifecycle status of the invoice.
    Enum: "open", "processing", "confirmed", "cancelled", "expired"

  - `item.expires_at` (string, required)
    Point in time in RFC 3339 format.
    Example: 2024-01-15T10:30:00Z

  - `item.metadata` (object, required)
    Optional key-value pairs for storing additional information about the invoice. The combined UTF-8 size of the decoded keys and values must not exceed 4096 bytes.
    Example: {"order_id":"1234","customer":"john@example.com"}

  - `item.created_at` (string, required)
    Timestamp when the resource was created.
    Example: 2024-01-15T10:30:00Z

  - `item.updated_at` (string, required)
    Timestamp when the resource was last updated.
    Example: 2024-01-15T10:30:00Z

  - `item.status_logs` (array, required)
    Chronological log of invoice status transitions with optional comments.

  - `item.status_logs.comment` (any, required)
    Optional comment explaining the change (e.g. cancellation reason).
    Example: Cancelled by merchant

  - `item.transactions` (array, required)
    Transactions associated with the invoice, active and retained.

  - `item.transactions.chain_gid` (string, required)
    Blockchain identifier in [CAIP-2](https://chainagnostic.org/CAIPs/caip-2) format.
Format: `{namespace}:{reference}`
- **namespace**: Ecosystem identifier (3-8 chars, lowercase)
- **reference**: Blockchain identifier within namespace (1-32 chars)

**Examples**:
- `eip155:1`: Ethereum mainnet
- `eip155:56`: BNB Smart Chain mainnet
- `eip155:137`: Polygon mainnet
- `bip122:000000000019d6689c085ae165831e93`: Bitcoin mainnet
- `tron:728126428`: Tron mainnet
    Example: eip155:1

  - `item.transactions.txid` (string, required)
    Native transaction id of the chain (hash for EVM and Tron, txid for Bitcoin).
    Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  - `item.transactions.is_active` (boolean, required)
    Whether the observed transaction is still current on its chain; false after a reorg or
a replaced Bitcoin candidate. It says nothing about payment by itself: a transaction that
is only in the mempool is active but adds nothing to `received_amount`, and an active
transaction may carry deposits in other tokens only.

  - `item.transactions.deposits` (array, required)
    Net positive contribution per asset at the invoice address within this transaction.
Empty while no eligible contribution remains.

  - `item.transactions.deposits.is_matched` (boolean, required)
    Whether this deposit's token matches the invoice's expected token.
    Example: true

  - `references` (object, required)
    Related objects included in the response, keyed by ID.
    Example: {"tokens":{},"blockchains":{},"transactions":{}}

  - `references.tokens` (object, required)
    Map of tokens indexed by their CAIP-19 Asset GID.

  - `references.blockchains` (object, required)
    Map of blockchains indexed by their CAIP-2 Chain GID.

  - `references.transactions` (object, required)
    Summaries of the active linked transactions, keyed by chain GID and then by txid. An
inactive link has no entry here.

## Response 400:

  - `400` (unknown)
    Bad request (e.g., missing or invalid fields). Invalid text may be reported as address.label_invalid, address.meta_invalid, public_key.label_invalid, invoice.comment_invalid, invoice.metadata_invalid.

## Response 400 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

  - `fields` (array)
    List of invalid fields in the request.

  - `fields.name` (string, required)
    The name of the invalid field.
    Example: max_len

  - `fields.reason` (string, required)
    Why this field is invalid.
    Example: 32

## Response 401:

  - `401` (unknown)
    Missing or invalid authentication credentials.

## Response 401 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 403:

  - `403` (unknown)
    Insufficient permissions.

## Response 403 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 404:

  - `404` (unknown)
    Requested resource does not exist.

## Response 404 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 409:

  - `409` (unknown)
    Request conflicts with the current resource state.

## Response 409 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 422:

  - `422` (unknown)
    Request preconditions were not met.

## Response 422 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

  - `fields` (array)
    List of fields that failed precondition validation.

  - `fields.name` (string, required)
    The name of the field that failed validation.
    Example: status

  - `fields.reason` (string, required)
    Why the precondition failed for this field.
    Example: Cannot transition from archived to active state

## Response 429:

  - `429` (unknown)
    Resource quota exceeded. The response includes the effective limit for this scope. The applicable code and limit depend on the operation; examples illustrate different limits.

## Response 429 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable code identifying the exhausted resource quota. The code is always
supplied by the service; clients branch on it instead of the human-readable detail.
    Example: address.quota_exceeded

  - `max` (integer, required)
    Effective maximum for this resource in the caller's scope. Zero prohibits new admissions;
it does not disable resources already held. This is the configured limit, not current usage.
    Example: 100

## Response 502:

  - `502` (unknown)
    Invalid upstream response or integration failure.

## Response 502 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 503:

  - `503` (unknown)
    The operation is temporarily unavailable. Please try again later.

## Response 503 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 504:

  - `504` (unknown)
    Shared request deadline exhausted.

## Response 504 fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response default:

  - `default` (unknown)
    Unexpected error.

## Response default fields (application/problem+json):

  - `type` (string, required)
    A URI that identifies the error type.
    Example: https://docs.vilna.io/apis/errors#internal-error

  - `title` (string, required)
    A short summary of the error type.
Use `detail` for information specific to this occurrence.
    Example: Bad Request

  - `status` (integer, required)
    The HTTP status code for this error.
Matches the status code of the HTTP response.
    Example: 400

  - `detail` (string)
    A human-readable explanation of what went wrong in this specific case.
May be localized.
    Example: The address is already assigned to another invoice

  - `instance` (string)
    A URI that identifies this specific error occurrence.
Include this value when contacting support.
    Example: /traces/0123456789abcdef0123456789abcdef

  - `code` (string, required)
    Stable machine-readable error code for programmatic error handling. Unlike the HTTP `status` or free-form `detail`, this code is guaranteed not to change between versions for a given error condition, so it is safe to branch on in client code. Defaults to `unspecified` when the server has not assigned a specific code.
    Example: blockchain.not_found

## Response 200 examples:

  - `Just created, awaiting payment` (unknown)

  - `Paid in full and confirmed on-chain` (unknown)

## Response 201 examples:

  - `Just created, awaiting payment` (unknown)

  - `Paid in full and confirmed on-chain` (unknown)

## Response 400 examples:

  - `The request body contains malformed JSON` (unknown)

## Response 401 examples:

  - `The API service refused authentication` (unknown)

## Response 403 examples:

  - `The API key lacks the required permission` (unknown)

## Response 404 examples:

  - `The address does not exist in this project` (unknown)

  - `The invoice does not exist in this project` (unknown)

## Response 409 examples:

  - `The address already has an active invoice` (unknown)

  - `The address cannot be deleted while in use` (unknown)

  - `A v1-created subscription rejects trigger, filter or noise changes` (unknown)

  - `The notification already has a manual attempt queued or in flight` (unknown)

  - `Retention has cleared the content, so there is nothing to resend` (unknown)

  - `The notification is a channel test` (unknown)

## Response 422 examples:

  - `A confirmed invoice cannot be cancelled` (unknown)

## Response 429 examples:

  - `The project has reached its address quota` (unknown)

  - `A zero effective limit prohibits new resources` (unknown)

## Response 503 examples:

  - `The operation cannot be completed at present` (unknown)

