Skip to main content
AppApi uses app authentication. See Authentication for header details.

Account and profile

MethodEndpointCLI surfacePurpose
GET/userhevn account get, hevn profile getLoad the current user profile.
PUT/user/kychevn profile setUpdate profile and KYC profile fields.
POST/user/kyc_linkhevn account kycCreate or fetch a KYC link.
GET/user/kyc/statushevn account kyc --statusFetch KYC status for a provider.
GET/balancehevn account listFetch app balance accounts.
KYC status query:
GET /user/kyc/status?provider=swipelux
KYB endpoints are available in the generated OpenAPI reference for direct REST integrations. The CLI does not currently expose a dedicated KYB command flow.
Profile update example:
{
  "firstName": "Ada",
  "lastName": "Lovelace",
  "entityName": "Example Ltd",
  "address": {
    "streetAddress": "1 Example Street",
    "city": "London",
    "country": "GB",
    "zip": "SW1A1AA"
  }
}

Contacts

MethodEndpointCLI surfacePurpose
GET/user/contactshevn contacts listList contacts.
POST/user/contacthevn contacts newCreate a contact.
PATCH/user/contacts/{contact_id}hevn contacts new --contact-id ...Update contact metadata.
DELETE/user/contacts/{contact_id}hevn contacts deleteDelete a contact.
POST/user/contact/bank/validatehevn banks validateValidate bank account details.
List contacts query:
GET /user/contacts?limit=100&offset=0
Email contact payload:
{
  "name": "Vendor",
  "relationship": "external",
  "account": {
    "accountType": "email",
    "email": "vendor@example.com"
  }
}
On-chain contact payload:
{
  "name": "Treasury wallet",
  "relationship": "external",
  "account": {
    "accountType": "onchain",
    "email": "owner@example.com",
    "walletAddress": "0x0000000000000000000000000000000000000000",
    "chainId": "base",
    "currency": "USDC"
  }
}
Bank validation payload:
{
  "bankType": "sepa",
  "country": "DE",
  "bankName": "Example Bank",
  "iban": "DE89370400440532013000",
  "bic": "DEUTDEFF",
  "routingNumber": null
}

Documents

MethodEndpointCLI surfacePurpose
POST/documents/uploadhevn invoice upload-incoming, hevn contracts new --document-pathUpload an invoice or contract document.
Document upload payload:
{
  "base64": "<base64-document-bytes>",
  "type": "invoice",
  "name": "invoice",
  "originName": "invoice.pdf",
  "context": "invoice"
}
For contracts, the CLI sends type: "contract" and context: "contract".

Invoices

MethodEndpointCLI surfacePurpose
GET/documents/contracts/invoiceshevn invoice list, hevn billsList invoices.
GET/documents/contracts/invoices/{invoice_id}hevn invoice getFetch invoice details.
POST/documents/contracts/invoiceshevn invoice newCreate an invoice.
POST/documents/contracts/invoices/uploadedhevn invoice upload-incomingCreate an invoice from an uploaded document.
PUT/documents/contracts/invoices/{invoice_id}hevn invoice declineUpdate invoice state.
POST/documents/contracts/{contract_id}/create-invoicehevn invoice new --contract-idCreate an invoice from a contract.
POST/documents/contracts/invoices/batch_invoicinghevn invoice batchGenerate invoices for multiple contracts.
Create invoice payload example:
{
  "currency": "USD",
  "contractorEmail": "vendor@example.com",
  "contractorDisplayName": "Vendor",
  "clientEmail": "client@example.com",
  "clientDisplayName": "Client Company",
  "clientAddress": {
    "streetAddress": "1 Example Street",
    "city": "London",
    "country": "GB",
    "zip": "SW1A1AA"
  },
  "items": [
    {
      "name": "Consulting",
      "quantity": 1,
      "price": 100
    }
  ],
  "invoicePrefix": "INV",
  "onchain": true,
  "dueDate": "2026-06-01"
}
Create from contract payload example:
{
  "contractorAddress": {
    "streetAddress": "1 Example Street",
    "city": "London",
    "country": "GB",
    "zip": "SW1A1AA"
  },
  "invoicePrefix": "INV",
  "periodStart": "2026-06-01",
  "addItems": [
    {
      "name": "Extra support",
      "quantity": 1,
      "price": 250
    }
  ]
}
Batch invoicing payload:
[
  {
    "contractId": "contract_123",
    "period": 0,
    "memo": "May payroll",
    "items": [
      {
        "name": "Monthly services",
        "quantity": 1,
        "price": "5000"
      }
    ]
  }
]

Contracts

MethodEndpointCLI surfacePurpose
GET/documents/contractshevn contracts list, hevn contractors listList contracts.
GET/documents/contracts/{contract_id}hevn contracts getFetch a contract.
GET/documents/contracts/{contract_id}/previewhevn contracts previewPreview resolved contract fields and document text.
GET/documents/contracts/templateshevn contracts generate, hevn hireList available contract templates.
POST/documents/contractshevn contracts new, hevn contracts generate, hevn hireCreate a contract.
PATCH/documents/contracts/{contract_id}hevn contracts updateUpdate contract fields and schedule.
POST/documents/contracts/{contract_id}/pausehevn contracts pausePause a contract.
POST/documents/contracts/{contract_id}/approvehevn contracts approveApprove a contract.
PUT/documents/contracts/{contract_id}/payment_methodshevn contracts payment-methodsReplace contract payment methods.
DELETE/documents/contracts/{contract_id}hevn contracts deleteDelete a contract.
Create contract payload example:
{
  "contractorEmail": "contractor@example.com",
  "type": "default_contractor",
  "fields": {
    "amount": "5000",
    "currency": "USD",
    "jobTitle": "Engineer",
    "scopeDescription": "Full-time engineering work"
  },
  "period": "monthly",
  "activationAt": "2026-05-01T00:00:00Z",
  "label": "contractor@example.com - Contractor Agreement",
  "priorityMethods": ["internal"],
  "requireSignature": false
}
Payment methods payload:
{
  "paymentMethods": [
    {
      "accountType": "email",
      "email": "contractor@example.com"
    }
  ]
}

Transactions

MethodEndpointCLI surfacePurpose
GET/transactionshevn transfer list, hevn pending-depositsList transactions.
Transaction query parameters used by the CLI:
GET /transactions?limit=50&offset=0&type=ach,fedwire&status=pending&incomeOnly=true&bankAccountId=bank_123

Banks and quotes

MethodEndpointCLI surfacePurpose
GET/bankshevn banks list, bank payout selectionList banks and available rails.
POST/banks/activateBank payout flowActivate bank rails.
POST/balance/payin/quotehevn depositCreate crypto deposit quote.
POST/banks/payin/quotehevn deposit --from bankCreate bank pay-in quote.
POST/banks/payin/quote/submithevn deposit --from bankSubmit bank pay-in quote.
POST/balance/payout/quotehevn transfer contact for bank contactsCreate payout quote.
Pay-in quote payload:
{
  "amount": 100,
  "currency": "USDC",
  "originChainId": "base"
}
Bank pay-in quote payload:
{
  "amount": 100,
  "bankAccountId": "bank_123",
  "memo": "Funding treasury"
}
Payout quote payload:
{
  "contactId": "contact_123",
  "amount": 25,
  "bankAccountId": "bank_123"
}

Cards

MethodEndpointCLI surfacePurpose
GET/cardshevn cards list, hevn cards statusList cards and card readiness state.
POST/cardsHidden hevn cards issueCreate a card.
GET/cards/{card_id}Card-specific internal wrapperFetch a card.
POST/cards/{card_id}/detailsCard-specific internal wrapperRequest card details.
PUT/cards/{card_id}/labelCard-specific internal wrapperUpdate card label.
PUT/cards/{card_id}/limitCard-specific internal wrapperUpdate card limit.
POST/cards/{card_id}/freezeCard-specific internal wrapperFreeze a card.
POST/cards/{card_id}/unfreezeCard-specific internal wrapperUnfreeze a card.
POST/cards/kyc/linkhevn cards kyc-linkCreate or fetch card KYC link.
POST/cards/pre-approveCard list KYC prompt, hidden pre-approvePrepare card KYC or check card prerequisites.
Create card payload:
{
  "format": "virtual"
}
Update label payload:
{
  "label": "Team card"
}