Apply account credit to invoice

Apply available account credit to an unpaid invoice. Get {id} from GET /api/v2/billing/invoices data[].id or invoice detail. The amount must be greater than zero, cannot exceed available credit, and cannot exceed the remaining invoice balance. The response is the refreshed invoice detail shape.

Billing & Orders Invoices

Authentication

Required API scope: write:billing

Use Authorization: Bearer <token> for API keys. Dashboard sessions may also use hostup_session.

Context

Path Parameters

id string required Example: inv_01hxa3b4c5d6e7f8g9h0j1k2m3

Public invoice ID from `GET /api/v2/billing/invoices` `data[].id`. Do not invent this value; use the exact ID returned by the referenced API response.

Headers

Accept Example
Content-Type Example

Body

required
application/json
amount number required · Example: 100

Account-credit amount to apply in the target invoice currency. The refreshed invoice response carries `totals.currencyCode`.

Responses

200 Updated invoice after credit application.
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.outstanding number required · Example: 159
lineItemCount integer · Example: 1
lineItems array<object>
payments array<object>
payments[].method stringnull · 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
paypal
invoice
other
payments[].methodLabel stringnull 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 stringnull required · Example: null
actions.canPay.code stringnull · 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 stringnull required · Example: null
actions.canGeneratePaymentLink.code stringnull · 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 stringnull required · Example: null
actions.canBulkPay.code stringnull · 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 stringnull required · Example: null
actions.canCancel.code stringnull · 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 stringnull required · Example: null
actions.canEmail.code stringnull · 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 stringnull required · Example: null
actions.canDownload.code stringnull · 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`, and `alipay`. 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
paymentMethods.card.label string required · Example: Card
paymentMethods.card.available boolean required · Example: true
paymentMethods.card.reason stringnull required · Example: null

Human-readable blocker when `available` is false.

paymentMethods.card.checkoutMode stringnull · 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, 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.accountCurrencyCode string · Example: SEK
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
paymentMethods.accountCredit.label string required · Example: Card
paymentMethods.accountCredit.available boolean required · Example: true
paymentMethods.accountCredit.reason stringnull required · Example: null

Human-readable blocker when `available` is false.

paymentMethods.accountCredit.checkoutMode stringnull · 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, 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.accountCurrencyCode string · Example: SEK
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
paymentMethods.swish.label string required · Example: Card
paymentMethods.swish.available boolean required · Example: true
paymentMethods.swish.reason stringnull required · Example: null

Human-readable blocker when `available` is false.

paymentMethods.swish.checkoutMode stringnull · 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, 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.accountCurrencyCode string · Example: SEK
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
paymentMethods.bankgiro.label string required · Example: Card
paymentMethods.bankgiro.available boolean required · Example: true
paymentMethods.bankgiro.reason stringnull required · Example: null

Human-readable blocker when `available` is false.

paymentMethods.bankgiro.checkoutMode stringnull · 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, 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.accountCurrencyCode string · Example: SEK
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
paymentMethods.sepa.label string required · Example: Card
paymentMethods.sepa.available boolean required · Example: true
paymentMethods.sepa.reason stringnull required · Example: null

Human-readable blocker when `available` is false.

paymentMethods.sepa.checkoutMode stringnull · 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, 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.accountCurrencyCode string · Example: SEK
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
paymentMethods.alipay.label string required · Example: Card
paymentMethods.alipay.available boolean required · Example: true
paymentMethods.alipay.reason stringnull required · Example: null

Human-readable blocker when `available` is false.

paymentMethods.alipay.checkoutMode stringnull · 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, 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.accountCurrencyCode string · Example: SEK
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
paymentLinkGeneratorUrl stringnull · Example: /api/v2/billing/invoices/inv_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/generate-payment-link
isBulkPaymentChild boolean · Example: false
bulkPaymentParentId stringnull · 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
POST https://cloud.hostup.se/api/v2/billing/invoices/{id}/actions/apply-credit
For AI assistants
View as Markdown
cURL
curl -X POST "https://cloud.hostup.se/api/v2/billing/invoices/inv_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/apply-credit" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 100
  }'
Response
{
  "id": "inv_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "number": "202600001",
  "orderId": "ord_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "status": "paid",
  "dates": {
    "issuedAt": "2026-04-27T12:00:00.000Z",
    "dueAt": "2026-05-11T23:59:59.000Z",
    "paidAt": "2026-04-27T12:34:56.000Z"
  },
  "totals": {
    "currencyCode": "SEK",
    "subtotal": 200,
    "taxAmount": 50,
    "taxRateDecimal": 0.25,
    "creditApplied": 250,
    "total": 0,
    "amountPaid": 0,
    "outstanding": 0
  },
  "lineItemCount": 1,
  "lineItems": [
    {
      "description": "Cloud VPS monthly service",
      "displayDescription": "Cloud VPS monthly service",
      "kind": "vps",
      "productName": "Cloud VPS",
      "quantity": 1,
      "unitAmount": 200,
      "totalAmount": 200,
      "currencyCode": "SEK",
      "period": {
        "startAt": "2026-04-27T12:00:00.000Z",
        "endAt": "2026-05-27T12:00:00.000Z"
      },
      "resource": {
        "type": "vps",
        "id": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
        "displayName": "example.com"
      },
      "configurableOptions": [
        {
          "key": "os",
          "label": "OS",
          "value": "Debian 13"
        },
        {
          "key": "blockStorageNvme",
          "label": "Block Storage (NVMe)",
          "value": "50 GB"
        },
        {
          "key": "bandwidthLimit",
          "label": "Bandwidth limit",
          "value": "2 TB"
        },
        {
          "key": "cephStoragePreference",
          "label": "Ceph storage preference",
          "value": "Replication 3"
        },
        {
          "key": "backups",
          "label": "Example Label",
          "value": "7"
        }
      ]
    }
  ],
  "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": 50,
          "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"
        ]
      }
    }
  },
  "paymentLinkGeneratorUrl": null,
  "isBulkPaymentChild": false,
  "bulkPaymentParentId": null
}
Request Body Apply credit
{
  "amount": 100
}