Transaction reconciliation enables you to reconcile between your internal records with Stripe processed charges and refunds at an individual transaction level.
Transaction reconciliation is useful for businesses that have:
Using transaction reconciliation, you can:
To get started with Stripe reconciliation upload your transaction data. Then you can:
To import transaction data:
You are responsible for the data you provide to Stripe. By providing us data to use, you acknowledge that you have received permission to share that data with Stripe and to enable Stripe to use it to provide you the services.
The transaction data must have some required fields to convert it to Stripe’s canonical reconciliation schema. Here is the expected schema:
Field name | Description | Type | Required |
---|---|---|---|
Id | A unique identifier for the payment expectation. For example - UUID, combination of orderitem and fulfillment status etc. | String | Required |
gross _ amount | The gross amount of the payment expectation. Does not account for any fees or currency conversions. | numeric | Required |
currency | Currency associated with gross _ amount . | enum | Required |
type | Either inbound or outbound . | enum | Required |
customer _ id | Identifier for the customer involved in the payment expectation. | string | Optional |
created _ at | When the payment expectation was created. | timestamp | Required |
updated _ at | When the payment expectation was updated. | timestamp | Optional |
reconciliation _ reference | Reference used to do a look-up on settlement data ( charge _ id ). | string | Required |
After the data is imported, reconciliation starts automatically, and each transaction gets a reconciliation status. The reconciliation status represents the state of the transaction and helps you understand what action to take. Settlement reconciliation and Transaction reconciliation have different statuses.
For reconciliation between settlement and bank data, each settlement is assigned one of the following statuses:
You can configure the settlement reconciliation threshold when you compare settlement data to bank deposit data. If the difference in amounts is within the threshold, the settlement ID gets tagged as completely matched. If the difference in amounts is outside of the threshold, the settlement ID gets tagged as partially matched.
Here is an example of how the settlement reconciliation statuses are computed (in this example, the threshold is 1 USD):
Settlement reconciliation status | Settlement ID (Stripe data) | Settlement ID (bank data) | Settlement amount expected (Stripe data) | Deposit amount (bank data) |
---|---|---|---|---|
Completely matched | ST-123 | ST-123 | 1000 USD | 1000 USD |
Partially matched | ST-abc | ST-abc | 1000 USD | 900 USD |
Unmatched | ST-xyz | null | 1000 USD | null |
Transaction reconciliation (between transaction data and settlement data) has four statuses:
Configure the transaction reconciliation threshold when comparing the amount expected (transaction data) and the amount processed (Stripe records). If the difference in amounts is within the threshold, the charge ID gets tagged as Settled. If the difference in amounts is outside of the threshold, the charge ID gets tagged as In process.
Here is the sample data showing how the transaction reconciliation statuses are computed (in this example, the threshold is 1 USD):
Transaction reconciliation status | Charge ID (transaction data) | Charge ID (Stripe records) | Amount expected (transaction data) | Amount processed (Stripe records) |
---|---|---|---|---|
Settled | ch _ 123 | ch _ 123 | 50 USD | 50 USD |
In process | ch _ abc | ch _ abc | 50 USD | 45 USD |
Open | ch _ xyz | null | 50 USD | null |
Foreign | null | ch _ 789 | null | 50 USD |
The reconciliation analytics page provides high-level details about the overall money movement of your business. It also includes charts for reconciliation status and aging summaries.
The reconciliation status chart provides a high-level view of the funds received or pending from Stripe. It shows an aggregated view of the amount corresponding to the transactions across four reconciliation statuses: Open, In Process, Foreign, and Settled. The key insight is to understand the amount for each of the reconciliation statuses and take actions based on the insights.
The aging summary chart provides a high-level view of the time it takes Stripe to settle processed transactions. It shows an aggregated view of the transaction amount by settlement days. Use the chart to determine whether Stripe is settling the money on time.
This helps you understand if Stripe is adhering to the agreed-upon SLA (service level agreement). The graph differentiates between the amount settled on or before SLA and after SLA with different colors. Blocks in blue represent the transaction amount settled on or before the SLA. Blocks in red represent the transaction amount settled after SLA.
Here are the standard reports that you can generate and download from the Stripe Dashboard:
To download a report:
Here are the columns in the reconciliation report:
Column name | Default | Description |
---|---|---|
reference _ id | Y | The common reference key between your transaction data and Stripe settlements data. For example, charge _ id (starting with ch _ ) for the charges and refund _ id (starting with re _ ) for refunds. |
recon _ party _ name | Y | Name of the payment provider that has processed the payment. For example, Stripe. |
transaction _ type | Y | Type of the transaction: Forward (for charges) or reverse (for refunds). |
reconciliation _ status | Y | The reconciliation status of the transaction. One of the following: Open, In process, Settled, Foreign. |
transaction _ date | Y | The date when the sale or refund was created per your transaction data (internal records). |
settlement _ date | Y | The date on which Stripe initiated the settlement or payout. |
bank _ date | Y | The date on which the settlement or payout was received in your bank. This information is fetched from your bank statements. |
total _ transaction _ amount | Y | The gross amount corresponding to the charge or refund per your transaction data. |
total _ settlement _ amount | Y | The gross amount corresponding to the charge or refund per the Stripe’s settlement data. |
account _ name | Y | The name of the account that is debited or credited from the chart of accounts to create the journal entry. |
credit _ cycle _ days | N | Number of days it takes for your funds to become available and paid out. |
age | N | The difference between the transaction _ date and settlement _ date , which represents the time taken for the corresponding payout to be initiated after the transaction is created. |
settlement _ currency | Y | The currency in which Stripe has settled the charge or refund. |
settlement _ id | N | The ID of the settlement or payout in which the charge or refund was settled. |
settlement _ status | N | The reconciliation status of the settlement. We match Stripe payouts with your bank statements and assign each settlement one of the following status: Matched, Unmatched, Partially matched |
You can add custom metadata from your transaction data to the reconciliation result report as additional columns. For example, if store _ id is part of the transaction data, it shows up in the custom metadata section.
To view the available custom metadata, click Show under the columns. The metadata is populated in the report by aggregating based on the reconciliation reference, for example the charge _ id . If multiple rows of metadata are found with the same charge _ id , they appear as comma-separated values in the report.
Column name | Description |
---|---|
recon _ party _ name | Name of the party that has initiated this settlement. For example, Stripe. |
settlement _ id | ID of the settlement or payout. |
settlement _ date | The date on which Stripe initiated the settlement or payout. |
bank _ date | The date on which the settlement or payout was received in your bank. This information is fetched from your bank statements. |
settlement _ amount | The net amount paid by Stripe against the settlement. |
bank _ received _ amount | The amount received in your bank account against the settlement. |
outstanding _ amount | The outstanding amount against the settlement. This is the difference between the settlement _ amount and bank _ received _ amount . |
settlement _ match _ status | The reconciliation status of the settlement. We match Stripe payouts with your bank statements and assign each settlement one of the following statuses: Matched, Unmatched, Partially matched. |
Column name | Description |
---|---|
reference _ id | The common reference key between your transaction data and Stripe settlements data. For example: charge _ id (starting with ch _ ) for the charges and refund _ id (starting with re _ ) for refunds. |
recon _ party _ name | Name of the payment provider that has processed the payment. For example, Stripe. |
transaction _ type | Type of transaction: forward (For charges) or reverse (For refunds). |
reconciliation _ status | The reconciliation status of the transaction. One of the following: Open, In process, Settled, Foreign. |
transaction _ date | The date on which the sale or refund was created as per your transaction data (internal records). |
settlement _ date | The date when Stripe initiated the settlement or payout. |
total _ transaction _ amount | The gross amount corresponding to the charge or refund as per your transaction data. |
total _ settlement _ amount | The gross amount corresponding to the charge or refund as per the Stripe’s settlement data. |
account _ name | The name of the account that is debited or credited from the COA to create the journal entry. |
settlement _ currency | The currency in which Stripe has settled the charge or refund. |
settlement _ id | The ID of the settlement or payout in which the charge or refund was settled. |
settlement _ status | The reconciliation status of the settlement. We match Stripe payouts with your bank statements and assign each settlement one of the following status: Matched, Unmatched, Partially matched. |