Skip to main content
POST
/
api
/
v1
/
documents
/
contracts
/
{contract_id}
/
create-invoice
Create invoice from contract
curl --request POST \
  --url https://api.hevn.finance/api/v1/documents/contracts/{contract_id}/create-invoice \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amount": 123,
  "comment": "<string>",
  "invoicePrefix": "INV",
  "contractorAddress": {
    "streetAddress": "<string>",
    "addressLine2": "<string>",
    "city": "<string>",
    "state": "<string>",
    "zip": "<string>"
  },
  "periodStart": "2023-12-25",
  "addItems": [
    {}
  ]
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "amount": "<string>",
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z",
  "onchainTransactionId": "<string>",
  "transaction": {
    "onchainTransactionId": "<string>",
    "amount": 123,
    "txHash": "<string>",
    "type": "<string>",
    "createdAt": "2023-11-07T05:31:56Z"
  },
  "discount": "<string>",
  "comment": "<string>",
  "emailMessage": "<string>",
  "invoiceNumber": "<string>",
  "periodNumber": 123,
  "issuedDate": "2023-12-25",
  "dueDate": "2023-12-25",
  "items": [
    {}
  ],
  "paymentMethods": [
    {
      "bankName": "<string>",
      "ibanNumber": "<string>",
      "beneficiaryName": "<string>",
      "bankAddress": "<string>",
      "currency": "<string>",
      "accountHolderFirstName": "<string>",
      "accountHolderLastName": "<string>",
      "accountHolderBusinessName": "<string>",
      "accountHolderAddress": {
        "streetAddress": "<string>",
        "addressLine2": "<string>",
        "city": "<string>",
        "state": "<string>",
        "zip": "<string>"
      },
      "paymentReference": "<string>",
      "accountType": "sepa",
      "bic": "<string>"
    }
  ],
  "client": {
    "email": "<string>",
    "displayName": "<string>",
    "address": {
      "streetAddress": "<string>",
      "addressLine2": "<string>",
      "city": "<string>",
      "state": "<string>",
      "zip": "<string>"
    }
  },
  "contractor": {
    "email": "<string>",
    "displayName": "<string>",
    "address": {
      "streetAddress": "<string>",
      "addressLine2": "<string>",
      "city": "<string>",
      "state": "<string>",
      "zip": "<string>"
    }
  },
  "contract": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "isRecurring": true,
    "period": "<string>",
    "activationAt": "2023-11-07T05:31:56Z",
    "expirationAt": "2023-11-07T05:31:56Z"
  },
  "invoiceLink": "<string>",
  "documents": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "name": "<string>",
      "key": "<string>"
    }
  ],
  "paidAt": "2023-11-07T05:31:56Z"
}

Authorizations

Authorization
string
header
default:Bearer <token>
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-api-key
string | null

Path Parameters

contract_id
string<uuid>
required

Body

application/json

Request to create an invoice from a contract.

Either party (client or contractor) of the contract may create the invoice; attribution always flows from contract.contractor to contract.client. Amount defaults to the contract amount when not provided. contractor_address is optional — when omitted, the snapshot stored on the contract (or the linked contact's address) is used. invoice_number is auto-generated per (contractor, client) pair as e.g. "INV-0001".

amount
comment
string | null
invoicePrefix
string
default:INV

Prefix for auto-generated invoice_number, e.g. "INV" → "INV-0001".

Required string length: 1 - 16
Pattern: ^[A-Za-z0-9_-]+$
contractorAddress
UserAddress · object

Address schema for user.

Canonical field names: street_address, address_line_2, city, state, country, zip. Accepts legacy Align/IBAN field names (street_line_1, street_line_2, postal_code) for backward compatibility with existing JSONB data.

periodStart
string<date> | null
addItems
Additems · object[]

Response

Successful Response

Invoice response.

id
string<uuid>
required
amount
string
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
currency
enum<string>
required

Supported invoice/contract currencies. G10 majors + AED/HKD.

Available options:
USD,
EUR,
GBP,
JPY,
CHF,
CAD,
AUD,
NZD,
SEK,
NOK,
AED,
HKD
status
enum<string>
required

Invoice status.

Available options:
draft,
sent,
paid,
cancelled,
client_paid,
client_declined
createdAt
string<date-time>
required
updatedAt
string<date-time>
required
onchainTransactionId
string | null
transaction
InvoiceTransactionInfo · object

Minimal transaction info embedded in invoice response.

discount
string | null
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
comment
string | null
emailMessage
string | null
invoiceNumber
string | null
periodNumber
integer | null
issuedDate
string<date> | null
dueDate
string<date> | null
items
Items · object[]
paymentMethods
(IBANAccountDetails · object | USExternalAccountDetails · object | SwiftAccountDetails · object | ContactWalletResponse · object | EmailAccountInput · object)[]

IBAN (SEPA) external account.

client
InvoiceParticipant · object

Minimal participant info for invoice response.

contractor
InvoiceParticipant · object

Minimal participant info for invoice response.

contract
InvoiceContractInfo · object

Minimal contract info embedded in invoice response.

documents
InvoiceDocumentInfo · object[]
paidAt
string<date-time> | null