Skip to main content
POST
Creates a contract

Authorizations

Authorization
string
header
required

OAuth2 Bearer Authorization

Body

application/json

Creates a contract. Required permission: crm:contracts:create. Available contexts: API Key

business
boolean
default:false
required

Is business customer

salutation
enum<string>
required

Salutation code for the contract holder. New private/business registrations only accept {1, 2, 3, 8}.

Available options:
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
firstname
string
required

Firstname

Maximum string length: 70
surname
string
required

Surname

Maximum string length: 70
street
string
required

Street

Maximum string length: 255
house_number
string
required

House number

Maximum string length: 16
zip
string
required

Postal code of the contract holder's primary address. Length and format are validated against country_id — invalid combinations are rejected.

Maximum string length: 16
city
string
required

City

Maximum string length: 128
country_id
integer<int32>
required

Country id

billing_salutation
enum<string>
required

Salutation code for the billing recipient. Same value set as salutation.

Available options:
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
billing_firstname
string
required

Billing firstname

Maximum string length: 70
billing_surname
string
required

Billing surname

Maximum string length: 70
billing_street
string
required

Billing street

Maximum string length: 255
billing_house_number
string
required

Billing house number

Maximum string length: 16
billing_zip
string
required

Billing ZIP

Maximum string length: 16
billing_city
string
required

Billing city

Maximum string length: 128
billing_email
string
required

Billing email

Maximum string length: 128
billing_phone
string
required

Billing phone

Maximum string length: 128
ext_contract_id
string

Contract identifier as known by an external CRM. This is the primary field used to match ChargeCloud contracts to records in upstream systems (EDI feeds, partner integrations, migrations). Max 50 chars.

Maximum string length: 50
external_customer_id
string

Caller-supplied identifier used to link the customer to an external CRM record. Validation rules can differ per customer group (regex / prefix), so the same value may be accepted for one customer group and rejected for another. Max 15 chars.

Maximum string length: 15
customer_group_id
integer<int32>

Customer group id

company_name
string

Company name

Maximum string length: 255
title
string

Title

Maximum string length: 50
date_of_birth
string<date>

Date of birth

Pattern: ^\d{4}-\d{2}-\d{2}$
phone_home
string

Home phone number

Maximum string length: 50
phone_home_area_code
string

Home phone area code

Maximum string length: 10
phone_mobile
string

Mobile phone number

Maximum string length: 50
phone_mobile_area_code
string

Mobile phone area code

Maximum string length: 10
phone_business
string

Business phone number

Maximum string length: 50
phone_business_area_code
string

Business phone area code

Maximum string length: 10
email_private
string

Private email

Maximum string length: 255
email_business
string

Business email

Maximum string length: 255
reference_field_1
string

Free-text client-configurable reference. Common use cases include TecDoc identifiers, HC (Hauptkunde) numbers, cost centres, purchase-order numbers, and project IDs. No semantic enforcement by the system.

Maximum string length: 255
reference_field_2
string

Second free-text client-configurable reference, parallel to reference_field_1. Same use cases (TecDoc, HC, cost centres, etc.) — provided as a second slot when one reference is not enough.

Maximum string length: 255
billing_company
string

Billing company

Maximum string length: 255
billing_title
string

Billing title

Maximum string length: 70
billing_country_id
integer<int32>

Billing country id

auth_username
string

App login username

Maximum string length: 255
auth_password
string

Auth password

Maximum string length: 128
advertising_agreement_mail
boolean
default:false

Advertising agreement mail

advertising_agreement_phone
boolean
default:false

Advertising agreement phone

advertising_agreement_email
boolean
default:false

Advertising agreement email

accept_current_agb
boolean
default:false

Accept current AGB

accept_current_privacy_policy
boolean
default:false

Accept current privacy policy

vat_identification_number
string

VAT identification number of the business customer. Required for B2B contracts unless a tax_code is supplied instead. Format and check-digit rules apply per country (e.g. DE: "DE" + 9 digits, IT: 11 digits) — invalid values are rejected with HTTP 422.

Maximum string length: 50
tax_code
string

Tax code

Maximum string length: 50
simulation
boolean
default:false

When true, the contract is fully validated and the same response shape is returned, but nothing is saved and no follow-up actions (notifications, downstream sync, emails) are triggered. Use this to pre-validate customer input before the real submission.

start_date
string<date>

Start date

Pattern: ^\d{4}-\d{2}-\d{2}$
attributes
string

JSON-encoded map of contract attributes (e.g. {"attribute_key":"value", ...}). Keys and value types are configured per client — see the Attributes API for the available set. Unknown keys are rejected; optional attributes fall back to their configured default when omitted.

Response

Contract created

contract
object
required

Contract

customer_id
integer<int32>

Customer ID

external_customer_id
string

External customer ID

mail_verification_needed
boolean
default:false

Mail verification needed

contract_confirmation_needed
boolean
default:false

Contract confirmation needed