rtcamp / stripe-xero-csv
Export Stripe's balance affecting transactions in a CSV file, recognisable by Xero Import CSV Statement feature.
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 34
Forks: 0
Open Issues: 1
Type:project
Requires
- daniel-zahariev/php-aws-ses: ^0.9.1
- league/csv: ^8.0
- stripe/stripe-php: ^5.1
- vlucas/phpdotenv: ^2.4
This package is not auto-updated.
Last update: 2024-11-10 03:10:37 UTC
README
The php script stripe-xero.php
exports all Stripe balance affecting transactions into a CSV file recognisable by Xero Bank Account's import a CSV statement feature.
Currently it supports:
- Charges
- Refunds
- Payouts
Usage
Preparation
git clone https://github.com/rtcamp/stripe-xero-csv
cd stripe-xero-csv
composer install
Edit .env
file to add correct Stripe API Key.
Finally run the script:
php stripe-xero.php
It will create a file stripe-xero-{date}.csv
with all balance affecting transactions from your Stripe account.
Xero will skip duplicates during import so you need to worry about previously imported transactions appearing in CSV.
The script supports emailing CSV as attachment to predefined email address. This comes handy if you are running script as a CRON job.
As of now only Amazon AWS SES is supported.
You need to set values of following variables in .env
file:
EMAIL_FROM
EMAIL_TO
AWS_ACCESS_KEY
AWS_SECRET_KEY
Please make sure:
EMAIL_FROM
address must be verified already in SES console.- You are using IAM API user to generate
AWS_
credentials. SES SMTP credentials won't work.
crontab
Add a line like below for weekly emails @ Monday 10am.
0 10 * * 1 cd /path/to/stripe-xero-csv && /usr/bin/php stripe-xero.php >> stripe-xero.log 2>&1
Known Issues and Limitations
- Xero doesn't provide support for adding Stripe as a bank account. So we need to create a normal bank account with manual feed.
- Stripe doesn't provide Xero friendly statements. Xero supports many formats.
- Xero API doesn't have provision to insert bank statement lines. It's second most popular feature request pending from eternity i.e. 2009! This is main reason that you need to run this script locally and import CSV files manually.
TODO
- Add support to generate CSV for a specific duration. Something like "this month", "last month" should be enough to start with.