---
title: "Update Invoice fields"
method: PATCH
path: "/v3/invoices/{id}"
tags: ["Invoice"]
---

# Update Invoice fields

`PATCH /v3/invoices/{id}`

## Request

- Base URL: `https://confirmo.net/api`
- URL: `https://confirmo.net/api/v3/invoices/{id}`
- Auth: HTTP bearer

Partially updates an existing Invoice by modifying only the fields provided in the request body.

## Path parameters

- `id` string, required

## Request body

- InvoicePatchTo
  - `reference` string, required: Any data the merchant wishes to store in the invoice. It might be, for instance, a JSON or any other string identifying the Invoice in the merchant's system.

## Response `200`

Invoice successfully updated

- InvoiceTo
  - `activeSince` integer: The time of the Invoice's transition to active state as a Unix timestamp. May be null, if the Invoice has never been in active state.
  - `address` string: The address where a customer is supposed to send crypto to.
  - `buttonInvoiceId` string: The ID of a Payment Button, if this Invoice has been created by using one.
  - `closedAt` integer: The time when the Invoice was closed as a Unix timestamp.
  - `confirmations` integer: The number of confirmations.
  - `confirmingSince` integer: The time of the Invoice's transition to confirming state as a Unix timestamp. May be null, if the Invoice has never been in the confirming state.
  - `createdAt` integer: The time when the Invoice was created as a Unix timestamp.
  - `cryptoTransactions` CryptoTransactionTo[]: The transactions associated with this Invoice.
    - `amount` number
    - `confirmations` integer
    - `createdAt` integer
    - `sourceAddresses` string[]: A list of all addresses from which the transaction amount was received. For UTXO-based blockchains (e.g., Bitcoin), there may be multiple source addresses involved in a single transaction.
    - `txid` string
    - `updatedAt` integer
  - `cryptoUri` string: Standardized URI for a crypto payment. It is also used in a payment QR code. Contains at least protocol, address and remaining amount to be paid.
  - `customerAmount` MoneyCustomerAmount: This is the Invoice amount in cryptocurrency which needs to be paid by a customer.
    - `amount` number: Amount in FIAT has 2 decimal digits and amount in Crypto has 8 decimal digits.
    - `currency` 'BNB' | 'BTC' | 'ETH' | 'EURC' | 'LTC' | 'POL' | 'SOL' | 'TRX' | 'USAT' | 'USDC' | 'USDG' | 'USDT' | 'XPL' | 'AED' | 'ALL' | 'AMD' | 'ARS' | 'AUD' | 'AZN' | 'BDT' | 'BGN' | 'BHD' | 'BND' | 'BOB' | 'BRL' | 'BYN' | 'CAD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DKK' | 'DOP' | 'DZD' | 'EUR' | 'FKP' | 'GBP' | 'GEL' | 'GTQ' | 'HKD' | 'HRK' | 'HUF' | 'CHF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KGS' | 'KHR' | 'KWD' | 'KZT' | 'LTL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MNT' | 'MOP' | 'MUR' | 'MXN' | 'MYR' | 'NGN' | 'NIO' | 'NOK' | 'NZD' | 'PEN' | 'PHP' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'UAH' | 'USD' | 'UYU' | 'VND' | 'XCD': Depending on context, this can be FIAT or crypto (EUR, USD, BTC...). Please see context above.
  - `customerEmail` string: The email address to which email notifications for the customer will be sent.
  - `emailInvoiceId` string: The ID of an Email Invoice, if this Invoice has been created by using one.
  - `errorSince` integer: The time of the Invoice's transition to error state as a Unix timestamp. May be null, if the Invoice has never been in error state.
  - `expiredSince` integer: The time of the Invoice's transition to expired state as a Unix timestamp. May be null, if the Invoice has never been in expired state.
  - `fee` number: The fee of the Invoice.
  - `flags` Flags
    - `notRefundableCause` 'REFUND_AMOUNT_ZERO' | 'REFUND_AMOUNT_TOO_LOW' | 'REFUND_AMOUNT_NOT_ENOUGH_TO_COVER_NETWORK_FEE' | 'WRONG_INVOICE_STATE' | 'NOT_ALLOWED' | 'LEGACY_INVOICE_WITHOUT_NETWORK_FEE'
    - `overpaymentResolvable` boolean: True if an overpayment on the Invoice is resolvable, false otherwise.
    - `refundable` boolean: True if the Invoice is refundable, false otherwise.
    - `resolvableStatus` 'YES' | 'WAITING' | 'NO'
    - `resolvableSubStatus` 'OVERPAID_NOT_ENOUGH_TO_COVER_NETWORK_FEE' | 'UNDERPAID_NOT_ENOUGH_TO_COVER_NETWORK_FEE' | 'PAYMENT_DETECTED_AFTER_EXPIRATION'
  - `id` string: The Invoice ID.
  - `layer2Attributes` LightningLayerAttributesTo
    - `protocolName` 'LIGHTNING' | 'POLYGON' | 'ARBITRUM' | 'OPTIMISM': Layer 2 protocol name.
    - `bolt` string
    - `lnurl` string
    - `paymentHash` string
  - `merchantAmount` MoneyMerchantAmount: The original Invoice amount and original Invoice currency.
    - `amount` number: Amount in FIAT has 2 decimal digits and amount in Crypto has 8 decimal digits.
    - `currency` 'BNB' | 'BTC' | 'ETH' | 'EURC' | 'LTC' | 'POL' | 'SOL' | 'TRX' | 'USAT' | 'USDC' | 'USDG' | 'USDT' | 'XPL' | 'AED' | 'ALL' | 'AMD' | 'ARS' | 'AUD' | 'AZN' | 'BDT' | 'BGN' | 'BHD' | 'BND' | 'BOB' | 'BRL' | 'BYN' | 'CAD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DKK' | 'DOP' | 'DZD' | 'EUR' | 'FKP' | 'GBP' | 'GEL' | 'GTQ' | 'HKD' | 'HRK' | 'HUF' | 'CHF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KGS' | 'KHR' | 'KWD' | 'KZT' | 'LTL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MNT' | 'MOP' | 'MUR' | 'MXN' | 'MYR' | 'NGN' | 'NIO' | 'NOK' | 'NZD' | 'PEN' | 'PHP' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'UAH' | 'USD' | 'UYU' | 'VND' | 'XCD': Depending on context, this can be FIAT or crypto (EUR, USD, BTC...). Please see context above.
  - `networkFee` number: The network fee.
  - `notifyEmail` string: The e-mail address where the e-mail notifications will be sent. The maximum length is 512 characters.
  - `notifyUrl` string: The URL where webhooks will be POSTed.
  - `overUnderPaidAmount` number: The difference of requested and received amount. Can be positive or negative.
  - `paid` MoneyPaidTo
    - `amount` number: The received amount in the requested crypto currency.
    - `amountUnconfirmed` number: Unconfirmed amount.
    - `currency` 'BNB' | 'BTC' | 'ETH' | 'EURC' | 'LTC' | 'POL' | 'SOL' | 'TRX' | 'USAT' | 'USDC' | 'USDG' | 'USDT' | 'XPL' | 'AED' | 'ALL' | 'AMD' | 'ARS' | 'AUD' | 'AZN' | 'BDT' | 'BGN' | 'BHD' | 'BND' | 'BOB' | 'BRL' | 'BYN' | 'CAD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DKK' | 'DOP' | 'DZD' | 'EUR' | 'FKP' | 'GBP' | 'GEL' | 'GTQ' | 'HKD' | 'HRK' | 'HUF' | 'CHF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KGS' | 'KHR' | 'KWD' | 'KZT' | 'LTL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MNT' | 'MOP' | 'MUR' | 'MXN' | 'MYR' | 'NGN' | 'NIO' | 'NOK' | 'NZD' | 'PEN' | 'PHP' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'UAH' | 'USD' | 'UYU' | 'VND' | 'XCD': The requested crypto currency.
    - `diff` number: The difference of requested and received amount.
  - `paidSince` integer: The time when the Invoice acquired the paid status as a Unix timestamp. May be null, if the Invoice has never been in paid state.
  - `paymentMethodId` string: Identifies the blockchain network and the asset the payment is made in. Null until the payment method is fixed — either by the end customer on the checkout page, or up-front by the merchant through the creation request's 'paymentMethodId'. Values are the 'id' values returned by GET /api/v3/crypto-payment-methods.
  - `pendingVerificationSince` integer: The time of the Invoice's transition to pending verification state as a Unix timestamp. May be null, if the Invoice has never been in pending verification state.
  - `preparedSince` integer: The time of the Invoice's transition to prepared state as a Unix timestamp.
  - `product` ProductTo
    - `description` string: The description of the product.
    - `name` string: The name of the product. The maximum length is 512 characters.
  - `rate` RateTo
    - `currencyFrom` 'BNB' | 'BTC' | 'ETH' | 'EURC' | 'LTC' | 'POL' | 'SOL' | 'TRX' | 'USAT' | 'USDC' | 'USDG' | 'USDT' | 'XPL' | 'AED' | 'ALL' | 'AMD' | 'ARS' | 'AUD' | 'AZN' | 'BDT' | 'BGN' | 'BHD' | 'BND' | 'BOB' | 'BRL' | 'BYN' | 'CAD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DKK' | 'DOP' | 'DZD' | 'EUR' | 'FKP' | 'GBP' | 'GEL' | 'GTQ' | 'HKD' | 'HRK' | 'HUF' | 'CHF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KGS' | 'KHR' | 'KWD' | 'KZT' | 'LTL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MNT' | 'MOP' | 'MUR' | 'MXN' | 'MYR' | 'NGN' | 'NIO' | 'NOK' | 'NZD' | 'PEN' | 'PHP' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'UAH' | 'USD' | 'UYU' | 'VND' | 'XCD': Currency from. The original FIAT currency.
    - `currencyTo` 'BNB' | 'BTC' | 'ETH' | 'EURC' | 'LTC' | 'POL' | 'SOL' | 'TRX' | 'USAT' | 'USDC' | 'USDG' | 'USDT' | 'XPL' | 'AED' | 'ALL' | 'AMD' | 'ARS' | 'AUD' | 'AZN' | 'BDT' | 'BGN' | 'BHD' | 'BND' | 'BOB' | 'BRL' | 'BYN' | 'CAD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DKK' | 'DOP' | 'DZD' | 'EUR' | 'FKP' | 'GBP' | 'GEL' | 'GTQ' | 'HKD' | 'HRK' | 'HUF' | 'CHF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KGS' | 'KHR' | 'KWD' | 'KZT' | 'LTL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MNT' | 'MOP' | 'MUR' | 'MXN' | 'MYR' | 'NGN' | 'NIO' | 'NOK' | 'NZD' | 'PEN' | 'PHP' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'UAH' | 'USD' | 'UYU' | 'VND' | 'XCD': Currency to. The requested crypto currency.
    - `value` number: The conversion rate from currencyFrom to currencyTo.
  - `reference` string: Any data the merchant wishes to store in the Invoice. It might be, for instance, a JSON or any other string identifying the invoice in the merchant's system. The maximum length is 512 characters.
  - `refundLink` string, uri: The URL of the refund link.
  - `refunds` RefundTo[]: Refunds for this Invoice.
    - `address` string: The crypto address, the refund was sent to.
    - `amount` number: The refunded amount.
    - `createdAt` integer
    - `id` string: The refund ID.
    - `notifyEmail` string: The notification e-mail.
    - `paymentStatus` 'overpaid' | 'underpaid' | 'paid-after-limit' | 'pending-verification'
    - `refundStatus` 'pending' | 'sending' | 'refunded' | 'error' | 'cancelled' | 'not_possible': The status of the refund.
    - `refundedAt` integer
    - `sendMode` 'MANUAL' | 'AUTOMATIC'
    - `substatus` string
    - `txid` string: The TXID of a refund transaction.
    - `updatedAt` integer
  - `requiredConfirmations` integer: The number of required confirmations for the Invoice to gain the paid status.
  - `requiredConfirmationsToRefund` integer: The number of required confirmations for refunds to be allowed.
  - `resolvedByEmail` string: Email (or other identifier) of the one responsible for manual resolve.
  - `resolvedManually` boolean, required: Flag saying whether invoice was resolved manually (refund, take)
  - `returnUrl` string: The URL where the customer will be redirected after the payment. The maximum length is 512 characters.
  - `settlement` SettlementInfoTo
    - `amount` number: The amount of the Settlement.
    - `createdAt` integer: A Unix timestamp specifying creation of the settlement.
    - `currency` 'BTC' | 'CZK' | 'ETH' | 'EUR' | 'GBP' | 'HUF' | 'LTC' | 'PLN' | 'POL' | 'SOL' | 'TRX' | 'USD' | 'USDC' | 'USDT': The currency in which the Settlement will be paid out. Merchant gets paid in this currency, when it is assigned to an invoice as settlement currency
    - `fee` number: The fee of the Settlement.
    - `id` string: The Settlement ID.
  - `settlementAmount` MoneySettlementAmount: Amount and currency that is credited to the merchant's balance (present only for status Paid). The currency can be one of the following: BTC, CZK, EUR, GBP, HUF, PLN, USD, USDC, USDT.
    - `amount` number: Amount in FIAT has 2 decimal digits and amount in Crypto has 8 decimal digits.
    - `currency` 'BNB' | 'BTC' | 'ETH' | 'EURC' | 'LTC' | 'POL' | 'SOL' | 'TRX' | 'USAT' | 'USDC' | 'USDG' | 'USDT' | 'XPL' | 'AED' | 'ALL' | 'AMD' | 'ARS' | 'AUD' | 'AZN' | 'BDT' | 'BGN' | 'BHD' | 'BND' | 'BOB' | 'BRL' | 'BYN' | 'CAD' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DKK' | 'DOP' | 'DZD' | 'EUR' | 'FKP' | 'GBP' | 'GEL' | 'GTQ' | 'HKD' | 'HRK' | 'HUF' | 'CHF' | 'IDR' | 'ILS' | 'INR' | 'ISK' | 'JMD' | 'JPY' | 'KGS' | 'KHR' | 'KWD' | 'KZT' | 'LTL' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MNT' | 'MOP' | 'MUR' | 'MXN' | 'MYR' | 'NGN' | 'NIO' | 'NOK' | 'NZD' | 'PEN' | 'PHP' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'SEK' | 'SGD' | 'THB' | 'TRY' | 'TWD' | 'UAH' | 'USD' | 'UYU' | 'VND' | 'XCD': Depending on context, this can be FIAT or crypto (EUR, USD, BTC...). Please see context above.
  - `status` 'prepared' | 'pending_verification' | 'active' | 'confirming' | 'paid' | 'expired' | 'error' | 'blocked': Please note that invoices that transition from status 'prepared' directly to 'expired' (i.e. those which were never activated) become subject of data purging after a retention period (e.g. a year). An invoice in status 'paid' can still move to 'blocked' when a later compliance check flags its payment.
  - `subscriptionId` string: Deprecated. Always null; subscriptions are now standalone feature
  - `takeInfo` TakeInfoTo
    - `customerCurrency` string: The currency in which the customer is supposed to pay.
    - `expiration` integer: The timestamp when take offer expires.
    - `expirationDuration` integer: The number of seconds before take offer expires.
    - `merchantCurrency` string
    - `offeredAmountInMerchantCurrency` number
    - `offeredPrice` number: The new price of crypto currency.
    - `offeredSettlementAmount` number: The new amount to be settled (after take).
    - `originalSettlementAmount` number: The original amount to be settled (before take)
    - `refundAmount` number: Used for internal purposes
    - `settlementCurrency` string: The currency of the Settlement Method.
    - `taken` boolean: True if the Invoice was taken.
    - `takenAt` integer: The take action timestamp as Unix timestamp.
  - `timeoutTime` integer: The time of the Invoice's expiration as a Unix timestamp.
  - `unhandledExceptions` boolean: It is true if the payment gateway owes some funds to the customer or the customer has not paid the whole customer amount.
  - `url` string, uri: The URL of the Invoice's public view for the customers.
  - `version` integer: Monotonic version of the invoice; the client discards any WebSocket payload whose version is not greater than the last applied one (ordering guard).

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `409`: Conflict

---

[API](https://skmtc.dev/confirmo/apis/confirmo-api.md) - [All operations](https://skmtc.dev/confirmo/apis/confirmo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/confirmo/apis/confirmo-api/revisions/09bef7db3dd1?raw)
