Customers
The people and companies you bill. Customers own saved cards, subscriptions and invoices.
The customer object
cus_.external_customer_id.email. See collection setup.line1, line2, city, postal_code, country.pm_ charged by subscriptions.VAT status
tax_exempt says whether VAT applies to a customer's invoices. none, the default, charges VAT at each line's rate. exempt books every line at 0% VAT. reverse books at 0% too and marks the invoice as reverse charge, for a business in another EU country that accounts for the VAT itself; give it a vat_number as well, since the invoice must show it.
An exempt or reverse-charge customer is charged the prices without their VAT: each line's unit price is backed out of the VAT-inclusive price at its rate, so a 1,240 kr. price at 24% bills them 1,000 kr. with no tax. That applies wherever Borga computes a charge from prices: subscription invoices, prorations, quotes, a subscription started from checkout, and a payment whose customer is known when it is created. A checkout session is priced without VAT when you create it for such a customer, by customer or by a customer_email that belongs to one. An email the payer types at checkout never changes the price: a customer attached that way keeps the amount paid and loses only the tax on the invoice, and you refund the VAT afterwards if you choose to. Wallets report the email after the payment, so this keeps one flow for every method. The status is frozen on each invoice as tax_exempt when the invoice is built, so changing it never moves an invoice already issued.
Collection setup
Everything Borga needs to collect from a customer by bank claim or invoice lives on the customer, set once and used by every subscription and invoice after: kennitala, which a bank claim is addressed to; invoice_email, where invoices and claim notifications go when the payer's own email is not the accounts-payable address; name, vat_number and the billing address, printed on the invoice; and the customer's record in your accounting system, which Borga creates on the first invoice and reuses. A subscription chooses collection_method and days_until_due; the customer supplies the rest.
Create a customer
Body
email.IS.curl https://api.borga.is/v1/customers \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"email": "anna@example.is",
"name": "Anna Jónsdóttir",
"kennitala": "0101302989",
"external_id": "user_12345",
"billing_address_line1": "Laugavegur 1",
"billing_postal_code": "101",
"billing_city": "Reykjavík",
"billing_country": "IS"
}'{
"id": "cus_8Jk2Lm4Np6Qr8St0Uv2Wx4Yz",
"email": "anna@example.is",
"name": "Anna Jónsdóttir",
"phone": null,
"kennitala": "0101302989",
"external_id": "user_12345",
"vat_number": null,
"billing_address": {
"line1": "Laugavegur 1",
"line2": null,
"city": "Reykjavík",
"postal_code": "101",
"country": "IS"
},
"metadata": {},
"default_payment_method": null,
"created_at": "2026-09-07T10:00:00.000Z",
"updated_at": "2026-09-07T10:00:00.000Z"
}Retrieve a customer
Update a customer
Accepts the same fields as create, all optional. Only the fields you send are changed.
Body
none, exempt or reverse. Applies to invoices issued from the change on.Customer billing state
Everything a customer-facing billing page needs, in one call: the customer's active, trialing and past_due subscriptions with their items, and every meter balance. Documented with the meters at customer billing state; the SDK exposes it as borga.customers.state(id).