Skip to content

company_missing_certificate

HTTP 400 type: validation_error param: device_id
{
"error": {
"type": "validation_error",
"code": "company_missing_certificate",
"message": "Company AWAIT 8 J.D.O.O. has no signing certificate. Upload one with POST /v1/certificates before fiscalizing.",
"param": "device_id",
"upstream": null,
"doc_url": "https://docs.fiskhub.com/errors/company_missing_certificate"
}
}

What happened

The company that owns this device has no signing certificate. Every message sent to the Tax Administration must be signed with a certificate whose subject OIB equals the company’s OIB, and there is nothing to sign with.

Nothing was fiscalized.

This normally means a company was created and its devices provisioned before the certificate step — a perfectly reasonable order to work in, but the certificate has to land before the first sale.

Should you retry?

No. Nothing changes until a certificate is uploaded.

The fix

Upload a PKCS#12 for the company:

Terminal window
curl -sS -X POST https://api.fiskhub.com/v1/certificates \
-H "Authorization: Bearer $FISKHUB_API_KEY" \
-F "company_id=3a5f2b18-7c4d-4e91-9a2b-6d8e0f1c3a57" \
-F "[email protected];type=application/x-pkcs12" \
-F "passphrase=$P12_PASSPHRASE" \
-F "label=FISKAL 1"

The subject OIB must equal the company’s OIB, or the upload is refused with hr.certificate_oib_mismatch.

Confirm it landed:

Terminal window
curl -sS -G https://api.fiskhub.com/v1/certificates \
-H "Authorization: Bearer $FISKHUB_API_KEY" \
--data-urlencode "company_id=3a5f2b18-7c4d-4e91-9a2b-6d8e0f1c3a57"

Fiscalization works from the next request onwards. Sales the machine stored while it was blocked can be submitted with their original occurred_at.

Certificates are per company, not per tenant

The Tax Administration rejects any message whose payload OIB differs from the signing certificate’s OIB (s005). Every company has its own OIB, so every company needs its own certificate.

A tenant with two companies needs two certificates. Uploading one for company A does not let company B fiscalize, and there is no fallback or inheritance — that is required by the regulation, not a policy choice.

Preventing it

Check certificate_status when a company is created and before its first site goes live:

Terminal window
curl -sS https://api.fiskhub.com/v1/companies \
-H "Authorization: Bearer $FISKHUB_API_KEY"

"certificate_status": "missing" means none of that company’s devices can fiscalize, whatever else is configured. The same field warns before a certificate expires — see certificate_expired.