Bank invoices (krafa)
Let payers settle in their online bank. The claim is issued through your accounting provider and confirmed by webhook when paid.
A bank invoice is an Icelandic krafa: a claim that appears in the payer's online banking (netbanki) and is paid from there. There is no card and no email. Payers who prefer it are often companies and public bodies, and it is the natural fit for invoice-style purchases.
Borga does not talk to the banks itself. The claim is created by your accounting provider, which is why a connected PayDay account is required. DK+ does not expose bank claims through its API, so merchants on DK+ cannot offer this method yet.
Requirements
- PayDay connected in the current mode under Settings → Accounting system, with claim collection activated on the PayDay company. Borga checks this when you turn bank invoices on and refuses with
bank_invoice_unavailableuntil it is. - Bank invoices switched on under Settings → Bank invoice. The same page sets the due date (default 14 days) and whether the bank-invoice tab comes first or second on the checkout.
- A hosted session in ISK with
"bank_invoice"inenabled_methods. Bank claims are ISK only.
Sessions that ask for bank_invoice without these fail with bank_invoice_not_enabled, accounting_link_required, provider_no_bank_invoice or bank_invoice_isk_only.
Create the session
const session = await borga.paymentSessions.create({
amount: 49900,
currency: "ISK",
enabled_methods: ["card", "bank_invoice"],
// Optional. When supplied, the fields are shown locked in checkout.
customer_email: "anna@example.is",
customer_kennitala: "0101302989",
return_url: "https://yoursite.is/order/complete",
cancel_url: "https://yoursite.is/cart",
external_reference: "invoice_2026_0142",
});curl https://api.borga.is/v1/payment_sessions \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"amount": 49900,
"currency": "ISK",
"enabled_methods": ["card", "bank_invoice"],
"customer_email": "anna@example.is",
"customer_kennitala": "0101302989",
"return_url": "https://yoursite.is/order/complete",
"cancel_url": "https://yoursite.is/cart",
"external_reference": "invoice_2026_0142"
}'customer_email and customer_kennitala are optional. When you supply them, the checkout shows them as locked fields so the claim is issued to the right person; when you leave them out, the payer types them in. The kennitala is checksum-validated on both sides, and an invalid one fails with invalid_kennitala.
What the payer sees
On the checkout page the payer picks Bank invoice, confirms their kennitala and email, and submits. Borga creates the claim through PayDay and shows a confirmation with the claim's payment reference. The claim then appears in their netbanki, and they are redirected to return_url like any other payer.
What you see
The session becomes complete immediately, but the payment stays created until the bank confirms payment. Borga polls PayDay every 15 minutes and, when the claim shows as paid, marks the payment succeeded and sends payment.succeeded. Expect this to take hours to days depending on when the payer pays.
Because of this delay:
- Your return page must handle
payment_status: "created"gracefully. Say that the invoice has been sent and the order will be confirmed when paid. - Fulfil only from the
payment.succeededwebhook. - Watch
invoice.voidedfor claims that were cancelled in PayDay before payment.
The Invoice object linked to the payment carries sent_to_bank, the payment reference and the creditor account, and the invoice.created event for a bank invoice includes them too. The invoice is booked with the same lines and VAT as a card payment of the same session would be, from line_items or the default tax rate.
Subscriptions by bank invoice
Subscriptions can collect by bank invoice instead of card: create them with collection_method: "send_invoice" and a days_until_due. Each period Borga issues a claim through PayDay, due days_until_due days later, and marks the invoice paid when the bank confirms. The subscription's prices must be in ISK and the customer needs a kennitala; otherwise creation fails with bank_invoice_isk_only or customer_kennitala_required. See Subscriptions.
Fees
1.0% of the amount plus the bank's own claim fees, passed through at cost. No fee is charged if the claim is never paid.