Siirry sisältöön

Virhekoodi­referenssi

Tämä sivu dokumentoi kaikki Kirjapro API:n palauttamat virhekoodit.

{
"success": true,
"data": { ... }
}
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Ihmisluettava virhekuvaus",
"details": { ... }
}
}
KoodiMerkitysToimenpide
200Onnistui-
201LuotuResurssi luotu onnistuneesti
400Virheellinen pyyntöTarkista pyynnön rakenne
401Ei autentikoituUusi access token
403Ei oikeuksiaTarkista käyttöoikeudet
404Ei löydyTarkista resurssin ID
422ValidointivirheKorjaa data ja yritä uudelleen
429Liikaa pyyntöjäOdota ja yritä uudelleen
500PalvelinvirheOta yhteyttä tukeen
KoodiViestiRatkaisu
AUTH_TOKEN_EXPIREDToken vanhentunutHae uusi token supabase.auth.refreshSession()
AUTH_TOKEN_INVALIDVirheellinen tokenKirjaudu uudelleen
AUTH_TOKEN_MISSINGToken puuttuuLisää Authorization-header
AUTH_INSUFFICIENT_PERMISSIONSRiittämättömät oikeudetTarkista käyttäjärooli
KoodiViestiRatkaisu
VALIDATION_BUSINESS_IDVirheellinen Y-tunnusMuoto: 1234567-8
VALIDATION_IBANVirheellinen IBANSuomi: FI + 16 numeroa
VALIDATION_REFERENCEVirheellinen viitenumero4-20 numeroa, tarkiste oikein
VALIDATION_EMAILVirheellinen sähköpostiTarkista muoto
VALIDATION_REQUIREDPakollinen kenttä puuttuuKatso details.field
VALIDATION_FORMATVäärä muotoKatso details.expected
KoodiViestiRatkaisu
FISCAL_YEAR_LOCKEDTilikausi on lukittuAvaa tilikausi ennen muokkausta
FISCAL_YEAR_NOT_FOUNDTilikautta ei löydyLuo tilikausi ensin
BALANCE_MISMATCHKirjaus ei tasapainotaDebet = Kredit
INVOICE_ALREADY_SENTLasku jo lähetettyEi voi lähettää uudelleen
INVOICE_NOT_READYLasku ei valmisTäytä pakolliset kentät
CUSTOMER_NOT_FOUNDAsiakasta ei löydyTarkista asiakas-ID
ACCOUNT_NOT_FOUNDTiliä ei löydyTarkista tilinumero
KoodiViestiRatkaisu
APIX_AUTH_FAILEDAutentikointi epäonnistuiTarkista API-avaimet asetuksista
APIX_RECIPIENT_NOT_FOUNDVastaanottajaa ei löydyTarkista OVT-tunnus ja operaattori
APIX_INVALID_INVOICEVirheellinen laskuValidoi Finvoice XML
APIX_RATE_LIMITEDLiikaa pyyntöjäOdota hetki
KoodiViestiRatkaisu
STRIPE_CUSTOMER_NOT_FOUNDAsiakasta ei löydyKäyttäjän tulee ensin tehdä tilaus
STRIPE_SUBSCRIPTION_INACTIVETilaus ei aktiivinenTarkista tilauksen tila
STRIPE_WEBHOOK_INVALIDVirheellinen webhookTarkista allekirjoitus
INVALID_PRICE_IDVirheellinen hinta-IDTarkista Stripe-konfiguraatio
PORTAL_SESSION_FAILEDPortaali-istunto epäonnistuiKokeile uudelleen
KoodiViestiRatkaisu
INVOICE_NOT_FOUNDLaskua ei löydyTarkista laskun ID
INVOICE_ALREADY_PAIDLasku on jo maksettuMaksulinkkiä ei voi luoda
INVOICE_CANCELLEDLasku on peruutettuMaksulinkkiä ei voi luoda
AMOUNT_TOO_LOWSumma alle 0,50 EURNosta summa vähintään 0,50 euroon
AMOUNT_TOO_HIGHSumma yli 999 999,99 EURLaske summaa
FEATURE_NOT_AVAILABLEPaketti ei riitäPäivitä Yrittäjä-pakettiin

Kun ylität pyyntörajan:

{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Liian monta pyyntöä",
"details": {
"retryAfter": 60
}
}
}

Suositeltu käsittelytapa:

async function apiCall(fn: () => Promise<Response>, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fn();
if (response.ok) return response.json();
// Älä yritä uudelleen client-virheillä
if (response.status >= 400 && response.status < 500 && response.status !== 429) {
throw new Error(`Client error: ${response.status}`);
}
// Rate limit - odota
if (response.status === 429) {
const data = await response.json();
const wait = data.error?.details?.retryAfter || 60;
await new Promise(r => setTimeout(r, wait * 1000));
continue;
}
// Server-virhe - exponential backoff
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
}
throw new Error('Max retries exceeded');
}

Suosittelemme lokittamaan virheet debuggausta varten:

if (!result.success) {
console.error('API Error:', {
code: result.error.code,
message: result.error.message,
details: result.error.details,
endpoint: '/functions/v1/...',
timestamp: new Date().toISOString()
});
}

Jos kohtaat odottamattoman virheen, ota yhteyttä:

  • Sähköposti: tuki@kirjapro.fi
  • Liitä mukaan: virhekoodi, aikaleima, pyynnön tiedot