Developer documentation

Create customer

post https://app.iteras.dk/api/customers/createcustomer/

The /api/customers/createcustomer/ endpoint creates a new customer.

For situations where a customer is actually putting in an order, you can also use the place order API instead to get an order registered in Iteras and let that create both the customer and the subscription.

Parameters

  • id string
    Optional ID to force the customer to be created with. If the ID is provided and a customer with that ID already exists, an error is returned. If you instead want the customer updated, use the update customer endpoint with create set.
  • data object
    The customer attributes, e.g. {"name": "Customer Name", "email": "john@example.com", "country": "NO"}. Valid attributes are the built-in ones and the customer fields setup inside Iteras for the account. You should usually include a country. Otherwise it may not be possible to invoice the customer because tax rules depend on knowing the country.
  • use_external_lookup boolean Defaults to true
    Passed as a query parameter, e.g. ?use_external_lookup=0. Set to false or 0 if you don't want e-invoice recipients, VAT organization IDs and similar to be validated via external services.

You can set these built-in customer fields in data:

  • name, company, address and country
  • email
  • billing_name, billing_company, billing_address, billing_country and billing_email
  • password - you can't retrieve it in clear text afterwards as it goes through a hash
  • created

Note that a few of these fields have a different name in the retrieval API for backwards compatibility.

You can set any custom customer field, using its field id (the field name with a colon prepended, or its external identifier).

Log in, or send your API key as a bearer token, to see the custom customer fields set up for your account.

Examples

Create a customer with an ID chosen by Iteras:

POST /api/customers/createcustomer/ HTTP/1.1
Content-Type: application/json{
  "data": {
    "name": "Customer Name",
    "email": "foo@example.com",
    "country": "DK",
    "password": "secret",
    "created": "2025-10-09T01:34:17",
    "tax_registration_id": "DK35681558",
    ":Custom field": "Eksempeltekst",
    ":Custom date field": "2026-09-09"
  }
}

The endpoint returns the ID of the new customer:

{ "id": "6493264" }

To create the customer with a specific ID, pass id:

POST /api/customers/createcustomer/ HTTP/1.1
Content-Type: application/json{
  "id": "12345",
  "data": {
    "name": "Customer Name",
    "email": "foo@example.com",
    "country": "DK"
  }
}

An invalid field value returns an error as described below.

Errors

Invalid requests due to programming error, e.g. invalid JSON, returns 400.

A well-formed operation where a supplied value is invalid is not executed and returns an HTTP 422 error. The response is a JSON object with the errors keyed by the field they concern, e.g. a custom date field:

{
  ":Custom date field": ["Enter a valid date."]
}

Errors that are not specific to a field are returned with the empty string as key:

{
  "": ["Customer already exists."]
}