BizKitHub
DocsAPI ReferenceOrganisation/bff/organisation/update-profile
postOrganisationAdmin BFF

/bff/organisation/update-profile

Updates organisation profile fields. All fields are optional — only provided fields are updated. Direct organisation columns (name, vatPayer, etc.) are updated in the organisation table. Configuration values (SMTP, branding, etc.) are updated in the key-value configuration store. SMTP passwords are write-only and never returned in the profile GET endpoint. Clears the cache after successful update.

OrganisationpostBffOrganisationUpdate-profile

Parameters

JSON body

Request body

application/json
namestringOptional

Organisation display name. Sanitized on save (disallowed chars removed, first letter capitalized). Changes propagate to email sender names, invoices, and all UI displays.

Length: 1255
descriptionstring | nullOptional
One of 2:
Variant 1
string

Free-form about text / profile description. Shown in admin org lists. Null to clear.

Length: 05000
Variant 2
null
emojistring | nullOptional
One of 2:
Variant 1
string

Organisation emoji icon (e.g. "🏢"). Shown in org switcher, account detail, and terminal. Null to clear (system may auto-generate one via AI).

Length: 016
Variant 2
null
companyRegistrationNumberstring | nullOptional
One of 2:
Variant 1
string

Company registration number (IČO). Printed on invoices/receipts. Used for ARES lookup and Firmy.cz feed.

Length: 050
Variant 2
null
taxIdentificationNumberstring | nullOptional
One of 2:
Variant 1
string

Tax identification number (DIČ). Printed on invoices/receipts. Used in invoice exports for accounting.

Length: 050
Variant 2
null
vatPayerbooleanOptional

VAT payer flag. When true, invoices include VAT rates on line items and fraud checks run against the unreliable payer list. When false, all invoice items use 0% VAT.

countryIdnumber | nullOptional
One of 2:
Variant 1
number

Primary HQ country (from GET /organisation/available-countries). Stored on cas__organisation.country_id. Drives per-country security posture (firewall rules, geo-risk scoring). Distinct from accountingCountryId — usually the same, but a multinational can invoice from a different jurisdiction. Null clears the HQ country.

Variant 2
null
accountingCountryIdnumber | nullOptional
One of 2:
Variant 1
number

Accounting / tax jurisdiction country (from GET /organisation/available-countries). Stored on cas__organisation.accounting_country_id and mirrored to the organisation's internal contact (shop__contact.company_country_id). Drives legal form picker scoping and country-specific VAT rules. Null clears the accounting country.

Variant 2
null
legalFormIdnumber | nullOptional
One of 2:
Variant 1
number

Legal form ID (from GET /organisation/legal-forms?countryId=X). Must belong to accountingCountryId — the API rejects mismatched country/legalForm pairs. When provided without accountingCountryId, the accounting country is auto-aligned to the legal form's country. Mirrored to the internal contact. Null clears the legal form.

Variant 2
null
timezoneIdnumberOptional

Default timezone ID (from GET /organisation/timezones). Used to format dates in email notifications and calendar event times. If a calendar has no specific timezone, this org default is used.

primaryLocaleIdnumberOptional

Primary locale ID (from GET /organisation/available-locales). Used as default language for: new contacts without a locale preference, email template rendering, and newsletter digest post selection.

defaultCurrencystringOptional

Requested default currency ISO 4217 code (e.g. "CZK"). Changing the default currency is NOT performed through this endpoint: if the provided code differs from the current default, the change is rejected, a warning is logged, and a technical notification is sent to the organisation asking them to contact BizKitHub technical support. Passing the current code is a no-op.

Length: 33
ExampleCZK
supportPersonIdnumber | nullOptional
One of 2:
Variant 1
number

Internal member ID of the designated support contact (from GET /organisation/members). Informational field shown in the org profile. Null to unset.

Variant 2
null
logoUrlstring | nullOptional
One of 2:
Variant 1
string

Logo URL displayed in the header of all email templates and in the account org list. If null, the logo section is hidden in emails. Can also be set via /bff/emailer/layout-link-logo-blob.

Variant 2
null
printLogoUrlstring | nullOptional
One of 2:
Variant 1
string

Logo URL optimized for print (invoices, receipts, contracts, PDFs). If null, the standard logoUrl is used as fallback. Can also be set via /bff/organisation/link-print-logo-blob.

Variant 2
null
primaryColorstring | nullOptional
One of 2:
Variant 1
string

Primary brand hex color (e.g. "#1a2b3c"). Must be a valid 3 or 6 digit hex with leading #. Invalid values are silently discarded (treated as null).

Variant 2
null
secondaryColorstring | nullOptional
One of 2:
Variant 1
string

Secondary brand hex color (e.g. "#f0f0f0"). Must be a valid 3 or 6 digit hex with leading #. Invalid values are silently discarded (treated as null).

Variant 2
null
supportEmailstring | nullOptional
One of 2:
Variant 1
stringemail

Default "From" address for all transactional emails (orders, calendar, accounts, system alerts). If null, falls back to the org internal contact email, then "info@brj.cz".

Variant 2
null
supportEmailMarketingstring | nullOptional
One of 2:
Variant 1
stringemail

Override "From" address for newsletter/marketing emails only. If null, marketing emails use supportEmail. Useful for separating marketing sender reputation from transactional.

Variant 2
null
emailerFooterstring | nullOptional
One of 2:
Variant 1
string

Custom HTML footer for all outgoing emails. Typically company info, legal disclaimers, unsubscribe links. If null, a default footer is auto-generated with the org name.

Variant 2
null
emailerLayoutstring | nullOptional
One of 2:
Variant 1
string

Custom Handlebars HTML email wrapper template. Variables: {{ htmlBody }}, {{ logoUrl }}, {{ footer }}. Conditionals: {{ if logoUrl }}…{{ /if }}. If null, uses the built-in default template.

Variant 2
null
emailerSmtpHoststring | nullOptional
One of 2:
Variant 1
string

SMTP server hostname for transactional emails (e.g. "smtp.gmail.com"). Required to enable email sending. Validated during initial setup via test email.

Variant 2
null
emailerSmtpPortstring | nullOptional
One of 2:
Variant 1
string

SMTP port. "587" for STARTTLS (recommended), "465" for implicit SSL. Stored as string.

Variant 2
null
emailerSmtpUserstring | nullOptional
One of 2:
Variant 1
string

SMTP auth username for transactional emails. Usually the email address itself.

Variant 2
null
emailerSmtpPasswordstring | nullOptional
One of 2:
Variant 1
string

SMTP auth password for transactional emails. Write-only — never returned in GET profile. Show as a password field with "unchanged" placeholder in the UI.

Variant 2
null
emailerMarketingSmtpHoststring | nullOptional
One of 2:
Variant 1
string

Separate SMTP hostname for marketing/newsletter bulk emails (e.g. SendGrid, Mailchimp SMTP). If null, marketing emails fall back to the transactional SMTP.

Variant 2
null
emailerMarketingSmtpPortstring | nullOptional
One of 2:
Variant 1
string

SMTP port for marketing server. "587" for STARTTLS, "465" for SSL.

Variant 2
null
emailerMarketingSmtpUserstring | nullOptional
One of 2:
Variant 1
string

SMTP auth username for marketing email server.

Variant 2
null
emailerMarketingSmtpPasswordstring | nullOptional
One of 2:
Variant 1
string

SMTP auth password for marketing emails. Write-only — never returned in GET profile.

Variant 2
null
emailerNewsletterReturnUrlstring | nullOptional
One of 2:
Variant 1
string

Redirect URL after newsletter subscription confirmation click. E.g. "/newsletter-thanks". If null, no redirect — API returns success response directly.

Variant 2
null
smsSluzbaCzLoginstring | nullOptional
One of 2:
Variant 1
string

sms-sluzba.cz account login (username). Together with smsSluzbaCzPassword it forms the credentials passed to the apixml30 gateway as query parameters. Both must be set for outgoing SMS to work.

Variant 2
null
smsSluzbaCzPasswordstring | nullOptional
One of 2:
Variant 1
string

sms-sluzba.cz account password / API key. Write-only — never returned in GET profile. Show as a password field with "unchanged" placeholder in the UI.

Variant 2
null
smsSluzbaCzDefaultSenderstring | nullOptional
One of 2:
Variant 1
string

Optional default sender label (numeric msisdn or alphanumeric brand) attached to outgoing SMS when the caller does not pass one explicitly.

Variant 2
null
orderInternalNotificationEmailsstring | nullOptional
One of 2:
Variant 1
string

Comma-separated emails that receive BCC copies of all order status change emails. Internal team is notified when orders are created, paid, shipped, cancelled, etc.

Variant 2
null
orderRefundStrategystring | nullOptional
One of 2:
Variant 1
string

Default refund handling on order storno. "credit" = return as store credit (default). "cash" = generate credit note + manual bank refund. "none" = no refund. Overridable per storno.

Variant 2
null
orderAccountingModestring | nullOptional
One of 2:
Variant 1
string

Credit note auto-generation on cash refunds. "auto"/"always" = auto-generate credit note linked to original invoice. "never" = skip, handle manually. Only applies when strategy is "cash" and order was paid.

Variant 2
null
logInternalNotificationEmailsstring | nullOptional
One of 2:
Variant 1
string

Comma-separated emails for system error alerts. Receive: (1) daily aggregated log reports with CRITICAL/ERROR/WARNING counts, (2) real-time individual critical error notifications. Separate from order notifications.

Variant 2
null
postDigestEnabledbooleanOptional

Master switch for automatic newsletter digest. When enabled, a cron job periodically sends a digest of recent blog posts to all contacts with active newsletter subscriptions.

postDigestIntervalDaysnumber | nullOptional
One of 2:
Variant 1
number

Days between digest sends. Cron checks: if (now - lastSent) >= interval, send. Default 14.

Range: 1365
Variant 2
null
postDigestSubjectstring | nullOptional
One of 2:
Variant 1
string

Handlebars subject template. Variables: {{ postCount }}, {{ intervalDays }}. Default: "Nové články ({{ postCount }})" → "Nové články (5)".

Variant 2
null
postDigestIntroTextstring | nullOptional
One of 2:
Variant 1
string

Custom HTML intro text before the article list in the digest email. Rendered as raw HTML. Null to omit.

Variant 2
null
postDigestLocalestring | nullOptional
One of 2:
Variant 1
string

Override locale for post selection (e.g. "cs"). Only posts in this locale are included. Falls back to primary locale.

Length: 22
Variant 2
null
postDigestMaxPostsnumber | nullOptional
One of 2:
Variant 1
number

Max posts per digest. Starred posts first, then by recency. Default 20.

Range: 1100
Variant 2
null
paymentRecurringEnabledbooleanOptional

Enable Comgate recurring payment charging. When true, allows card tokenization on first payment and automatic subsequent charges without customer re-auth. Required for subscription billing.

customerCreditDefaultExpirationstring | nullOptional
One of 2:
Variant 1
string

Default expiration for new customer credit records, in days (e.g. "365"). Applied when credit is issued via refund or manual addition. Expired credit cannot be used. Null = no expiration.

Variant 2
null

Response schema

1 status code documented

200Success
successbooleanRequired

Whether the update was successful.

Response example

application/json
{
  "success": false
}

Request example

POST /bff/organisation/update-profile

post
curl -X POST "https://api.bizkithub.com/bff/organisation/update-profile" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "name": "example_name",
  "vatPayer": false,
  "timezoneId": 0,
  "primaryLocaleId": 0,
  "defaultCurrency": "CZK",
  "postDigestEnabled": false,
  "paymentRecurringEnabled": false
}'

Need an API key?

All BizKitHub public API endpoints require authentication via API key.

Get API Key