Siirry sisältöön

Korttimaksulinkit

Korttimaksulinkit mahdollistavat laskujen maksamisen kortilla. Voit luoda maksulinkin mille tahansa laskulle ja jakaa sen asiakkaallesi.

┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Kirjapro │────▶│ create-payment- │────▶│ Stripe API │
│ (luo linkki) │ │ link │ │ (payment link) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
┌───────────────────────────────────────────────┘
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Asiakas │────▶│ Stripe │────▶│ stripe-invoice- │
│ (maksaa) │ │ Checkout │ │ webhook │
└─────────────────┘ └──────────────────┘ └─────────────────┘
┌─────────────────┐
│ Lasku merkitään │
│ maksetuksi │
└─────────────────┘
  1. Luo maksulinkki — Avaa lasku ja klikkaa “Luo maksulinkki”
  2. Jaa linkki — Kopioi linkki ja lähetä asiakkaallesi (sähköposti, chat, jne.)
  3. Asiakas maksaa — Asiakas avaa linkin ja maksaa kortilla Stripen turvallisella maksusivulla
  4. Automaattinen päivitys — Maksun jälkeen lasku merkitään automaattisesti maksetuksi

Maksulinkki luodaan laskun tiedot -sivulla:

  1. Avaa lasku kohdasta Laskut → valitse lasku
  2. Klikkaa Luo maksulinkki -painiketta
  3. Linkki kopioidaan automaattisesti leikepöydälle
  4. Jos linkki on jo luotu, näet Kopioi maksulinkki -painikkeen
const response = await fetch(
`${SUPABASE_URL}/functions/v1/create-payment-link`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'apikey': SUPABASE_ANON_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
companyId: 'uuid',
invoiceId: 'uuid',
amount: 1240.00,
invoiceNumber: '2025-001',
customerName: 'Asiakas Oy'
}),
}
);
const { paymentUrl, paymentToken } = await response.json();
KenttäTyyppiPakollinenKuvaus
companyIdUUIDKylläYrityksen ID
invoiceIdUUIDKylläLaskun ID
amountnumberKylläSumma euroina (min. 0.50, max. 999 999.99)
invoiceNumberstringKylläLaskun numero (näytetään maksusivulla)
customerNamestringKylläAsiakkaan nimi (näytetään maksusivulla)
{
"success": true,
"paymentUrl": "https://buy.stripe.com/...",
"paymentToken": "abc123...",
"existing": false
}
KenttäKuvaus
paymentUrlStripen maksulinkin URL — jaa tämä asiakkaalle
paymentTokenUniikki tunniste maksulinkin seurantaan
existingtrue jos palautettiin olemassa oleva aktiivinen linkki
TilaMerkitys
activeLinkki on aktiivinen ja odottaa maksua
paidAsiakas on maksanut — lasku päivitetty automaattisesti
expiredLinkki on vanhentunut (30 päivää luomisesta)
cancelledLinkki on peruutettu

Maksulinkkien maksutapahtumat käsitellään erillisellä stripe-invoice-webhook -endpointilla (eri kuin tilausten webhook). Webhook:

  1. Vastaanottaa checkout.session.completed -tapahtuman
  2. Yhdistää maksun invoice_payment_links -taulun tietoihin
  3. Päivittää maksulinkin tilan (activepaid)
  4. Merkitsee laskun maksetuksi (status: 'paid', paid_date)
  5. Tallentaa Stripe Payment Intent ID:n
  • Minimisumma: 0,50 EUR
  • Maksimisumma: 999 999,99 EUR
  • Linkin voimassaolo: 30 päivää
  • Peruutettuja (cancelled) tai maksettuja (paid) laskuja ei voi linkittää
  • Vaatii Yrittäjä-paketin tai ylemmän
KoodiViestiRatkaisu
INVOICE_NOT_FOUNDLaskua ei löydyTarkista laskun ID
INVOICE_ALREADY_PAIDLasku on jo maksettuEi voi luoda maksulinkkiä
INVOICE_CANCELLEDLasku on peruutettuEi voi luoda maksulinkkiä
AMOUNT_TOO_LOWSumma alle 0,50 EURNosta summaa
AMOUNT_TOO_HIGHSumma yli 999 999,99 EURLaske summaa
FEATURE_NOT_AVAILABLEPaketti ei riitäPäivitä Yrittäjä-pakettiin
  • Maksulinkin token generoidaan kryptografisesti (URL-safe base64, 24 tavua)
  • Yrityksen jäsenyys tarkistetaan ennen linkin luomista
  • Laskun omistajuus varmistetaan (lasku kuuluu yritykselle)
  • Stripe-maksusivu on PCI DSS -yhteensopiva — korttitiedot eivät kulje Kirjapron kautta