View as Markdown

llms.txt

The API reference isn't available right now

This instance couldn't load its API specification. The reference returns as soon as the specification is readable again.

Back to the API reference

No such operation

This instance documents no operation under that identifier. It may have been renamed, or it may belong to a feature this installation hasn't enabled.

Back to the API reference

This reference may be out of date

This instance couldn't reach its API specification on the last attempt, so this page shows the copy fetched before that. Anything added or changed since then is missing here, and the reference updates itself as soon as the specification is readable again. Last fetched 2026-10-22 22:09 UTC.

API reference Invoicing

Credit Notes: Creates a new credit note.

POST /api/invoicing/credit-notes deprecated

Requires: Invoicing.CreditNotes, Invoicing.CreditNotes.Create, merchant scope.

**Required permissions**: `Invoicing.CreditNotes`, `Invoicing.CreditNotes.Create` **Scope**: merchant

Signed in, you can send this request to your own sandbox merchant from the console and read the answer. Sign in to try it.

Example request

Each example below is one request, shown in every language. Choose an example and a language, then replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.

The request body is a CreditNoteCreateDto. See the Request body section below for its fields.

Code sample language
Request example

Records a draft credit note against two of the five license seats an invoice billed. Because the line names the invoice line it credits, the server derives its tax from that line at the rate the invoice charged and caps the credit at the line's net plus tax, so taxAmount and lineTotal are not sent. A credit note is a correction document kept with the invoice: it does not change the invoice's balance and is not sent to the recipient. Money goes back to a payer through POST /api/invoicing/invoices/{id}/refund. Replace billerId with your merchant's id, originalInvoiceId and originalLineItemId with the invoice and the line you are crediting, and customerId with the invoice's customer.

cURL

curl -X POST "{{BASE_URL}}/api/invoicing/credit-notes" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Two license seats were not activated.",
  "lineItems": [
    {
      "originalLineItemId": "00000000-0000-0000-0000-000000000602",
      "description": "Logo usage license, one seat each",
      "quantity": 2,
      "unitPrice": 120
    }
  ]
}'

PowerShell

$headers = @{
    'api-key' = '{{API_KEY}}'
}

$body = @'
{
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Two license seats were not activated.",
  "lineItems": [
    {
      "originalLineItemId": "00000000-0000-0000-0000-000000000602",
      "description": "Logo usage license, one seat each",
      "quantity": 2,
      "unitPrice": 120
    }
  ]
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/invoicing/credit-notes' `
    -Headers $headers -ContentType 'application/json' -Body $body

npm install @winkpg/winkpg-api

TypeScript (SDK)

import { Configuration, InvoicingApi } from '@winkpg/winkpg-api';

const api = new InvoicingApi(new Configuration({
  basePath: '{{BASE_URL}}',
  apiKey: '{{API_KEY}}',
}));

const { data } = await api.creditNoteCreate({
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Two license seats were not activated.",
  "lineItems": [
    {
      "originalLineItemId": "00000000-0000-0000-0000-000000000602",
      "description": "Logo usage license, one seat each",
      "quantity": 2,
      "unitPrice": 120
    }
  ]
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/invoicing/credit-notes', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "billerId": "00000000-0000-0000-0000-000000000001",
    "billerType": "Merchant",
    "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
    "customerId": "00000000-0000-0000-0000-000000000201",
    "reason": "Two license seats were not activated.",
    "lineItems": [
      {
        "originalLineItemId": "00000000-0000-0000-0000-000000000602",
        "description": "Logo usage license, one seat each",
        "quantity": 2,
        "unitPrice": 120
      }
    ]
  }),
});

const data = await response.json();

dotnet add package WinkPg.Api.Client

C# (SDK)

using WinkPg.Api.Client.Api;
using WinkPg.Api.Client.Client;
using System.Text.Json;

var config = new Configuration { BasePath = "{{BASE_URL}}" };
config.AddApiKey("api-key", "{{API_KEY}}");

var api = new InvoicingApi(config);
var body = JsonSerializer.Deserialize<CreditNoteCreateDto>("""
    {
      "billerId": "00000000-0000-0000-0000-000000000001",
      "billerType": "Merchant",
      "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
      "customerId": "00000000-0000-0000-0000-000000000201",
      "reason": "Two license seats were not activated.",
      "lineItems": [
        {
          "originalLineItemId": "00000000-0000-0000-0000-000000000602",
          "description": "Logo usage license, one seat each",
          "quantity": 2,
          "unitPrice": 120
        }
      ]
    }
    """);

var result = await api.CreditNoteCreateAsync(body);

C# (raw HTTP)

using System.Text;

using var http = new HttpClient { BaseAddress = new Uri("{{BASE_URL}}") };

var request = new HttpRequestMessage(new HttpMethod("POST"), "/api/invoicing/credit-notes");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "billerId": "00000000-0000-0000-0000-000000000001",
      "billerType": "Merchant",
      "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
      "customerId": "00000000-0000-0000-0000-000000000201",
      "reason": "Two license seats were not activated.",
      "lineItems": [
        {
          "originalLineItemId": "00000000-0000-0000-0000-000000000602",
          "description": "Logo usage license, one seat each",
          "quantity": 2,
          "unitPrice": 120
        }
      ]
    }
    """, Encoding.UTF8, "application/json");

var response = await http.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();

pip install winkpg-api

Python (SDK)

import winkpg_api

configuration = winkpg_api.Configuration(host="{{BASE_URL}}")
configuration.api_key["ApiKey"] = "{{API_KEY}}"

with winkpg_api.ApiClient(configuration) as client:
    api = winkpg_api.InvoicingApi(client)
    body = winkpg_api.CreditNoteCreateDto.from_dict({
      "billerId": "00000000-0000-0000-0000-000000000001",
      "billerType": "Merchant",
      "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
      "customerId": "00000000-0000-0000-0000-000000000201",
      "reason": "Two license seats were not activated.",
      "lineItems": [
        {
          "originalLineItemId": "00000000-0000-0000-0000-000000000602",
          "description": "Logo usage license, one seat each",
          "quantity": 2,
          "unitPrice": 120
        }
      ]
    })
    result = api.credit_note_create(body)

pip install requests

Python (raw HTTP)

import requests

headers = {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
}

body = {
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Two license seats were not activated.",
  "lineItems": [
    {
      "originalLineItemId": "00000000-0000-0000-0000-000000000602",
      "description": "Logo usage license, one seat each",
      "quantity": 2,
      "unitPrice": 120
    }
  ]
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/invoicing/credit-notes",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Records a draft goodwill credit of 150.00 plus 12.38 of tax that is not tied to any invoice line. A free-form line keeps the tax it is sent, rounded to the cent and never below zero, and the server computes the line total (162.38) itself. The credit note does not change the invoice's balance; return money with POST /api/invoicing/invoices/{id}/refund. Replace billerId with your merchant's id, originalInvoiceId with the invoice the credit belongs to, and customerId with its customer.

cURL

curl -X POST "{{BASE_URL}}/api/invoicing/credit-notes" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Goodwill credit for a late delivery.",
  "lineItems": [
    {
      "description": "Goodwill credit for a late delivery",
      "quantity": 1,
      "unitPrice": 150,
      "taxAmount": 12.38
    }
  ]
}'

PowerShell

$headers = @{
    'api-key' = '{{API_KEY}}'
}

$body = @'
{
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Goodwill credit for a late delivery.",
  "lineItems": [
    {
      "description": "Goodwill credit for a late delivery",
      "quantity": 1,
      "unitPrice": 150,
      "taxAmount": 12.38
    }
  ]
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/invoicing/credit-notes' `
    -Headers $headers -ContentType 'application/json' -Body $body

npm install @winkpg/winkpg-api

TypeScript (SDK)

import { Configuration, InvoicingApi } from '@winkpg/winkpg-api';

const api = new InvoicingApi(new Configuration({
  basePath: '{{BASE_URL}}',
  apiKey: '{{API_KEY}}',
}));

const { data } = await api.creditNoteCreate({
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Goodwill credit for a late delivery.",
  "lineItems": [
    {
      "description": "Goodwill credit for a late delivery",
      "quantity": 1,
      "unitPrice": 150,
      "taxAmount": 12.38
    }
  ]
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/invoicing/credit-notes', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "billerId": "00000000-0000-0000-0000-000000000001",
    "billerType": "Merchant",
    "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
    "customerId": "00000000-0000-0000-0000-000000000201",
    "reason": "Goodwill credit for a late delivery.",
    "lineItems": [
      {
        "description": "Goodwill credit for a late delivery",
        "quantity": 1,
        "unitPrice": 150,
        "taxAmount": 12.38
      }
    ]
  }),
});

const data = await response.json();

dotnet add package WinkPg.Api.Client

C# (SDK)

using WinkPg.Api.Client.Api;
using WinkPg.Api.Client.Client;
using System.Text.Json;

var config = new Configuration { BasePath = "{{BASE_URL}}" };
config.AddApiKey("api-key", "{{API_KEY}}");

var api = new InvoicingApi(config);
var body = JsonSerializer.Deserialize<CreditNoteCreateDto>("""
    {
      "billerId": "00000000-0000-0000-0000-000000000001",
      "billerType": "Merchant",
      "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
      "customerId": "00000000-0000-0000-0000-000000000201",
      "reason": "Goodwill credit for a late delivery.",
      "lineItems": [
        {
          "description": "Goodwill credit for a late delivery",
          "quantity": 1,
          "unitPrice": 150,
          "taxAmount": 12.38
        }
      ]
    }
    """);

var result = await api.CreditNoteCreateAsync(body);

C# (raw HTTP)

using System.Text;

using var http = new HttpClient { BaseAddress = new Uri("{{BASE_URL}}") };

var request = new HttpRequestMessage(new HttpMethod("POST"), "/api/invoicing/credit-notes");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "billerId": "00000000-0000-0000-0000-000000000001",
      "billerType": "Merchant",
      "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
      "customerId": "00000000-0000-0000-0000-000000000201",
      "reason": "Goodwill credit for a late delivery.",
      "lineItems": [
        {
          "description": "Goodwill credit for a late delivery",
          "quantity": 1,
          "unitPrice": 150,
          "taxAmount": 12.38
        }
      ]
    }
    """, Encoding.UTF8, "application/json");

var response = await http.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();

pip install winkpg-api

Python (SDK)

import winkpg_api

configuration = winkpg_api.Configuration(host="{{BASE_URL}}")
configuration.api_key["ApiKey"] = "{{API_KEY}}"

with winkpg_api.ApiClient(configuration) as client:
    api = winkpg_api.InvoicingApi(client)
    body = winkpg_api.CreditNoteCreateDto.from_dict({
      "billerId": "00000000-0000-0000-0000-000000000001",
      "billerType": "Merchant",
      "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
      "customerId": "00000000-0000-0000-0000-000000000201",
      "reason": "Goodwill credit for a late delivery.",
      "lineItems": [
        {
          "description": "Goodwill credit for a late delivery",
          "quantity": 1,
          "unitPrice": 150,
          "taxAmount": 12.38
        }
      ]
    })
    result = api.credit_note_create(body)

pip install requests

Python (raw HTTP)

import requests

headers = {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
}

body = {
  "billerId": "00000000-0000-0000-0000-000000000001",
  "billerType": "Merchant",
  "originalInvoiceId": "00000000-0000-0000-0000-000000000601",
  "customerId": "00000000-0000-0000-0000-000000000201",
  "reason": "Goodwill credit for a late delivery.",
  "lineItems": [
    {
      "description": "Goodwill credit for a late delivery",
      "quantity": 1,
      "unitPrice": 150,
      "taxAmount": 12.38
    }
  ]
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/invoicing/credit-notes",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Parameters

Name In Type Description
suppressNulls required query boolean If true, omit properties with null values.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

Request body

application/json , required

Field Type Description
reason required string nullablemax length 1000
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
lineItems required array of CreditNoteLineItemInputDto array of CreditNoteLineItemInputDto nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

Fields of each CreditNoteLineItemInputDto:

Field Type Description
originalLineItemId required string (uuid) The invoice line being credited. When set, the tax is derived from that line at its effective rate and the credit cannot exceed the line's net plus tax. Leave null for a free-form credit. nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
description required string nullablemax length 500
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
quantity required number (double) greater than 0
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
unitPrice required number (double) Price per unit credited. May carry more than two decimals; the line's net is rounded to the cent.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
taxAmount required number (double) Tax credited on this line. Honoured, rounded to the cent and floored at zero, only on a free-form line; on a line that references an original invoice line it is ignored and derived server-side.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
lineTotal required number (double) Ignored. The persisted line total is always computed server-side and returned on the response. Kept so existing requests keep deserialising.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This body has no documented fields.

billerId required string (uuid)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
billerType required InvoicePartyType InvoicePartyType Identifies the type of entity acting as the biller or recipient on an invoice.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
GatewayOwner Platform-level gateway owner.
Reseller Reseller entity.
Merchant Merchant entity.
Customer End customer.
originalInvoiceId required string (uuid)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
customerId required string (uuid) nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This request body has no documented fields.

Responses

200 OK

Body: CreditNoteDto CreditNoteDto Each item has these fields.

Field Type Description
id required string (uuid)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
creationTime required string (date-time) The date and time when this entity was created.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
creatorId required string (uuid) The ID of the user who created this entity. nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
lastModificationTime required string (date-time) The date and time when this entity was last modified. nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
lastModifierId required string (uuid) The ID of the user who last modified this entity. nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
billerId required string (uuid)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
billerType required InvoicePartyType InvoicePartyType Identifies the type of entity acting as the biller or recipient on an invoice.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
GatewayOwner Platform-level gateway owner.
Reseller Reseller entity.
Merchant Merchant entity.
Customer End customer.
creditNoteNumber required string nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
originalInvoiceId required string (uuid)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
customerId required string (uuid) nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
reason required string nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
lineItems required array of CreditNoteLineItemDto array of CreditNoteLineItemDto nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

Fields of each CreditNoteLineItemDto:

Field Type Description
id required string (uuid)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
originalLineItemId required string (uuid) nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
description required string nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
quantity required number (double)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
unitPrice required number (double)
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
taxAmount required number (double) Tax credited on this line, as computed server-side.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
lineTotal required number (double) Net plus tax credited on this line, as computed server-side.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This body has no documented fields.

total required number (double) nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
status required CreditNoteStatus CreditNoteStatus Lifecycle status of a credit note.
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
Draft Created, not yet issued.
Issued Issued and available to apply.
Applied Applied to the original invoice.
Voided Voided and no longer valid.
issuedAt required string (date-time) nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
appliedAt required string (date-time) nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
concurrencyStamp required string nullable
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

403 Forbidden

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

401 Unauthorized

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

400 Bad Request

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

404 Not Found

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

501 Not Implemented

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

500 Internal Server Error

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. The error reference lists the values `error.code` can take. The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. The error reference lists the values `error.code` can take.

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

429 The request was refused because a rate limit was exceeded, or because something a later retry can clear stopped it. A rate limit refusal carries an `application/problem+json` body: wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling. Any other refusal carries the standard error envelope as `application/json`, and its `error.code` names the cause.

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.

This response has no documented body fields.

Errors

A failed request returns the platform error envelope. The error reference lists every value error.code can carry and shows the four response shapes.

Codes declared by Invoicing

Authentication

    Reconnecting to the server

    Could not reconnect

    This session has ended

    Attempt 1

    Your work on this page is still here. Retrying keeps it; reloading starts the page again.

    The server no longer holds this page's state, so it has to be loaded again.