Skip to main content
POST
/
api
/
v1
/
invoices
/
documents
/
contracts
/
invoices
Create invoice
curl --request POST \
  --url https://api.hevn.finance/api/v1/invoices/documents/contracts/invoices \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "contractorEmail": "<string>",
  "contractorDisplayName": "<string>",
  "clientEmail": "<string>",
  "clientDisplayName": "<string>"
}
'
{
  "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

Body

application/json

Request to create an invoice.

Participant data (email, display_name, address) is snapshotted at creation time. Amount is computed as sum of items[].price * items[].quantity. invoice_number is auto-generated per (contractor, client) pair.

contractorEmail
string
required
contractorDisplayName
string
required
clientEmail
string
required
clientDisplayName
string
required
currency
enum<string>
default:USD

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

Available options:
USD,
EUR,
GBP,
JPY,
CHF,
CAD,
AUD,
NZD,
SEK,
NOK,
AED,
HKD
comment
string | null
emailMessage
string | null
Maximum string length: 2000
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_-]+$
issuedDate
string<date> | null
dueDate
string<date> | null
items
Items · object[]
discount

Fixed discount in invoice currency. Subtracted from sum of items.

Required range: x >= 0
documentIds
string<uuid>[] | null
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.

clientAddress
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.

banks
string<uuid>[] | null
onchain
boolean
default:false

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