← Docs / Guides
Importing from Stripe
Export payments from Stripe, set up an import template, and let Nordlet book fees, customers, invoices and refunds.
This guide covers the file import of Stripe payments through an import template: what to export, how to set up the template, and what the import creates. The API details are in Bank & payment imports.
1. Export the payments file from Stripe
In the Stripe dashboard open Payments → Export, choose the date range, keep All columns, and include the
metadata columns you use (Stripe exports each metadata key as a column named <key> (metadata), for example
orderNo (metadata)). Download the CSV. Both live and test-mode exports work.
Rows that moved no money are skipped on import: payment attempts that failed, were cancelled, or still require a payment method, and charges that were never captured.
2. Create a bank account for Stripe
Every import lands on a bank account. Create one under Bank named for example "Stripe", in the currency you charge in. The Stripe balance behaves like a bank account: charges come in, fees go out, payouts move the balance to your real bank.
3. Create the import template
Under Bank → Import templates press New import template, choose type Stripe, and give it a name.
Fields. Every column of the Stripe export is a row. The Required in file box says the column must be
present in the uploaded file; a file missing a required column is rejected and the missing names are shown. The
19 Card … columns are unticked by default because Stripe omits them for some accounts.
Ledger account. The rows that carry money — Amount, Fee, Amount Refunded — can be assigned to a ledger
account, either an existing one or a new one created from the same row. Every movement produced from an assigned
field is posted at import time: money in debits the Stripe bank account and credits the assigned account, money
out does the opposite, and the bank transaction is marked as matched to that journal entry. The usual setup is:
| Field | Account | Effect |
|---|---|---|
Fee |
a PSP fee expense account (6800 in the standard chart) | Every Stripe fee is booked as an expense |
Amount |
leave "Not posted" | Charges stay open for invoice matching (see step 5) |
Amount Refunded |
leave "Not posted" | Refunds are handled through credit notes (see step 5) |
Create missing customers. Tick this on the Customer Email row. For every email in the file that no partner
has yet, a customer is created: name from Customer Description (the email when empty), address from the
Card Address … columns when present. Existing partners are recognised by email, case-insensitively, so nothing
is created twice.
Metadata fields. Add one row per metadata key you want the import to read, for example orderNo. Two flags
can be set on these rows:
- Create or link invoices — marks the key that identifies an order (step 5). Only one row can carry it. A VAT rate for created invoices appears next to it, and an optional Catalog item: when chosen, every invoice line the import creates references that product or service, so revenue posts to the item's account; the line text still comes from the charge.
- Company flag — marks a key whose value says the buyer is a company (
true,1,yes,company,businessorb2b). Customers created from such charges are partners of type company; all others are persons.
Save the template.
4. Import the file
On Bank choose the Stripe bank account, the template, and the file, then press Import. The button shows a spinner until the import has finished; a large file can take minutes because invoices are issued one by one. The result line reports how many transactions were imported, how many already existed, how many movements were posted, and how many customers, invoices and credit notes were created. Warnings list the orders that could not be processed and why.
Importing the same file again is safe: transactions are recognised by the Stripe charge id, customers by email, orders by their metadata value.
5. What "Create or link invoices" does
Charges and refunds are grouped by the value of the chosen metadata key (the order number).
- If a sale invoice for that value already exists — a sales order whose external reference is that value, or an invoice whose number is that value — the charges are matched to it as payments.
- Otherwise a sale invoice is created for the customer: one line per charge, with the charge's line text and the
charge amount as a VAT-inclusive price at the template's VAT rate, dated on the first charge. It is issued and
posted immediately, and the charges are matched to it, so it shows as paid. A sales order with channel
stripeis recorded with the order number, so the next import links instead of creating. - Every refund in the group becomes an issued credit note against that invoice for the refunded amount, and the refund transaction is matched to it.
Groups without a customer email, with charges in different currencies, or whose existing invoice is still a draft or already paid are skipped and listed in the warnings. Their transactions stay unmatched on Bank → Transactions.
Invoice numbers come from the current year's series even for charges dated in earlier years, so historical imports do not collide with existing numbers.
6. Where to look afterwards
- Bank → Transactions — every imported movement; matched ones link to the invoice or journal entry.
- Invoices — created invoices and credit notes, with the order number in the notes.
- Partners — created customers.
- Ledger → Journal — the postings for fees, payments and invoices.
Billing
Files up to 10 MB and 50,000 movements. Every 10 imported movements count as one API request.