Reconciliation
Quick Reference
What is reconciliation
Reconciliation is the process of matching each charge in your system to its corresponding settlement record. This ensures that every payment you received was settled correctly, fees were applied as expected, and no funds are missing.
Reconciliation workflow
Fetch settled charges
Query the List Charges API with settlement status filters to get all charges settled in a given period.
Match to bank deposits
Compare settlement records against your bank statement. Each settlement batch should correspond to a deposit.
Verify fee breakdown
Confirm that MDR, interchange, and processing fees match your contract terms.
Flag discrepancies
Identify any charges that are paid but not yet settled, or settled amounts that don't match expected net values.
Query settled charges
/api/v1/bank/wallet/charge/Bearer TokenList charges with settlement filtersUse the List Charges endpoint with query parameters to filter by settlement status and date range:
- cURL
- Python
curl -G https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $ACCESS_TOKEN" \
--data-urlencode "status=paid" \
--data-urlencode "settled=true" \
--data-urlencode "settled_after=2026-01-01T00:00:00Z" \
--data-urlencode "settled_before=2026-01-31T23:59:59Z" \
--data-urlencode "page_size=100"
import requests
response = requests.get(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
headers={"Authorization": f"Bearer {access_token}"},
params={
"status": "paid",
"settled": "true",
"settled_after": "2026-01-01T00:00:00Z",
"settled_before": "2026-01-31T23:59:59Z",
"page_size": 100,
},
)
charges = response.json()["results"]
for charge in charges:
net = charge["gross_amount"] - charge["total_fees"]
assert abs(net - charge["net_amount"]) < 0.01, f"Mismatch on {charge['charge_uuid']}"
Settlement report fields
Each charge in the settlement report includes:
| Field | Description |
|---|---|
charge_uuid | Unique identifier for the charge |
type | Payment method (credit_card, pix, boleto, etc.) |
status | Charge status (paid, refunded, etc.) |
gross_amount | Original charge amount |
mdr_amount | MDR fee deducted |
interchange_amount | Interchange fee (card payments only) |
processing_fee | Per-transaction processing fee |
fx_fee | Currency conversion fee (cross-border only) |
net_amount | Amount deposited to your account |
settled_at | Timestamp when settlement was completed |
settlement_batch_id | Groups charges settled in the same bank transfer |
chargeback_amount | Amount deducted due to chargebacks (if any) |
Dispute handling
Chargeback deductions
When a cardholder disputes a charge and the dispute is lost, the chargeback amount is deducted from your next settlement batch:
| Deduction component | Description |
|---|---|
| Original charge amount | Full transaction amount returned to cardholder |
| Chargeback fee | Administrative fee per chargeback (contract-dependent) |
| Reversal of interchange | Original interchange refunded to the issuer |
High chargeback rates (above 1% of transactions) may trigger additional fees, holds, or account review. Implement fraud prevention measures to minimize disputes.
Best practices for automated reconciliation
Daily reconciliation
Run reconciliation daily to catch issues early:
from datetime import date, timedelta
yesterday = date.today() - timedelta(days=1)
settled = fetch_settled_charges(date=yesterday)
deposits = fetch_bank_deposits(date=yesterday)
settled_total = sum(c["net_amount"] for c in settled)
deposit_total = sum(d["amount"] for d in deposits)
if abs(settled_total - deposit_total) > 0.01:
alert_finance_team(settled_total, deposit_total, yesterday)
Reconciliation checklist
| Check | What to verify |
|---|---|
| Completeness | Every paid charge has a corresponding settlement record |
| Accuracy | Net amount = gross - MDR - interchange - processing - FX |
| Timeliness | Charges are settled within the expected window for their method |
| Chargebacks | All chargeback deductions match dispute records |
| Bank match | Total net settlements match bank deposits for the period |
Idempotency
Always reconcile using charge_uuid and settlement_batch_id as unique keys. If you re-process a settlement report, these IDs prevent duplicate entries in your accounting system.
Multi-provider reconciliation
A55 aggregates settlement data from 29+ acquirers, each with different reporting formats and timelines. The API normalizes all of this into a consistent schema. However, some providers settle weekly rather than daily — if you see a gap in daily settlements for a specific payment method, check the provider's settlement cycle in your contract.