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.

Create partner Stripe. Tick this on the Fee row. The import creates a supplier partner named Stripe once (an existing partner with that name is reused) and records every fee entry in the journal with Stripe as the partner, so fee bookings show who was paid.

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. The six optional fields at the bottom of the template

Most companies leave all six empty and the import works exactly the same. They exist for two narrow situations: you want card reservations recorded as documents, or you collect money that partly belongs to somebody else.

Why the dropdowns look empty

The three "operation type" dropdowns list the operation types your company has created under Settings → Operation types. If you have not created any, the dropdown has nothing in it. That is not a fault; create an operation type first, or leave the field empty.

The Lender metadata field dropdown lists the metadata column names you typed into the Metadata fields list higher up in this same form. Add a metadata field there first and it appears here.

Partial refund label and Full refund label

When the import creates a credit note for a refund, these give the word printed at the top of that credit note's PDF.

Situation Word used Default
The refund is smaller than the invoice total Partial refund label DEPOZITAS
The refund equals the invoice total Full refund label ANULIAVIMAS

Change them only if your company prints different words on such documents. They do not affect the numbering and do not affect the accounting.

Authorization operation type

A card authorization is money reserved on a customer's card that you have not taken yet. In the Stripe export these rows have Captured set to false. The import normally ignores them, because no money moved.

Fill this field in and every such row becomes an issued sales document, using this operation type and the document series that operation type points to. Leave it empty and those rows are skipped, and the import result shows the warning "authorization(s) skipped: template has no authorization operation type".

If you do not already know that your business must show reservations as documents, leave it empty.

Payout operation type, Commission operation type and Lender metadata field

Skip this part entirely unless your business collects money that belongs to someone else — a marketplace paying sellers, or a platform paying lenders. An ordinary shop never fills these in.

Stripe tells this story in two files. The payments export says what each customer paid. A separate transfers export says how much of it you sent on to the other party. The import needs both to work out what you kept.

The transfers file can currently be supplied only through the API (bank/statements/import, field transfersCsv). The upload box for it was removed from the Bank page, so these three fields do nothing for an import started in the app.

When both files are present:

Field What it does
Payout operation type For each transfer to the other party, one ledger entry is written for the transferred amount. The debit and credit accounts come from this operation type. Left empty, the entry uses the seller-payable and supplier-payable posting rules instead.
Commission operation type The part you keep, calculated as the charge amount minus the Stripe fee minus the amount transferred out, and written only when that is more than zero. Accounts come from this operation type, otherwise from the seller-payable and commission-revenue posting rules.
Lender metadata field The name of the Stripe metadata column that holds who the money went to. A partner with that value is created, or reused if it exists, and set on both entries above. Left empty, or a row without the value, gives the warning "lender not identified" and the entry is written without a partner.

If both operation type fields are empty, no transfer or commission entries are written at all, whatever else is set.

7. 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.