Cancel invoice

POST /api/v2/billing/invoices/{id}/actions/cancel

Cancel an invoice only when the invoice actions.canCancel.allowed gate is true.

Get {id} from GET /api/v2/billing/invoices data[].id, GET /api/v2/billing/invoices/{id} id, or order/domain renewal invoice references.

Important domain-renewal flow: if a renewal invoice has an orderId and actions.canCancel.code is cancel_related_order_first, call POST /api/v2/orders/{orderId}/actions/cancel; do not call this invoice endpoint until the order is cancelled.

PAYG VPS usage invoices use invoice_consumed_vps_usage_not_cancellable because already-consumed usage cannot be cancelled here.

This endpoint is mainly for add-funds invoices and domain-renewal invoices whose related order is already cancelled.

Billing & Orders Invoices

Authentication

Required API scope: write:billing

Authenticate with an API key in the Authorization: Bearer <token> header.

Context

Path Parameters

id string required Example: inv_01hxa3b4c5d6e7f8g9h0j1k2m3

Public invoice ID from invoice list/detail, order invoice references, or domain renewal invoice references. Do not invent this value; use the exact ID returned by the referenced API response.

Headers

Authorization Bearer <token>
Accept application/json

Responses

200 Refreshed invoice after cancellation.
id string · Example: inv_01hxa3b4c5d6e7f8g9h0j1k2m3
orderId string · Example: ord_01hxa3b4c5d6e7f8g9h0j1k2m3

Public order ID when the invoice is attached to an order. Domain renewal invoices with an uncancelled order must cancel this order first.

number string · Example: 202600001

Customer-facing invoice number.

status string · enum · Example: unpaid
draft
unpaid
partially_paid
paid
cancelled
refunded
dates object
dates.issuedAt string · Example: 2026-04-27T12:00:00.000Z
dates.dueAt string · Example: 2026-05-11T23:59:59.000Z
dates.paidAt string · Example: 2026-04-27T12:10:00.000Z
totals object
totals.currencyCode string required · Example: SEK
totals.subtotal number required · Example: 127.2
totals.taxAmount number required · Example: 31.8
totals.taxRateDecimal number · Example: 0.25
totals.creditApplied number required · Example: 0
totals.total number required · Example: 159
totals.amountPaid number required · Example: 0
totals.amountRefunded number required · Example: 0

Total refunded amount recorded against the invoice. Zero when no refund has been recorded.

totals.outstanding number required · Example: 159
lineItemCount integer · Example: 1
lineItems array<object>
payments array<object>
payments[].kind string · nullable · enum · Example: payment

Optional row kind. account_credit_added marks an overpayment that was added to the customer's account credit instead of counted as an additional invoice payment.

payment
account_credit_added
payments[].method string · nullable · enum required · Example: card

Canonical payment method enum. Display labels and upstream gateway names never appear here; use methodLabel for text.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paypal
invoice
other
payments[].methodLabel string · nullable required · Example: Card

Human-readable payment method label for display.

payments[].amount number required · Example: 98.75
payments[].currencyCode string required · Example: SEK

ISO-4217 currency for amount.

note string · Example: Thank you for your order.
actions object
actions.canPay object required
actions.canPay.allowed boolean required · Example: true
actions.canPay.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canPay.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canGeneratePaymentLink object required
actions.canGeneratePaymentLink.allowed boolean required · Example: true
actions.canGeneratePaymentLink.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canGeneratePaymentLink.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canBulkPay object required
actions.canBulkPay.allowed boolean required · Example: true
actions.canBulkPay.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canBulkPay.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canCancel object required
actions.canCancel.allowed boolean required · Example: true
actions.canCancel.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canCancel.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canEmail object required
actions.canEmail.allowed boolean required · Example: true
actions.canEmail.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canEmail.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canDownload object required
actions.canDownload.allowed boolean required · Example: true
actions.canDownload.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canDownload.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

paymentMethods object

Per-method payment availability. Keys include card, accountCredit, swish, bankgiro, sepa, alipay, and crypto. Check these server-owned gates before starting a payment flow.

paymentMethods.card object required
paymentMethods.card.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.card.label string required · Example: Card
paymentMethods.card.available boolean required · Example: true
paymentMethods.card.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.card.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.card.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.card.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.card.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.card.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.card.requirements.accountCountryCode string · Example: SE
paymentMethods.card.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.card.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.card.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.card.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.card.requirements.availableBalance object
paymentMethods.card.requirements.availableBalance.amount number required · Example: 100
paymentMethods.card.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.card.requirements.minimumAmount object
paymentMethods.card.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.card.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.card.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.card.requirements.maximumAmount object
paymentMethods.card.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.card.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.card.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.accountCredit object required
paymentMethods.accountCredit.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.accountCredit.label string required · Example: Card
paymentMethods.accountCredit.available boolean required · Example: true
paymentMethods.accountCredit.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.accountCredit.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.accountCredit.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.accountCredit.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.accountCredit.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.accountCredit.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.accountCredit.requirements.accountCountryCode string · Example: SE
paymentMethods.accountCredit.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.accountCredit.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.accountCredit.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.accountCredit.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.accountCredit.requirements.availableBalance object
paymentMethods.accountCredit.requirements.availableBalance.amount number required · Example: 100
paymentMethods.accountCredit.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.accountCredit.requirements.minimumAmount object
paymentMethods.accountCredit.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.accountCredit.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.accountCredit.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.accountCredit.requirements.maximumAmount object
paymentMethods.accountCredit.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.accountCredit.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.accountCredit.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.swish object required
paymentMethods.swish.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.swish.label string required · Example: Card
paymentMethods.swish.available boolean required · Example: true
paymentMethods.swish.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.swish.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.swish.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.swish.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.swish.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.swish.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.swish.requirements.accountCountryCode string · Example: SE
paymentMethods.swish.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.swish.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.swish.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.swish.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.swish.requirements.availableBalance object
paymentMethods.swish.requirements.availableBalance.amount number required · Example: 100
paymentMethods.swish.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.swish.requirements.minimumAmount object
paymentMethods.swish.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.swish.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.swish.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.swish.requirements.maximumAmount object
paymentMethods.swish.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.swish.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.swish.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.bankgiro object required
paymentMethods.bankgiro.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.bankgiro.label string required · Example: Card
paymentMethods.bankgiro.available boolean required · Example: true
paymentMethods.bankgiro.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.bankgiro.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.bankgiro.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.bankgiro.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.bankgiro.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.bankgiro.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.bankgiro.requirements.accountCountryCode string · Example: SE
paymentMethods.bankgiro.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.bankgiro.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.bankgiro.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.bankgiro.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.bankgiro.requirements.availableBalance object
paymentMethods.bankgiro.requirements.availableBalance.amount number required · Example: 100
paymentMethods.bankgiro.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.bankgiro.requirements.minimumAmount object
paymentMethods.bankgiro.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.bankgiro.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.bankgiro.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.bankgiro.requirements.maximumAmount object
paymentMethods.bankgiro.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.bankgiro.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.bankgiro.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.sepa object required
paymentMethods.sepa.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.sepa.label string required · Example: Card
paymentMethods.sepa.available boolean required · Example: true
paymentMethods.sepa.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.sepa.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.sepa.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.sepa.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.sepa.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.sepa.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.sepa.requirements.accountCountryCode string · Example: SE
paymentMethods.sepa.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.sepa.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.sepa.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.sepa.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.sepa.requirements.availableBalance object
paymentMethods.sepa.requirements.availableBalance.amount number required · Example: 100
paymentMethods.sepa.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.sepa.requirements.minimumAmount object
paymentMethods.sepa.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.sepa.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.sepa.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.sepa.requirements.maximumAmount object
paymentMethods.sepa.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.sepa.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.sepa.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.alipay object required
paymentMethods.alipay.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.alipay.label string required · Example: Card
paymentMethods.alipay.available boolean required · Example: true
paymentMethods.alipay.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.alipay.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.alipay.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.alipay.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.alipay.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.alipay.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.alipay.requirements.accountCountryCode string · Example: SE
paymentMethods.alipay.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.alipay.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.alipay.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.alipay.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.alipay.requirements.availableBalance object
paymentMethods.alipay.requirements.availableBalance.amount number required · Example: 100
paymentMethods.alipay.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.alipay.requirements.minimumAmount object
paymentMethods.alipay.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.alipay.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.alipay.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.alipay.requirements.maximumAmount object
paymentMethods.alipay.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.alipay.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.alipay.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.crypto object required
paymentMethods.crypto.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
paymentMethods.crypto.label string required · Example: Card
paymentMethods.crypto.available boolean required · Example: true
paymentMethods.crypto.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

paymentMethods.crypto.reason string · nullable required · Example: null

Human-readable blocker when available is false.

paymentMethods.crypto.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
paymentMethods.crypto.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

paymentMethods.crypto.requirements.invoiceCurrencyCode string · Example: SEK
paymentMethods.crypto.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
paymentMethods.crypto.requirements.accountCountryCode string · Example: SE
paymentMethods.crypto.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

paymentMethods.crypto.requirements.accountType string · enum · Example: private
private
organisation
paymentMethods.crypto.requirements.accountCurrencyCode string · Example: SEK
paymentMethods.crypto.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

paymentMethods.crypto.requirements.availableBalance object
paymentMethods.crypto.requirements.availableBalance.amount number required · Example: 100
paymentMethods.crypto.requirements.availableBalance.currencyCode string required · Example: SEK
paymentMethods.crypto.requirements.minimumAmount object
paymentMethods.crypto.requirements.minimumAmount.amount number required · Example: 3
paymentMethods.crypto.requirements.minimumAmount.currencyCode string required · Example: SEK
paymentMethods.crypto.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentMethods.crypto.requirements.maximumAmount object
paymentMethods.crypto.requirements.maximumAmount.amount number required · Example: 3
paymentMethods.crypto.requirements.maximumAmount.currencyCode string required · Example: SEK
paymentMethods.crypto.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
paymentLinkGeneratorUrl string · nullable · Example: /api/v2/billing/invoices/inv_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/generate-payment-link

isBulkPaymentChild boolean · Example: false
bulkPaymentParentId string · nullable · Example: null

coversInvoiceIds array<string> · Example: ["inv_01hxa3b4c5d6e7f8g9h0j1k2m3"]
renewalInvoicing object

Present only when the invoice detail route can evaluate the same renewal invoicing preference logic used by invoice emails.

renewalInvoicing.preference string · enum required · Example: consolidated
consolidated
separate
renewalInvoicing.generatedByAutomation boolean required · Example: true

True when the invoice was generated by the renewal automation path that also shows the invoice-email preference note.

renewalInvoicing.isConsolidated boolean required · Example: true

True only when this is an automated renewal invoice and the account preference was consolidated at generation time. Do not infer this from line-item count.

renewalInvoicing.label string required · Example: Consolidated renewal invoice
renewalInvoicing.settingsUrl string required · Example: /account
400 Invalid request. The response body is an RFC 7807 Problem Details document.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
401 Unauthorized. Authentication is required.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
403 Forbidden. The caller lacks a required scope or does not own the resource.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
404 Not found. The resource does not exist or is not owned by the caller.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
409 Conflict. See the Problem Details code for the route-specific blocker and recovery fields.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
429 Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
500 Internal error. Retry later or contact support if the issue persists.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
POST https://cloud.hostup.se/api/v2/billing/invoices/{id}/actions/cancel
For AI assistants
View as Markdown
cURL
curl -X POST "https://cloud.hostup.se/api/v2/billing/invoices/inv_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/cancel" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
{
  "id": "inv_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "number": "202600001",
  "status": "cancelled",
  "dates": {
    "issuedAt": "2026-04-27T12:00:00.000Z",
    "dueAt": "2026-05-11T23:59:59.000Z"
  },
  "totals": {
    "currencyCode": "SEK",
    "subtotal": 10,
    "taxAmount": 0,
    "taxRateDecimal": 0.25,
    "creditApplied": 0,
    "total": 10,
    "amountPaid": 0,
    "amountRefunded": 0,
    "outstanding": 0
  },
  "lineItemCount": 1,
  "lineItems": [
    {
      "kind": "credit",
      "purpose": "account_credit_top_up",
      "description": "Add account credit",
      "quantity": 1,
      "unitAmount": 10,
      "totalAmount": 10,
      "currencyCode": "SEK"
    }
  ],
  "actions": {
    "canPay": {
      "allowed": false,
      "reason": "Invoice is cancelled."
    },
    "canGeneratePaymentLink": {
      "allowed": false,
      "reason": "Invoice is cancelled."
    },
    "canBulkPay": {
      "allowed": false,
      "reason": "Invoice is cancelled."
    },
    "canCancel": {
      "allowed": false,
      "reason": "Only unpaid invoices can be cancelled.",
      "code": "invoice_not_unpaid"
    },
    "canEmail": {
      "allowed": false,
      "reason": "Cancelled invoices cannot be emailed."
    },
    "canDownload": {
      "allowed": true,
      "reason": null
    }
  },
  "paymentMethods": {
    "card": {
      "method": "card",
      "label": "Card",
      "available": false,
      "reason": "Invoice is cancelled.",
      "checkoutMode": "payment",
      "requirements": {
        "minimumAmount": {
          "amount": 3,
          "currencyCode": "SEK",
          "comparison": "greater_than"
        }
      }
    },
    "accountCredit": {
      "method": "accountCredit",
      "label": "Account credit",
      "available": false,
      "reason": "Invoice is cancelled.",
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCurrencyCode": "SEK",
        "availableBalance": {
          "amount": 0,
          "currencyCode": "SEK"
        },
        "maximumAmount": {
          "amount": 0,
          "currencyCode": "SEK",
          "comparison": "less_than_or_equal"
        }
      }
    },
    "swish": {
      "method": "swish",
      "label": "Swish",
      "available": false,
      "reason": "Invoice is cancelled.",
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCountryCode": "SE"
      }
    },
    "bankgiro": {
      "method": "bankgiro",
      "label": "Bankgiro",
      "available": false,
      "reason": "Invoice is cancelled.",
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCountryCode": "SE"
      }
    },
    "sepa": {
      "method": "sepa",
      "label": "SEPA bank transfer",
      "available": false,
      "reason": "Invoice is cancelled.",
      "checkoutMode": "sepa_bank_transfer_payment",
      "requirements": {
        "invoiceCurrencyCode": "EUR"
      }
    },
    "alipay": {
      "method": "alipay",
      "label": "Alipay",
      "available": false,
      "reason": "Invoice is cancelled.",
      "checkoutMode": "alipay_payment",
      "requirements": {
        "invoiceCurrencyCodes": [
          "EUR",
          "USD"
        ]
      }
    },
    "crypto": {
      "method": "crypto",
      "label": "Cryptocurrency",
      "available": false,
      "reason": "Cryptocurrency payments are not available for Swedish billing accounts.",
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCodes": [
          "SEK",
          "EUR",
          "USD"
        ],
        "accountCountryExcludedCode": "SE",
        "accountType": "private",
        "requiresCardVerification": true
      },
      "visible": false
    }
  },
  "paymentLinkGeneratorUrl": null,
  "isBulkPaymentChild": false,
  "bulkPaymentParentId": null
}