Get invoice details

GET /api/v2/billing/invoices/{id}

Return invoice totals, line items, payment history, action gates, and invoice-specific payment-method availability.

Amounts live under totals; payment rows use method for the canonical enum and methodLabel for display text.

renewalInvoicing.isConsolidated is supplied only when the invoice matches the same automated-renewal logic used by invoice emails; do not infer a consolidated invoice from line-item count.

Billing & Orders Invoices

Authentication

Required API scope: read: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, an order response, or a billing activity row. Do not invent this value; use the exact ID returned by the referenced API response.

Headers

Authorization Bearer <token>
Accept application/json

Responses

200 Invoice details.
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
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
GET https://cloud.hostup.se/api/v2/billing/invoices/{id}
For AI assistants
View as Markdown
cURL
curl -X GET "https://cloud.hostup.se/api/v2/billing/invoices/inv_01hxa3b4c5d6e7f8g9h0j1k2m3" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
// Paid invoice with canonical payment history
{
  "id": "inv_06ex6yz35kn5w7dgzpzg4f4v3g",
  "orderId": "ord_06ex6yz13fh2qvpe8key9vetj0",
  "number": "202664056",
  "status": "paid",
  "dates": {
    "issuedAt": "2026-04-28T00:00:00.000Z",
    "dueAt": "2026-05-12T00:00:00.000Z",
    "paidAt": "2026-04-28T09:47:47.000Z"
  },
  "totals": {
    "currencyCode": "SEK",
    "subtotal": 79,
    "taxAmount": 19.75,
    "taxRateDecimal": 0.25,
    "creditApplied": 0,
    "total": 98.75,
    "amountPaid": 98.75,
    "amountRefunded": 0,
    "outstanding": 0
  },
  "lineItemCount": 2,
  "lineItems": [
    {
      "kind": "domain",
      "purpose": "registration",
      "resource": {
        "type": "domain",
        "id": "dom_06ex6z7c41av0cvgzkhrrqpwar",
        "displayName": "example.com"
      },
      "description": "Domain registration for example.com",
      "displayDescription": "Domain registration: example.com",
      "displaySecondaryLines": [
        "2026-04-28 - 2027-04-28"
      ],
      "quantity": 1,
      "unitAmount": 99,
      "totalAmount": 99,
      "currencyCode": "SEK",
      "period": {
        "startAt": "2026-04-28T00:00:00.000Z",
        "endAt": "2027-04-28T00:00:00.000Z"
      }
    },
    {
      "kind": "domain",
      "purpose": "registration",
      "resource": {
        "type": "domain",
        "id": "dom_06ex6z7c430873qcb91bmdk3k4",
        "displayName": "example.com"
      },
      "description": "Discount: Domain registration for example.com",
      "displayDescription": "Discount: Domain registration: example.com",
      "displaySecondaryLines": [
        "2026-04-28 - 2027-04-28"
      ],
      "quantity": 1,
      "unitAmount": -20,
      "totalAmount": -20,
      "currencyCode": "SEK",
      "period": {
        "startAt": "2026-04-28T00:00:00.000Z",
        "endAt": "2027-04-28T00:00:00.000Z"
      }
    }
  ],
  "payments": [
    {
      "method": "card",
      "methodLabel": "Card",
      "amount": 98.75,
      "currencyCode": "SEK"
    }
  ],
  "actions": {
    "canPay": {
      "allowed": false,
      "reason": "Invoice is already paid."
    },
    "canGeneratePaymentLink": {
      "allowed": false,
      "reason": "Invoice is already paid."
    },
    "canBulkPay": {
      "allowed": false,
      "reason": "Invoice is already paid."
    },
    "canCancel": {
      "allowed": false,
      "reason": "Only unpaid invoices can be cancelled."
    },
    "canEmail": {
      "allowed": true,
      "reason": null
    },
    "canDownload": {
      "allowed": true,
      "reason": null
    }
  },
  "paymentMethods": {
    "card": {
      "method": "card",
      "label": "Card",
      "available": false,
      "reason": "Invoice is already paid.",
      "checkoutMode": "payment",
      "requirements": {
        "minimumAmount": {
          "amount": 3,
          "currencyCode": "SEK",
          "comparison": "greater_than"
        }
      }
    },
    "accountCredit": {
      "method": "accountCredit",
      "label": "Account credit",
      "available": false,
      "reason": "Invoice is already paid.",
      "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 already paid.",
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCountryCode": "SE"
      }
    },
    "bankgiro": {
      "method": "bankgiro",
      "label": "Bankgiro",
      "available": false,
      "reason": "Invoice is already paid.",
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCountryCode": "SE"
      }
    },
    "sepa": {
      "method": "sepa",
      "label": "SEPA bank transfer",
      "available": false,
      "reason": "Invoice is already paid.",
      "checkoutMode": "sepa_bank_transfer_payment",
      "requirements": {
        "invoiceCurrencyCode": "EUR"
      }
    },
    "alipay": {
      "method": "alipay",
      "label": "Alipay",
      "available": false,
      "reason": "Invoice is already paid.",
      "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
}

// Automated consolidated renewal invoice
{
  "id": "inv_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "number": "202600101",
  "status": "unpaid",
  "dates": {
    "issuedAt": "2026-04-27T12:00:00.000Z",
    "dueAt": "2026-05-11T23:59:59.000Z"
  },
  "totals": {
    "currencyCode": "SEK",
    "subtotal": 199,
    "taxAmount": 49.75,
    "taxRateDecimal": 0.25,
    "creditApplied": 0,
    "total": 248.75,
    "amountPaid": 0,
    "amountRefunded": 0,
    "outstanding": 248.75
  },
  "lineItemCount": 3,
  "actions": {
    "canPay": {
      "allowed": true,
      "reason": null
    },
    "canGeneratePaymentLink": {
      "allowed": true,
      "reason": null
    },
    "canBulkPay": {
      "allowed": true,
      "reason": null
    },
    "canCancel": {
      "allowed": false,
      "reason": "Domain renewal invoices can only be cancelled after the related order is cancelled."
    },
    "canEmail": {
      "allowed": true,
      "reason": null
    },
    "canDownload": {
      "allowed": true,
      "reason": null
    }
  },
  "paymentMethods": {
    "card": {
      "method": "card",
      "label": "Card",
      "available": true,
      "reason": null,
      "checkoutMode": "payment",
      "requirements": {
        "minimumAmount": {
          "amount": 3,
          "currencyCode": "SEK",
          "comparison": "greater_than"
        }
      }
    },
    "accountCredit": {
      "method": "accountCredit",
      "label": "Account credit",
      "available": false,
      "reason": "No account credit is available.",
      "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": true,
      "reason": null,
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCountryCode": "SE"
      }
    },
    "bankgiro": {
      "method": "bankgiro",
      "label": "Bankgiro",
      "available": true,
      "reason": null,
      "checkoutMode": null,
      "requirements": {
        "invoiceCurrencyCode": "SEK",
        "accountCountryCode": "SE"
      }
    },
    "sepa": {
      "method": "sepa",
      "label": "SEPA bank transfer",
      "available": false,
      "reason": "SEPA bank transfer is only available for EUR invoices.",
      "checkoutMode": "sepa_bank_transfer_payment",
      "requirements": {
        "invoiceCurrencyCode": "EUR"
      }
    },
    "alipay": {
      "method": "alipay",
      "label": "Alipay",
      "available": false,
      "reason": "Alipay is not available for SEK invoices. Use card or another payment method.",
      "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": "/api/v2/billing/invoices/inv_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/generate-payment-link",
  "isBulkPaymentChild": false,
  "bulkPaymentParentId": null,
  "renewalInvoicing": {
    "preference": "consolidated",
    "generatedByAutomation": true,
    "isConsolidated": true,
    "label": "Consolidated renewal invoice",
    "settingsUrl": "/account"
  }
}