Paystack with Xero or QuickBooks Reconciliation
Manual: export Paystack transaction CSV (dashboard → Transactions → Export) and import into Xero or QuickBooks. Automated: use Zapier (Paystack charge.success → Xero Create Invoice + Mark Paid, or QuickBooks Create Sales Receipt). For developers: use the Xero API (POST /Invoices) or QuickBooks API (POST /salesreceipt) triggered by Paystack's charge.success webhook.
Manual CSV Export and Import
For monthly reconciliation without automation:
- Paystack dashboard → Transactions → filter by date range → Export CSV.
- Also export Settlements CSV (Paystack → Settlements → Export) — this shows what actually landed in your bank after fees.
- In Xero: Accounting → Bank Accounts → Import Statement — upload the settlements CSV (may require formatting to match Xero's import format: Date, Amount, Payee, Description).
- In QuickBooks: Banking → File Upload → upload formatted CSV.
Key reconciliation note: the Paystack transaction CSV shows gross amounts (before fees). The settlement CSV shows net amounts (after Paystack fees). Match your bank statement to the settlement amounts, not transaction amounts.
Automated Reconciliation via Zapier
For real-time accounting entries on every payment:
- Create a Zap: Trigger → Webhooks by Zapier → Catch Hook (configure in Paystack webhooks).
- Add a Filter: only continue when
event=charge.success. - Xero: Action → Xero → Create Invoice (set contact, amount, account, description from Paystack data). Then Xero → Create Payment to mark it paid.
- QuickBooks: Action → QuickBooks Online → Create Sales Receipt (set customer, amount, product/service, payment method).
Automated via Xero API (Developer Approach)
// In your Paystack webhook handler
async function syncToXero(transaction) {
var { XeroClient } = require('xero-node');
var xero = new XeroClient({ ... }); // configure with your Xero app credentials
await xero.accountingApi.createInvoices(tenantId, {
invoices: [{
type: 'ACCREC',
contact: { name: transaction.customer.email },
lineItems: [{
description: 'Paystack Payment ' + transaction.reference,
unitAmount: transaction.amount / 100,
accountCode: '200', // your revenue account
}],
date: transaction.paid_at.split('T')[0],
dueDate: transaction.paid_at.split('T')[0],
status: 'AUTHORISED',
payments: [{ amount: transaction.amount / 100, date: transaction.paid_at.split('T')[0] }],
}],
});
}
Learn More
See Paystack with Google Sheets for a lighter reporting option.
Key Takeaways
- ✓Export Paystack transactions as CSV and import into Xero or QuickBooks for manual monthly reconciliation.
- ✓Zapier connects Paystack charge.success to Xero or QuickBooks without code.
- ✓Use the Xero API (POST /Invoices) or QuickBooks API (POST /salesreceipt) for real-time automated entries.
- ✓Map Paystack amount (minor unit ÷ 100) to Xero/QuickBooks amount fields.
- ✓Paystack settlement amounts include deducted fees — reconcile against settlement reports, not gross transactions.
Frequently Asked Questions
- Should I reconcile against Paystack transaction amounts or settlement amounts?
- Reconcile against settlement amounts. Paystack transactions show the gross amount the customer paid. Settlements show what Paystack transferred to your bank after deducting fees. Your bank statement will match the settlement amounts. Export both reports: transactions for your revenue records, settlements for bank reconciliation.
- Xero is not available in my country — what are the alternatives?
- QuickBooks Online is available in Nigeria, Kenya, and South Africa. Sage Accounting is popular in South Africa. Wave Accounting is free and available in Africa. For the smallest businesses, a well-structured Google Sheet with Zapier feeding Paystack data is often sufficient before outgrowing it.
- How do I handle Paystack refunds in Xero?
- When a Paystack refund fires, handle the refund.processed webhook event. In Xero, create a Credit Note against the original invoice. If using Zapier, add a second Zap triggered by refund.processed that creates a Xero Credit Note. Map the refund amount and original transaction reference so the credit note links to the correct revenue record.
Ready to build real-world apps?
Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.
Apply to the McTaba Marathon