centjes-stripe books a Stripe account one month at a time, from Stripe's own monthly reports rather than from individual charges. Per month it writes the sales split by country with the VAT on the domestic part, the refunds, Stripe's fees with the VAT on them, and one transaction per payout. The last transaction of each month asserts the balance Stripe closed it on.
It needs a restricted key, made in the dashboard under Developers, API keys, that can read the balance and payouts and can create a report run. That last one is not a mistake: a report has to be asked for before it can be read, and it is the only write this importer makes.
Two things to know before filing a return from it:
Revenue that Stripe's tax report has no row for is booked as foreign, because Stripe only reports jurisdictions the account is registered in. Each run says how much of the month that was.
Refunds are booked as an expense with the VAT on them as input tax, so turnover stays gross of them. Each month with refunds is flagged.
--config-file Path to the configuration file
-l|--ledger ledger file default: "ledger.cent"
import Import Stripe sales, fees and payouts month by month
--key Stripe API key that can read the balance and payouts and create report runs
--key-file Stripe API key that can read the balance and payouts and create report runs
-o|--output Output file path, which this importer rewrites default: "stripe.cent"
--begin The first month to import, default: January of this year
--documents Directory of the Stripe documents downloaded by hand, relative to the ledger default: "documents"
--reports Directory to save the monthly report CSVs into, relative to the ledger default: "documents"
CENTJES_STRIPE_CONFIG_FILE FILE_PATH Path to the configuration file
CENTJES_STRIPE_LEDGER FILE_PATH ledger file default: "ledger.cent"
CENTJES_STRIPE_KEY SECRET Stripe API key that can read the balance and payouts and create report runs
CENTJES_STRIPE_KEY_FILE FILE_PATH Stripe API key that can read the balance and payouts and create report runs
CENTJES_STRIPE_OUTPUT FILE_PATH Output file path, which this importer rewrites default: "stripe.cent"
CENTJES_STRIPE_BEGIN YYYY-MM The first month to import, default: January of this year
CENTJES_STRIPE_DOCUMENTS DIRECTORY_PATH Directory of the Stripe documents downloaded by hand, relative to the ledger default: "documents"
CENTJES_STRIPE_REPORTS DIRECTORY_PATH Directory to save the monthly report CSVs into, relative to the ledger default: "documents"
ledger file
default: "ledger.cent"
ledger:
# or null
<string>
Stripe API key that can read the balance and payouts and create report runs
import.key:
# or null
<string>
Stripe API key that can read the balance and payouts and create report runs
import.key-file:
# or null
<string>
Output file path, which this importer rewrites
default: "stripe.cent"
import.output:
# or null
<string>
The first month to import, default: January of this year
import.begin:
# or null
<string>
Account name of the Stripe balance
default: "assets:stripe"
import.assets-account:
# or null
<string>
Account name of domestic income
default: "income:domestic"
import.domestic-income-account:
# or null
<string>
Account name of the VAT charged to customers
default: "income:VAT"
import.vat-income-account:
# or null
<string>
Account name of foreign income
default: "income:foreign"
import.foreign-income-account:
# or null
<string>
Account name of Stripe's fees
default: "expenses:banking:stripe"
import.fees-account:
# or null
<string>
Account name of money given back to customers
default: "expenses:refunds"
import.refunds-account:
# or null
<string>
Account name of the VAT paid, which is what gets reclaimed
default: "expenses:VAT"
import.vat-expenses-account:
# or null
<string>
Account name of the self-transfer that payouts go through
default: "assets:self-transfer:stripe-neon"
import.payout-account:
# or null
<string>
Account name that the opening balance comes from
default: "equity:starting"
import.opening-account:
# or null
<string>
Tags for an expense transaction whose expenses carried recoverable VAT
default: ["deductible"]
import.deductible-tags:
# or null
- <string>
Tags for an expense transaction whose expenses carried no VAT
default: ["tax-deductible","not-vat-deductible"]
import.not-vat-deductible-tags:
# or null
- <string>
The two-letter country whose VAT this ledger owes
default: "CH"
import.home-country:
# or null
<string>
The percentage Stripe charges VAT on its own fees at
default: 8.1
import.fees-vat-rate:
# or null
<number>
The currency Stripe settles in
default: CurrencySymbol {currencySymbolText = "CHF"}
import.currency:
# or null
<string>
Directory of the Stripe documents downloaded by hand, relative to the ledger
default: "documents"
import.documents:
# or null
<string>
Directory to save the monthly report CSVs into, relative to the ledger
default: "documents"
import.reports:
# or null
<string>
formatTime pattern for Stripe's monthly tax invoice, the one document no API serves
default: "tax-invoice-%Y-%m.pdf"
import.fees-attachment:
# or null
<string>
Usage: centjes-stripe [--config-file FILE_PATH] [-l|--ledger FILE_PATH] COMMAND
All settings:
Show this help text
switch: -h|--help
Output version information
switch: --version
Path to the configuration file
option: --config-file FILE_PATH
env: CENTJES_STRIPE_CONFIG_FILE FILE_PATH
ledger file
option: -l|--ledger FILE_PATH
env: CENTJES_STRIPE_LEDGER FILE_PATH
config:
ledger: # or null
<string>
default: "ledger.cent"
All commands:
Import Stripe sales, fees and payouts month by month
command: import
Stripe API key that can read the balance and payouts and create report runs
option: --key SECRET
option: --key-file FILE_PATH
env: CENTJES_STRIPE_KEY SECRET
env: CENTJES_STRIPE_KEY_FILE FILE_PATH
config:
import.key: # or null
<string>
config:
import.key-file: # or null
<string>
Output file path, which this importer rewrites
option: -o|--output FILE_PATH
env: CENTJES_STRIPE_OUTPUT FILE_PATH
config:
import.output: # or null
<string>
default: "stripe.cent"
The first month to import, default: January of this year
option: --begin YYYY-MM
env: CENTJES_STRIPE_BEGIN YYYY-MM
config:
import.begin: # or null
<string>
Account name of the Stripe balance
config:
import.assets-account: # or null
<string>
default: "assets:stripe"
Account name of domestic income
config:
import.domestic-income-account: # or null
<string>
default: "income:domestic"
Account name of the VAT charged to customers
config:
import.vat-income-account: # or null
<string>
default: "income:VAT"
Account name of foreign income
config:
import.foreign-income-account: # or null
<string>
default: "income:foreign"
Account name of Stripe's fees
config:
import.fees-account: # or null
<string>
default: "expenses:banking:stripe"
Account name of money given back to customers
config:
import.refunds-account: # or null
<string>
default: "expenses:refunds"
Account name of the VAT paid, which is what gets reclaimed
config:
import.vat-expenses-account: # or null
<string>
default: "expenses:VAT"
Account name of the self-transfer that payouts go through
config:
import.payout-account: # or null
<string>
default: "assets:self-transfer:stripe-neon"
Account name that the opening balance comes from
config:
import.opening-account: # or null
<string>
default: "equity:starting"
Tags for an expense transaction whose expenses carried recoverable VAT
config:
import.deductible-tags: # or null
- <string>
default: ["deductible"]
Tags for an expense transaction whose expenses carried no VAT
config:
import.not-vat-deductible-tags: # or null
- <string>
default: ["tax-deductible","not-vat-deductible"]
The two-letter country whose VAT this ledger owes
config:
import.home-country: # or null
<string>
default: "CH"
The percentage Stripe charges VAT on its own fees at
config:
import.fees-vat-rate: # or null
<number>
default: 8.1
The currency Stripe settles in
config:
import.currency: # or null
<string>
default: CurrencySymbol {currencySymbolText = "CHF"}
Directory of the Stripe documents downloaded by hand, relative to the ledger
option: --documents DIRECTORY_PATH
env: CENTJES_STRIPE_DOCUMENTS DIRECTORY_PATH
config:
import.documents: # or null
<string>
default: "documents"
Directory to save the monthly report CSVs into, relative to the ledger
option: --reports DIRECTORY_PATH
env: CENTJES_STRIPE_REPORTS DIRECTORY_PATH
config:
import.reports: # or null
<string>
default: "documents"
formatTime pattern for Stripe's monthly tax invoice, the one document no API serves
config:
import.fees-attachment: # or null
<string>
default: "tax-invoice-%Y-%m.pdf"
Options:
-h|--help Show this help text
--version Output version information
--config-file Path to the configuration file
-l|--ledger ledger file default: "ledger.cent"
import Import Stripe sales, fees and payouts month by month
--key Stripe API key that can read the balance and payouts and create report runs
--key-file Stripe API key that can read the balance and payouts and create report runs
-o|--output Output file path, which this importer rewrites default: "stripe.cent"
--begin The first month to import, default: January of this year
--documents Directory of the Stripe documents downloaded by hand, relative to the ledger default: "documents"
--reports Directory to save the monthly report CSVs into, relative to the ledger default: "documents"
Environment Variables:
CENTJES_STRIPE_CONFIG_FILE FILE_PATH Path to the configuration file
CENTJES_STRIPE_LEDGER FILE_PATH ledger file default: "ledger.cent"
CENTJES_STRIPE_KEY SECRET Stripe API key that can read the balance and payouts and create report runs
CENTJES_STRIPE_KEY_FILE FILE_PATH Stripe API key that can read the balance and payouts and create report runs
CENTJES_STRIPE_OUTPUT FILE_PATH Output file path, which this importer rewrites default: "stripe.cent"
CENTJES_STRIPE_BEGIN YYYY-MM The first month to import, default: January of this year
CENTJES_STRIPE_DOCUMENTS DIRECTORY_PATH Directory of the Stripe documents downloaded by hand, relative to the ledger default: "documents"
CENTJES_STRIPE_REPORTS DIRECTORY_PATH Directory to save the monthly report CSVs into, relative to the ledger default: "documents"
Configuration Values:
ledger file
default: "ledger.cent"
ledger:
# or null
<string>
Stripe API key that can read the balance and payouts and create report runs
import.key:
# or null
<string>
Stripe API key that can read the balance and payouts and create report runs
import.key-file:
# or null
<string>
Output file path, which this importer rewrites
default: "stripe.cent"
import.output:
# or null
<string>
The first month to import, default: January of this year
import.begin:
# or null
<string>
Account name of the Stripe balance
default: "assets:stripe"
import.assets-account:
# or null
<string>
Account name of domestic income
default: "income:domestic"
import.domestic-income-account:
# or null
<string>
Account name of the VAT charged to customers
default: "income:VAT"
import.vat-income-account:
# or null
<string>
Account name of foreign income
default: "income:foreign"
import.foreign-income-account:
# or null
<string>
Account name of Stripe's fees
default: "expenses:banking:stripe"
import.fees-account:
# or null
<string>
Account name of money given back to customers
default: "expenses:refunds"
import.refunds-account:
# or null
<string>
Account name of the VAT paid, which is what gets reclaimed
default: "expenses:VAT"
import.vat-expenses-account:
# or null
<string>
Account name of the self-transfer that payouts go through
default: "assets:self-transfer:stripe-neon"
import.payout-account:
# or null
<string>
Account name that the opening balance comes from
default: "equity:starting"
import.opening-account:
# or null
<string>
Tags for an expense transaction whose expenses carried recoverable VAT
default: ["deductible"]
import.deductible-tags:
# or null
- <string>
Tags for an expense transaction whose expenses carried no VAT
default: ["tax-deductible","not-vat-deductible"]
import.not-vat-deductible-tags:
# or null
- <string>
The two-letter country whose VAT this ledger owes
default: "CH"
import.home-country:
# or null
<string>
The percentage Stripe charges VAT on its own fees at
default: 8.1
import.fees-vat-rate:
# or null
<number>
The currency Stripe settles in
default: CurrencySymbol {currencySymbolText = "CHF"}
import.currency:
# or null
<string>
Directory of the Stripe documents downloaded by hand, relative to the ledger
default: "documents"
import.documents:
# or null
<string>
Directory to save the monthly report CSVs into, relative to the ledger
default: "documents"
import.reports:
# or null
<string>
formatTime pattern for Stripe's monthly tax invoice, the one document no API serves
default: "tax-invoice-%Y-%m.pdf"
import.fees-attachment:
# or null
<string>