Nordlet

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, business or b2b). 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 stripe is 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.