# Get notification

Get one notification and its original content. The content remains readable after the
transaction has changed. Delivery attempts are paginated separately under `/logs`.

Endpoint: GET /notifications/{notification_id}
Version: 2.0.0
Security: Auth

## Security:

  - `Auth` (unknown)
    apiKey in header X-Api-Key scopes: api:channel:read

## Path parameters:

  - `notification_id` (string, required)
    Unique identifier (UUID) of the notification.

## Response 200:

  - `200` (unknown)
    One notification with the content frozen for it.

## Response 200 fields (application/json):

  - `item` (object, required)
    One notification with the content that was frozen for it.
A test notification (`is_test` true) carries no `subscription_id`, no `chain_gid` and no
`txid`: its synthetic transaction exists only inside the payload. A test also makes at most
one attempt, so its `manual_attempt_count` and `automatic_attempt_count` are 0, its
`attempt_count` is at most 1, and its `resend_status` and `next_attempt_at` are null. An
ordinary notification always carries `subscription_id`, `chain_gid` and `txid`.
`last_attempt_at` and `last_attempt_status` are read from the same attempt and are null
together, before anything has been attempted.
`payload_version` and `event_name` are frozen with the content and survive its cleanup.
Version `v1` goes with `transaction.detected` or `transaction.confirmed`, version `v2` with
`transaction.notification`, and a null version means Telegram content. A null `event_name`
means nothing has been frozen yet, so `payload_version` and `payload` are null as well.
`payload_version` also pins the frozen `payload`'s `kind`: `v1` with `webhook_v1`, `v2` with
`webhook_v2`, and a null `payload_version` with `telegram`.
    Example: {"id":"550e8400-e29b-41d4-a716-446655440020","channel_id":"550e8400-e29b-41d4-a716-446655440001","subscription_id":"550e8400-e29b-41d4-a716-446655440002","is_test":false,"chain_gid":"eip155:1","txid":…

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

  - `item.subscription_id` (any, required)
    Subscription that selected the transaction, or null for a channel test.

  - `item.is_test` (boolean, required)
    Whether this is a channel diagnostic rather than a real transaction notification.

  - `item.chain_gid` (string)
    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.txid` (string)
    Native transaction id of the chain (hash for EVM and Tron, txid for Bitcoin).
    Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  - `item.status` (string, required)
    State of one notification. It describes delivery bookkeeping, not blockchain confirmation and
not the state of the channel. A canceled or failed notification may still have been seen by the
receiver, so there is no single success flag.
    Enum: "waiting", "scheduled", "sending", "delivered", "failed", "canceled", "unknown"

  - `item.reason` (any, required)
    Why the notification reached its status, or null while there is nothing to explain.

  - `item.attempt_count` (integer, required)
    Count of authorized attempts. Authorization is not proof of remote receipt.
    Example: 2

  - `item.automatic_attempt_count` (integer, required)
    Authorized automatic attempts, which is attempt_count minus manual_attempt_count.

  - `item.resend_status` (any, required)
    Progress of a manual resend, or null when none is running.

  - `item.last_attempt_at` (any, required)
    When the most recent attempt was authorized, or null before any attempt.

  - `item.last_attempt_status` (any, required)
    Status of that same most recent attempt, or null before any attempt.

  - `item.next_attempt_at` (any, required)
    When the next automatic attempt is due, or null without automatic eligibility.

  - `item.payload` (any, required)
    Frozen content of the notification, or null before preparation and after cleanup.

  - `item.payload.kind` (string, required)
    Payload kind, the discriminator of `NotificationPayload`.
    Enum: "webhook_v1", "webhook_v2", "telegram"

  - `item.payload.body` (object, required)
    Webhook payload for channels with `payload_version` set to `v1`. Retries send the original
payload unchanged, even if the transaction has changed since the first delivery.
    Example: {"event_id":"550e8400-e29b-41d4-a716-446655440020","item":{"chain_gid":"eip155:1","hash":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","block_number":18500000,"is_success":true,…

  - `item.payload.body.event_id` (string, required)
    Identifier in the v1 webhook body.
    Example: 550e8400-e29b-41d4-a716-446655440020

  - `item.payload.body.item` (object, required)
    Transaction carried by the v1 webhook body, with its decoded events and activity.
    Example: {"chain_gid":"eip155:1","hash":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","block_number":18500000,"is_success":true,"confirmed_at":"2024-01-15T10:33:00Z","created_at":"2024-0…

  - `item.payload.body.item.chain_gid` (string, required)
    Blockchain identifier in the v1 webhook body. The bounds are frozen with that body and are
narrower than the CAIP-2 identifier the rest of the API returns.
    Example: eip155:1

  - `item.payload.body.item.hash` (string, required)
    Transaction hash in the v1 webhook body, with no length bound.
    Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  - `item.payload.body.item.block_number` (integer, required)
    Block height in the v1 webhook body.
    Example: 18500000

  - `item.payload.body.item.is_success` (boolean, required)
    Whether the transaction executed successfully.

  - `item.payload.body.item.confirmed_at` (any, required)
    Time the transaction reached the required confirmations, or null while it has not.

  - `item.payload.body.item.created_at` (string, required)
    Timestamp in the v1 webhook body.
    Example: 2024-01-15T10:30:00Z

  - `item.payload.body.item.events` (array, required)
    Decoded events of the transaction.

  - `item.payload.body.item.events.sequence` (integer, required)
    Position of the event within the transaction.

  - `item.payload.body.item.events.kind` (string, required)
    Kind of decoded event in the v1 webhook body.
    Enum: "transfer", "utxo_transfer", "fee", "approval", "call", "contract_create"

  - `item.payload.body.item.events.data` (any, required)
    Event body, selected by `kind`.

  - `item.payload.body.item.events.data.kind` (string, required)
    Event kind discriminator.
    Enum: "transfer", "utxo_transfer", "fee", "approval", "call", "contract_create"

  - `item.payload.body.item.events.data.asset_gid` (string, required)
    Global asset identifier in the v1 webhook body. The bounds are frozen with that body and are
narrower than the CAIP-19 identifier the rest of the API returns.
    Example: eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7

  - `item.payload.body.item.events.data.from` (string, required)
    Blockchain address in its native format, in the v1 webhook body.
    Example: 0x742d35cc6634c0532925a3b8d1e1d78d8E15e5c4

  - `item.payload.body.item.events.data.amount` (object, required)
    Asset amount in the v1 webhook body, in base units plus a human-readable form.
    Example: {"base":"1000000","formatted":"1.0"}

  - `item.payload.body.item.events.data.token_id` (string)
    Token id of the moved item, for non-fungible assets.

  - `item.payload.body.item.events.data.source` (string, required)
    Where the v1 webhook body saw the transfer.
    Enum: "native", "contract", "internal"

  - `item.payload.body.item.events.data.inputs` (array, required)
    Spent outputs.

  - `item.payload.body.item.events.data.outputs` (array, required)
    Created outputs.

  - `item.payload.body.item.events.data.token_id` (string)
    Token id the allowance covers, for non-fungible assets.

  - `item.payload.body.item.activity` (array, required)
    Balance changes of tracked addresses.

  - `item.payload.body.item.activity.direction` (string, required)
    Direction of the balance change relative to the tracked address, in the v1 webhook body.
    Enum: "in", "out"

  - `item.payload.body.item.activity.delta` (object, required)
    Signed balance change in the v1 webhook body.
    Example: {"base":"-1000000","formatted":"-1.0"}

  - `item.payload.body.item.activity.delta.base` (string, required)
    Signed balance change in the smallest asset unit in the v1 webhook body.
    Example: -1000000

  - `item.payload.body.item.activity.delta.formatted` (string)
    Human-readable signed balance change in the v1 webhook body, with no pattern.
    Example: -1.0

  - `item.payload.body.references` (object, required)
    Objects the v1 webhook body's transaction refers to, keyed by identifier.
    Example: {"tokens":{"eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7":{"gid":"eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7","decimals":6,"name":"Tether USD","symbol":"USDT"}},"blockchain…

  - `item.payload.body.references.tokens` (object)
    Tokens indexed by asset identifier.

  - `item.payload.body.references.blockchains` (object)
    Blockchains indexed by chain identifier.

  - `item.payload.body.references.addresses` (object)
    Tracked addresses mapped to their label, which is null when the project gave none.

  - `item.payload.body.is_test_message` (boolean, required)
    Whether the body was produced by a channel test rather than by a real transaction.

  - `item.payload.body` (object, required)
    The v2 webhook body, sent by channels whose `payload_version` is `v2`. It carries the same
public transaction and reference objects as `GET /transactions/{chain_gid}/{txid}`. Test and
real deliveries use the same envelope, and a retry resends the exact stored bytes.
`event_id` is the notification's own identity and is never the nil UUID. `subscription_id` is
null exactly when `is_test` is true, and is the subscription's identity otherwise.
    Example: {"version":"v2","event_id":"550e8400-e29b-41d4-a716-446655440020","subscription_id":"550e8400-e29b-41d4-a716-446655440002","is_test":false,"item":{"chain_gid":"eip155:1","txid":"0x1234567890abcdef1234…

  - `item.payload.body.version` (string, required)
    Frozen webhook body version, covered by the raw-body signature. It is independent of the
HTTP API version and of the transaction version.
    Enum: "v2"

  - `item.payload.body.subscription_id` (any, required)
    Subscription that selected the transaction, or null for a channel test.

  - `item.payload.body.is_test` (boolean, required)
    Whether the body was produced by a channel test rather than by a real transaction.

  - `item.payload.body.item` (object, required)
    Transaction with the decoded events of its chain family and the balance changes of tracked
addresses. `details.family` equals the chain family of `chain_gid`.
    Example: {"chain_gid":"eip155:1","txid":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","created_at":"2024-01-15T10:30:00Z","activity":[{"chain_gid":"eip155:1","txid":"0x1234567890abcdef12…

  - `item.payload.body.item.activity` (array, required)
    Balance changes for tracked addresses.

  - `item.payload.body.item.activity.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.payload.body.item.activity.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.payload.body.item.activity.direction` (string, required)
    Direction of the asset movement relative to the tracked address.
    Enum: "in", "out"

  - `item.payload.body.item.activity.delta` (object, required)
    Signed balance change in base units, plus a human-readable value
when we know the token's decimals.

  - `item.payload.body.item.activity.delta.base` (string, required)
    Signed amount in the smallest asset unit.

  - `item.payload.body.item.activity.delta.formatted` (string)
    Human-readable signed amount.

  - `item.payload.body.item.activity.entry_kind` (string, required)
    Movement classification. Known values include `native_transfer`, `token_transfer`,
`network_fee`, `stake`, `stake_withdrawal`, `utxo_spend`, and `utxo_create`. Additional
values may be returned; display unfamiliar values as generic movements.

  - `item.payload.body.item.details` (any, required)
    Transaction details for the chain family identified by `family`. This value matches the
chain family of the transaction's `chain_gid`.

  - `item.payload.body.item.details.family` (string, required)
    Chain family of the transaction, the discriminator of `TransactionDetails`.
    Enum: "evm", "tron", "bitcoin"

  - `item.payload.body.item.details.events` (array, required)
    Decoded events of the transaction, ordered by `event_index`.

  - `item.payload.body.item.details.is_success` (boolean, required)
    Whether the transaction executed without reverting.

  - `item.payload.body.item.details.fee` (object)
    Asset amount in base units, plus a human-readable value when we know
the token's decimals.
    Example: {"base":"1000000000","formatted":"1.0"}

  - `item.payload.body.item.details.fee.base` (string, required)
    Amount in the smallest asset unit.

  - `item.payload.body.item.details.fee.formatted` (string)
    Human-readable amount.

  - `item.payload.body.item.details.block` (object, required)
    Block that carries the transaction.
    Example: {"block_hash":"0x9f1c2a3b4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f8","block_height":18500000}

  - `item.payload.body.item.details.block.block_hash` (string, required)
    Native block hash in the format of the selected family; not a transaction identifier.
    Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  - `item.payload.body.item.details.block.block_height` (integer, required)
    Zero-based index within its container, bounded to the signed 64-bit range.
Unique only within the transaction version that names it; consumers preserve the integer exactly.
    Example: 0

  - `item.payload.body.item.details.gas_used` (integer, required)
    Actual transaction receipt gasUsed; not a fee, gas limit or cumulative block gas.

  - `item.payload.body.item.details.fee` (object)
    Actual total TRX commission in SUN and its identified fee payer. Resolve the native asset
from the chain catalog; resources are separate.
    Example: {"payer_address":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","amount":{"base":"1100000","formatted":"1.1"}}

  - `item.payload.body.item.details.resources` (object)
    Transaction resource usage. All counters, including zero, are present. Caller and creator
Energy quota usage together must not exceed `energy_used`. These counters do not represent
monetary debits or remaining resource balances.
    Example: {"energy_used":130285,"caller_energy_quota_used":0,"creator_energy_quota_used":130285,"bandwidth_quota_used":345}

  - `item.payload.body.item.details.resources.energy_used` (integer, required)
    Total receipt energy_usage_total, including applicable penalty.

  - `item.payload.body.item.details.resources.caller_energy_quota_used` (integer, required)
    Caller Energy quota consumed (receipt energy_usage), excluding Energy paid with TRX.

  - `item.payload.body.item.details.resources.creator_energy_quota_used` (integer, required)
    Contract creator Energy quota contribution (receipt origin_energy_usage).

  - `item.payload.body.item.details.resources.bandwidth_quota_used` (integer, required)
    Charged Bandwidth quota (receipt net_usage), not total transaction bytes or proof of its owner.

  - `item.payload.body.item.details.events` (array, required)
    The decoded event of the transaction, when the version carries one.

  - `item.payload.body.references` (object, required)
    Related objects included in the response, keyed by ID.
    Example: {"tokens":{"eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7":{"gid":"eip155:1/erc20:0xdAC17F958D2ee523a2206206994597C13D831ec7","symbol":"USDT","name":"Tether USD","decimals":6}},"blockchain…

  - `item.payload.body.references.tokens` (object)
    Map of tokens indexed by their CAIP-19 Asset GID.

  - `item.payload.body.references.blockchains` (object)
    Map of blockchains indexed by their CAIP-2 Chain GID.

  - `item.payload.body.references.addresses` (object)
    Map of tracked addresses to labels. Presence in this map means the address is tracked.

  - `item.payload.body` (object, required)
    Frozen Telegram message text and formatting mode. No recipient, bot token,
thread id or transport header is kept here. The text is untrusted display content and has to be
escaped or safely rendered.
    Example: {"text":"<b>Transaction confirmed</b>\nUSDT 1.0 to 0x742d…e5c4","parse_mode":"HTML"}

  - `item.payload.body.text` (string, required)
    Rendered message text prepared for delivery.

  - `item.payload.body.parse_mode` (string, required)
    Telegram formatting mode of the text, always HTML.
    Enum: "HTML"

  - `item.payload_version` (any, required)
    Webhook body version actually frozen, or null before preparation and for Telegram. It is
never substituted from the channel's live configuration.

  - `item.event_name` (any, required)
    Logical event name frozen with the content, or null before preparation.

## 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 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 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 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 503 examples:

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

