Skip to Content
HelvetlyDocs
API referenceInvoices

Create a credit note draft

Needs a token with the write:invoices scope. Authentication

Try in Playground sends a real request to app.helvetly.com with a token you paste. It stays in this browser tab only (session storage) and goes to no one else.

POST
/api/v1/invoices/{id}/credit-note

Creates a credit note draft against an open or paid invoice, for chosen lines or (without lines) the whole invoice, and answers 201 with the draft. Nothing is booked until you issue it (issue_invoice), which can fail with 409 period_closed or, for a self-billed invoice, 409 self_billing_agreement_missing. 409 invalid_state when the invoice is not open or paid, or its prepayment is deducted; 422 validation_failed when the credit exceeds what is left to credit. Not idempotent: each call makes a new draft. Send {} to credit everything.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A personal API token, hvt_…, with scopes such as read:* or write:invoices

Path Parameters

id*string

The invoice's id.

Request Body

application/json
  1. body

Send {} to credit the whole invoice.

lines?array<>

The lines to credit. Leave out to credit the whole invoice. The total may not exceed what is still creditable.

Items1 <= items <= 200
reason?|

Becomes the credit note's intro text.

Lengthlength <= 1000

Response Body

Created

application/json
  1. response
data*
Example Request
curl -X POST 'https://app.helvetly.com/api/v1/invoices/string/credit-note' \  -H 'Content-Type: application/json' \  -d '{  "reason": "Service not delivered"}'
Example Response
{  "data": {    "id": "string",    "kind": "invoice",    "type_code": "string",    "number": "string",    "status": "draft",    "is_overdue": true,    "client_id": "string",    "client": {      "id": "string",      "number": 0,      "name": "string"    },    "quote": {      "id": "string",      "number": "string"    },    "credited_invoice": {      "id": "string",      "number": "string"    },    "issue_date": "2019-08-24",    "due_date": "2019-08-24",    "service_date": "2019-08-24",    "service_date_end": "2019-08-24",    "currency": "string",    "language": "string",    "vat_mode": "exclusive",    "reference": "string",    "tax_currency_rate": "string",    "intro": "string",    "footer": "string",    "note": "string",    "lines": [      {        "id": "string",        "position": 0,        "description": "string",        "quantity": "string",        "unit": "string",        "unit_price": "1234.50",        "discount_percent": "string",        "vat_category": "string",        "vat_rate": "string",        "amount": "1234.50",        "vat_exemption_code": "string",        "vat_exemption_reason": "string"      }    ],    "discount_percent": "string",    "subtotal": "1234.50",    "discount_amount": "1234.50",    "net_total": "1234.50",    "vat_breakdown": [      {        "category": "string",        "rate": "string",        "taxable_amount": "1234.50",        "vat_amount": "1234.50"      }    ],    "vat_total": "1234.50",    "total": "1234.50",    "rounding_amount": "1234.50",    "payable_total": "1234.50",    "prepaid_total": "1234.50",    "prepayments": [      {        "id": "string",        "number": "string",        "payable_total": "1234.50",        "status": "string",        "vat_breakdown": [          {            "category": "string",            "rate": "string",            "taxable_amount": "1234.50",            "vat_amount": "1234.50"          }        ]      }    ],    "deducted_on": {      "id": "string",      "number": "string"    },    "amount_paid": "1234.50",    "amount_credited": "1234.50",    "amount_due": "1234.50",    "amount_refunded": "1234.50",    "refund_due": "1234.50",    "payment_methods": {      "qr_bill": true,      "revolut": true    },    "payment": {      "iban": "string",      "reference_type": "string",      "reference": "string",      "qr_bill": true,      "revolut_url": "string"    },    "seller": {      "name": "string",      "street": "string",      "street_number": "string",      "apt": "string",      "zip": "string",      "city": "string",      "country": "string",      "vat_number": "string",      "email": "string",      "phone": "string",      "electronic_address": {        "scheme": "string",        "id": "string"      },      "registration_number": "string",      "region": "string"    },    "buyer": {      "name": "string",      "street": "string",      "street_number": "string",      "apt": "string",      "zip": "string",      "city": "string",      "country": "string",      "vat_number": "string",      "email": "string",      "phone": "string",      "electronic_address": {        "scheme": "string",        "id": "string"      },      "registration_number": "string",      "region": "string"    },    "payments": [      {        "id": "string",        "amount": "1234.50",        "paid_on": "2019-08-24",        "method": "bank_transfer",        "note": "string",        "created_at": "2019-08-24T14:15:22Z",        "created_by": {          "id": "string",          "name": "string"        }      }    ],    "refunds": [      {        "id": "string",        "amount": "1234.50",        "refunded_on": "2019-08-24",        "method": "string",        "note": "string",        "created_at": "2019-08-24T14:15:22Z",        "created_by": {          "id": "string",          "name": "string"        }      }    ],    "instalments": {      "interval": "string",      "items": [        {          "seq": 0,          "due_date": "2019-08-24",          "amount": "1234.50",          "effective": "1234.50",          "paid": "1234.50",          "open": "1234.50",          "status": "string",          "reference": "string"        }      ]    },    "plan": {      "id": "string",      "seq": 0,      "count": 0    },    "reminders_enabled": true,    "issued_at": "2019-08-24T14:15:22Z",    "sent_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z",    "origin": "string",    "source_document_id": "string"  }}