Get started
API Endpoint (repleace your-instance with your faktorly instance):
https://your-instance.faktorly.cloud/api/
Welcome to the faktorly REST API documentation. Our REST API allows developers to integrate faktorly’s robust functionality into their own applications, enabling seamless data management and analytics capabilities.
To use this API, you need an API key. You may setup this in your faktorly instance.
Authentification
# Here is a curl GET example with x-api-key authentification
curl \
-X GET "https://your-instance.faktorly.cloud/api/invoices/get/1" \
-H "x-api-key: xxx"
You need to send with each request a header tag "x-api-key" for authentification. You may setup your key in the settings of your faktorly instance -> System-Settings -> API.
x-api-key: xxx
Create Client
# Here is a curl example for client creation
curl -X POST "https://your-instance.faktorly.cloud/api/Clients/create" \
-H "x-api-key: xxx" \
-H "Content-Type: application/json" \
-d '{
"client_active": 1,
"client_name": "test test",
"client_surname": "",
"client_language": "system",
"client_number": "",
"client_invoices_comment": "Du zahlst per SEPA-Lastschrift.",
"client_invoices_due_after": 7,
"client_comment": "Created with API",
"client_address_1": "",
"client_address_2": "",
"client_zip": "",
"client_city": "",
"client_state": "",
"client_country": "DE",
"client_phone": "",
"client_fax": "",
"client_mobile": "",
"client_email": "test@whitedata.de",
"client_web": "",
"client_sepa_mndtId": "",
"client_sepa_dtOfSgntr": "",
"client_sepa_dbtr": "Testkonto Lastschrift",
"client_sepa_iban": "DE68721516500008252405",
"client_sepa_bic": "",
"client_sepa_sequence": 1,
"client_vat_id": "",
"client_tax_code": 1,
"client_gender": 0,
"client_birthdate": ""
}'
To create a new client you need to make a POST call to the following url :
https://your-instance.faktorly.cloud/api/Clients/create
Result example :
200 OK
{
"data":{
"id":"5142",
"name":"test test",
"message":"Client has been created"
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| client_active | Int | (required) 1 = active, 0 = inactive |
| client_name | String | (required) Name of Client |
| client_surname | String | Surname of Client: |
| client_language | String | ISO-Code. "system" for system language |
| client_number | String | Client Number, empty for auto |
| client_invoices_comment | String | Comment printed on invoice |
| client_invoices_due_after | Integer | Invoice due in x days |
| client_comment | String | Client Comment |
| client_address_1 | String | e.g. street |
| client_address_2 | String | |
| client_zip | String | ZIP Code |
| client_city | String | City |
| client_invoices_comment | String | Comment printed on invoice |
| client_state | String | state, e.g. BY |
| client_country | String | country, e.g. DE |
| client_phone | String | Phone Number |
| client_fax | String | Fax number |
| client_mobile | String | Mobile number |
| client_invoices_comment | String | Comment printed on invoice |
| client_email | String | E-Mail Address |
| client_web | String | Web address |
| client_sepa_mndtId | String | SEPA Debit Mandate ID |
| client_sepa_dtOfSgntr | String | SEPA Debit Mandate Date |
| client_sepa_dbtr | String | SEPA Debit Account Owner |
| client_sepa_iban | String | SEPA IBAN |
| client_sepa_bic | String | SEPA BIC |
| client_sepa_sequence | String | Sequence of sepa mandate (1 = first, 2 = recurring, 3 = once) |
| client_vat_id | String | VAT ID |
| client_tax_code | Integer | Client Tax Code ID, see in faktorly instance settings |
| client_gender | Integer | 0 = male, 1 = female, 3 = other |
| client_birthdate | String | Client birthdate YYYY-MM-DD |
Response / Result
You will receive a client ID within the response for the newly created client. You can use this for further requests, e.g., to create an invoice for this client.
Create Invoice
# Here is a curl example invoice creation
curl -X POST "https://your-instance.faktorly.cloud/api/invoices/create" \
-H "x-api-key: xxx" \
-H "Content-Type: application/json" \
-d '{
"client_id":"5143",
"number_range_id":2,
"user_id":1,
"invoice_date_created":"2023-01-04",
"invoice_password":"",
"invoice_date_due":"2023-01-11",
"invoice_status_id":1,
"items":[
{
"item_id":"",
"item_product_id":"",
"item_task_id":"",
"item_name":"Musterartikel",
"item_quantity":1,
"item_price":21,
"item_discount_amount":"",
"item_description":"Musterartikel Beschreibung",
"item_product_unit_id":"",
"item_order":1
}
],
"invoice_discount_amount":"",
"invoice_discount_percent":"",
"invoice_terms":"Du hast dich für die Zahlung per PayPal entschieden.",
"payment_method":4,
"invoice_account":"",
"invoice_tax_rate_id":"",
"invoice_year_estg":"",
"invoice_intro":"Lieber Kunde, wir bedanken uns für deinen Kauf."
}'
To create a new invoice you need to make a POST call to the following url:
https://your-instance.faktorly.cloud/api/invoices/create
Result example :
200 OK
{
"data":{
"status":200,
"id":"5548",
"message":"Invoice has been created"
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| client_id | Int | (required) client_id, see client creation request |
| number_range_id | Int | (required) ID of number range, see faktorly instance |
| user_id | Int | (required) User ID, see faktorly instance |
| invoice_date_created | Date | (required) Invoice Date YYYY-MM-DD |
| invoice_password | String | Password, if wanted |
| invoice_date_due | Date | Invoice Due Date YYYY-MM-DD |
| item_id | Integer | (empty) |
| item_product_id | Integer | ID of product |
| item_task_id | Integer | ID of task |
| item_name | String | Name of item |
| item_quantity | Integer | |
| item_price | Double | |
| item_description | String | Item Description |
| item_product_unit_id | Integer | Product Unit, see faktorly instance |
| item_order | Integer | Sequence |
| invoice_discount_amount | Double | |
| invoice_discount_percent | Double | |
| invoice_terms | String | Invoice Terms |
| client_invoices_comment | String | Comment printed on invoice |
| payment_method | Integer | ID of payment method, see faktorly instance |
| invoice_account | Integer | accounting account |
| invoice_tax_rate_id | Integer | ID of tax rate, see faktorly instance |
| invoice_year_estg | Date | YYYY |
| invoice_intro | String | Intro printed on invoice |
GET Invoice
# Here is a curl example invoice retrieval
curl -X GET "https://your-instance.faktorly.cloud/api/invoices/get/5548" \
-H "x-api-key: xxx"
To GET a invoice by invoice_id you need to make a GET call to the following url:
https://your-instance.faktorly.cloud/api/invoices/get/5548
Result example :
200 OK
{
"quote_id":null,
"invoice_id":"5548",
"user_id":"1",
"client_id":"5142",
"number_range_id":"2",
"invoice_group_id":null,
"quote_status_id":null,
"quote_date_created":null,
"quote_date_modified":null,
"quote_date_expires":null,
"quote_number":null,
"quote_discount_amount":null,
"quote_discount_percent":null,
"quote_url_key":null,
"quote_password":null,
"notes":null,
"quote_intro":null,
"user_gln":null,
"user_rcc":null,
"client_date_created":"2023-01-04 22:34:53",
"client_date_modified":"2023-01-04 22:34:53",
"client_name":"test test",
"client_address_1":"",
"client_address_2":"",
"client_city":"",
"client_state":"",
"client_zip":"",
"client_country":"DE",
"client_phone":"",
"client_fax":"",
"client_mobile":"",
"client_email":"test@whitedata.de",
"client_web":"",
"client_vat_id":"",
"client_tax_code":"1",
"client_language":"system",
"client_active":"1",
"client_surname":"",
"client_avs":null,
"client_insurednumber":null,
"client_veka":null,
"client_birthdate":"0000-00-00",
"client_gender":"0",
"client_number":"60142",
"client_comment":"API created",
"client_sepa_mndtId":"",
"client_sepa_dtOfSgntr":"0000-00-00",
"client_sepa_bic":"",
"client_sepa_dbtr":"Testkonto Lastschrift",
"client_sepa_iban":"DE68721516500008252405",
"client_sepa_sequence":"1",
"client_invoices_due_after":"7",
"client_invoices_comment":"Du zahlst per SEPA-Lastschrift",
"invoice_amount_id":"5548",
"invoice_item_subtotal":"21.0000",
"invoice_item_tax_total":"0.0000",
"invoice_tax_total":"3.9900",
"invoice_total":"24.99",
"invoice_paid":"0.00",
"invoice_balance":"24.99",
"invoice_sign":"1",
"is_overdue":"0",
"days_overdue":"-7",
"invoice_is_recurring":"0",
"invoice_status_id":"1",
"is_read_only":null,
"invoice_password":"",
"invoice_date_created":"2023-01-04",
"invoice_time_created":"00:00:00",
"invoice_date_modified":"2023-01-04 22:55:48",
"invoice_date_due":"2023-01-11",
"invoice_number":"KP215548",
"invoice_discount_amount":"0.00",
"invoice_discount_percent":"0.00",
"invoice_terms":"Du zahlst per SEPA-Lastschrift.",
"invoice_url_key":"nEoLjWGwDd5bNQ1",
"payment_method":"2",
"creditinvoice_parent_id":null,
"invoice_account":"4000",
"invoice_account_tax":"",
"invoice_posting_key":"",
"invoice_dunning_level":"0",
"invoice_dun_date":"0000-00-00",
"invoice_year_estg":"0",
"invoice_intro":"Lieber Kunde, wir bedanken uns für deinen Kauf.",
"invoice_sepa_debit_sent":"0",
"invoice_tax_rates":[
{
"invoice_tax_rate_name":"Umsatzsteuer normal (19%)",
"invoice_tax_rate_percent":"19.00",
"invoice_tax_rate_id":"5774",
"invoice_id":"5548",
"tax_rate_id":"1",
"include_item_tax":"0",
"invoice_tax_rate_amount":"3.99"
}
]
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| invoice_id | Int | ID of invoice |
RESULT PARAMETERS
| Field | Type | Description |
|---|---|---|
| quote_id | Int | ID of linked quote |
| invoice_id | Int | ID of invoice |
| client_id | Int | client_id, see client creation request |
| client_active | Int | (required) 1 = active, 0 = inactive |
| client_name | String | (required) Name of Client |
| client_surname | String | Surname of Client: |
| client_language | String | ISO-Code. "system" for system language |
| client_number | String | Client Number, empty for auto |
| client_invoices_comment | String | Comment printed on invoice |
| client_invoices_due_after | Integer | Invoice due in x days |
| client_comment | String | Client Comment |
| client_address_1 | String | e.g. street |
| client_address_2 | String | |
| client_zip | String | ZIP Code |
| client_city | String | City |
| client_invoices_comment | String | Comment printed on invoice |
| client_state | String | state, e.g. BY |
| client_country | String | country, e.g. DE |
| client_phone | String | Phone Number |
| client_fax | String | Fax number |
| client_mobile | String | Mobile number |
| client_invoices_comment | String | Comment printed on invoice |
| client_email | String | E-Mail Address |
| client_web | String | Web address |
| client_sepa_mndtId | String | SEPA Debit Mandate ID |
| client_sepa_dtOfSgntr | String | SEPA Debit Mandate Date |
| client_sepa_dbtr | String | SEPA Debit Account Owner |
| client_sepa_iban | String | SEPA IBAN |
| client_sepa_bic | String | SEPA BIC |
| client_sepa_sequence | String | Sequence of sepa mandate (1 = first, 2 = recurring, 3 = once) |
| client_vat_id | String | VAT ID |
| client_tax_code | Integer | Client Tax Code ID, see in faktorly instance settings |
| client_gender | Integer | 0 = male, 1 = female, 3 = other |
| client_birthdate | String | Client birthdate YYYY-MM-DD |
| user_id | Int | User ID, see faktorly instance |
| invoice_date_created | Date | Invoice Date YYYY-MM-DD |
| invoice_password | String | Password, if wanted |
| invoice_date_due | Date | Invoice Due Date YYYY-MM-DD |
| item_id | Integer | (empty) |
| item_product_id | Integer | ID of product |
| item_task_id | Integer | ID of task |
| item_name | String | Name of item |
| item_quantity | Integer | |
| item_price | Double | |
| item_description | String | Item Description |
| item_product_unit_id | Integer | Product Unit, see faktorly instance |
| item_order | Integer | Sequence |
| invoice_discount_amount | Double | |
| invoice_discount_percent | Double | |
| invoice_terms | String | Invoice Terms |
| client_invoices_comment | String | Comment printed on invoice |
| payment_method | Integer | ID of payment method, see faktorly instance |
| invoice_account | Integer | accounting account |
| invoice_tax_rate_id | Integer | ID of tax rate, see faktorly instance |
| invoice_year_estg | Date | YYYY |
| invoice_intro | String | Intro printed on invoice |
Create Subscription
# Here is a curl example subscription creation
curl -X POST "https://your-instance.faktorly.cloud/api/subscriptions/create" \
-H "x-api-key: xxx" \
-H "Content-Type: application/json" \
-d '{
"client_id": 2214,
"subscription_date_created": "2025-04-30",
"subscription_password": "",
"user_id": 1,
"number_range_id": 5,
"subscription_next_invoice_date": "2025-05-30",
"subscription_frequency": "1M",
"notes": "Test subscription",
"items": [
{
"item_id": 1,
"item_name": "Test Item",
"item_description": "Test Description",
"item_price": 100,
"item_quantity": 1,
"item_order": 1,
"item_tax_rate_id": 1
}
]
}
To create a new subscription you need to make a POST call to the following url:
https://your-instance.faktorly.cloud/api/subscriptions/create
Result example :
200 OK
{
"data":{
"status":200,
"id":"5548",
"message":"Subscription has been created"
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| client_id | Int | (required) client_id, see client creation request |
| number_range_id | Int | (required) ID of number range, see faktorly instance |
| user_id | Int | (required) User ID, see faktorly instance |
| subscription_date_created | Date | (required) Invoice Date YYYY-MM-DD |
| subscription_next_invoice_date | Date | Next Invoice Date YYYY-MM-DD |
| subscription_frequency | String | Subscription frequency, e.g. 1M, 1Y, 7d |
| notes | String | Subscription notes |
| item_id | Integer | (empty) |
| item_product_id | Integer | ID of product |
| item_task_id | Integer | ID of task |
| item_name | String | Name of item |
| item_quantity | Integer | |
| item_price | Double | |
| item_description | String | Item Description |
| item_product_unit_id | Integer | Product Unit, see faktorly instance |
| item_order | Integer | Sequence |
| invoice_discount_amount | Double | |
| invoice_discount_percent | Double | |
| invoice_terms | String | Invoice Terms |
| client_invoices_comment | String | Comment printed on invoice |
| payment_method | Integer | ID of payment method, see faktorly instance |
| invoice_account | Integer | accounting account |
| subscription_tax_rate_id | Integer | ID of tax rate, see faktorly instance |
| subscription_intro | String | Intro printed on invoices |
HTTP Response Status Codes
In each response, an HTTP response status code is included. Based on this status code, the result can be verified. The API provides the following categories of status codes:
| HTTP Response Status Codes | Meaning |
|---|---|
| 2xx Success | (e.g., 200 OK) |
| 4xx Client Error | (e.g., 400 BAD REQUEST) |
| 5xx Server Error | (e.g., 500 INTERNAL SERVER ERROR) |
Important Note
We will specify the status codes more precisely in the future. This means that some requests currently answered with "200 OK" (e.g., when creating a customer) will be replaced by the more detailed 2xx code (e.g., 201 CREATED when creating a customer). Therefore, we recommend that you check for 2xx codes in your implementations rather than specifically checking for 200 OK.
For more information on status codes, visit MDN Web Docs - HTTP Status Codes.