# Reconcile adjustments in transfers
> Keep your books balanced with precise transfer reconciliation. Track chargebacks, ACH returns, holds, and other adjustments in your payment transfers for accurate financial reporting
If you need to build your own money in reconciliation processes or dashboards, follow this guide to find chargebacks, ACH returns, and other adjustments that are included with transfers.
You can learn more about the difference between batches and transfers in the [How Money Moves](/guides/platform-how-money-moves-overview#transfers) guide.
## The process
Choose a process to find transfer details. If you already have a `TransferId`, choose **Find by transfer**
If you need to find transfers that include returns and chargebacks by *batch*, use this approach.
Make a GET request to [/Query/batches/\{entry}\`](/developers/api-reference/query/get-list-of-batches-for-an-entrypoint) to list batches by a paypoint. You can use filters and conditions to limit the responses.
```json cURL example
curl --request GET \
--url https://api.payabli.com/api/Query/batches/476aacfed00?limitRecord=20&fromRecord=0&batchDate=2024-01-17 \
--header 'requestToken: '
```
Now, check to see if the target batch has a transfer, and if the transfer had an ACH return or chargeback.
Check if the batch contains any data in the `Transfer` object:
* If it doesn't, it means that the batch hasn't been transferred yet.
* If it does, it means the batch has been transferred. The `Transfer` object contains the summary info about that transfer.
Check in the `Transfer` object to see if `ReturnedAmount` or `ChargeBackAmount` is 0. If the amount is anything other than 0, then it means the transfer included ACH returns or chargebacks.
```json Example response
{
"Summary": {
"totalRecords": 2,
"totalAmount": 222.22,
"totalNetAmount": 0.0,
"totalPages": 1,
"pageSize": 20,
"pageidentifier": "x19smxocx..."
},
"Records": [
{
"IdBatch": 110297,
"BatchNumber": "batch_1000_combined_01-17-2024",
"ConnectorName": " ",
"BatchDate": "2024-01-17T00:00:00",
"BatchAmount": 222.22,
"BatchFeesAmount": 0.00,
"BatchAuthAmount": 222.22,
"BatchReleasedAmount": 0.00,
"BatchHoldAmount": 0.00,
"BatchReturnedAmount": -140.00,
"BatchRefundAmount": 0.00,
"BatchSplitAmount": 11.60,
"BatchStatus": 3,
"BatchRecords": 1,
"PaypointId": 123,
"PaypointName": "San Valentino Acres Neighborhood Assn, LLC",
"PaypointDba": "San Valentino Acres",
"ParentOrgName": "HOAManager",
"externalPaypointID": null,
"Method": "combined",
"ExpectedDepositDate": "2024-01-22T00:00:00",
"TransferDate": "2024-01-20T00:00:00",
"Transfer": {
"TransferId": 10101, // Copy the TransferId for the next step
"TransferDate": "2024-01-20T23:45:01.877",
"Processor": " ",
"TransferStatus": 3,
"GrossAmount": 222.22,
"ChargeBackAmount": 0.00, // If amount isn't 0, then this transfer has chargebacks in it
"ReturnedAmount": -140.00, // If Amount isn't 0, then this transfer has ACH returns in it
"RefundAmount": 0.00,
"HoldAmount": 0.00,
"ReleasedAmount": 0.00,
"BillingFeesAmount": 0.00,
"ThirdPartyPaidAmount": 0.00,
"AdjustmentsAmount": 0.00,
"NetFundedAmount": 93.82
}
}
]
}
```
Copy the `TransferId` for the next step.
Fetch the transfer details to know about the specific ACH returns or chargebacks processed in the transfer.
Use the `TransferId` from the last step and make a GET request to [/Query/transferDetails/\{entry}/\{transferId}](https://docs.payabli.com/api-reference/query/get-list-of-transfer-details). You can use filters and conditions to limit the responses.
```bash curl example
curl --request GET \
--url https://api.payabli.com/api/Query/transferDetails/476aacfed00/10101?limitRecord=20&fromRecord=0 \
--header 'requestToken: '
```
Review the response to get details about individual transactions with chargebacks or returns.
```json Truncated response example
{
"Summary": {
"achReturns": -140, // If this amount isn't 0, then the transfer had ACH returns
"adjustments": 0,
"billingFees": 0,
"chargebacks": 0, // If this amount isn't 0, then the transfer had chargebacks
"grossTransferAmount": 222.22,
"releaseAmount": 0,
"thirdPartyPaid": 0,
"totalNetAmountTransfer": 93.82,
...
},
"Records": [
{
"transferDetailId": 34135,
"transferId": 10101,
"transactionId": "100-b1000d0ec123456789aa",
"transactionNumber": "TRN_fEoo5pq0000XXX",
"paypointId": 937,
"type": "debit",
"category": "return", // Indicates that a transaction had a return. The value is `chargeback` if the transaction has a chargeback
"method": "ach",
"grossAmount": 0,
"chargeBackAmount": 0, // The chargeback amount for the transaction
"returnedAmount": -140, // The ACH Return Amount for this transaction
"refundAmount": 0,
"holdAmount": 0,
"releasedAmount": 0,
"billingFeesAmount": 0,
"thirdPartyPaidAmount": 0,
...
}
]
}
```
```json Full response example
{
"Summary": {
"achReturns": -140, // If this amount isn't 0, then the transfer had ACH returns
"adjustments": 0,
"billingFees": 0,
"chargebacks": 0, // If this amount isn't 0, then the transfer had chargebacks
"grossTransferAmount": 222.22,
"releaseAmount": 0,
"thirdPartyPaid": 0,
"totalNetAmountTransfer": 93.82,
"serviceFees": 0,
"transferAmount": 0,
"refunds": 0,
"heldAmount": 0,
"totalRecords": 2,
"totalAmount": 0,
"totalNetAmount": 0,
"totalPages": 1,
"pageSize": 20,
"pageidentifier": "u.eqz=XXXXX"
},
"Records": [
{
"transferDetailId": 34135,
"transferId": 10101,
"transactionId": "100-b1000d0ec123456789aa",
"transactionNumber": "TRN_fEoo5pq0000XXX",
"paypointId": 937,
"type": "debit",
"category": "return", // Indicates that a transaction had a return. The value is `chargeback` if the transaction has a chargeback
"method": "ach",
"grossAmount": 0,
"chargeBackAmount": 0, // The chargeback amount for the transaction
"returnedAmount": -140, // The ACH Return Amount for this transaction
"refundAmount": 0,
"holdAmount": 0,
"releasedAmount": 0,
"billingFeesAmount": 0,
"thirdPartyPaidAmount": 0,
"adjustmentsAmount": 0,
"netTransferAmount": -120.62,
"splitFundingAmount": 19.38,
"billingFeesDetails": null,
"ParentOrgName": "HOAManager",
"PaypointDbaname": "San Valentino Acres",
"PaypointLegalname": "WSan Valentino Acres Neighborhood Assn, LLC",
"PaypointEntryname": "476aacfed00",
"PaymentTransId": "100-b1000d0ec123456789aa",
"ConnectorName": "gp",
"GatewayTransId": "TRN_fEoo5pq0000XXX",
"OrderId": "65134",
"Method": "ach",
"BatchNumber": "batch_100_combined_02-16-2024",
"BatchAmount": 591.11,
"PayorId": 100001,
"PaymentData": {
"MaskedAccount": "5XXXXXX5112",
"AccountType": "Checking",
"AccountExp": null,
"HolderName": "Rafael Brooklyn",
"StoredId": "30000bbb-0000-0e99-0000-100000xxx-100001",
"orderDescription": "payment plan due 2/15/24 ($125.00)",
"accountId": null,
"SignatureData": null,
"paymentDetails": {
"totalAmount": 140,
"serviceFee": 0,
"checkNumber": null,
"checkImage": null,
"currency": "USD",
"orderDescription": null,
"orderId": null,
"orderIdAlternative": null,
"paymentDescription": null,
"groupNumber": null,
"source": null,
"categories": [],
"splitFunding": []
}
},
"TransStatus": 1,
"PaypointId": 937,
"TotalAmount": 140,
"NetAmount": 140,
"FeeAmount": 0,
"SettlementStatus": -2,
"Operation": "Sale",
"ResponseData": {
"response": null,
"responsetext": "CAPTURED",
"authcode": "",
"transactionid": "TRN_fEoo5pq0000XXX",
"avsresponse": null,
"avsresponse_text": null,
"cvvresponse": null,
"cvvresponse_text": null,
"orderid": null,
"type": null,
"response_code": "100",
"response_code_text": "Operation successful.",
"customer_vault_id": null,
"emv_auth_response_data": null,
"additional_response_text": " "
},
"Source": "api",
"ScheduleReference": 0,
"OrgId": 152,
"RefundId": 0,
"ReturnedId": 2501,
"TransAdditionalData": null,
"invoiceData": {
"invoiceNumber": null,
"invoiceDate": null,
"invoiceDueDate": null,
"invoiceEndDate": null,
"invoiceStatus": null,
"invoiceType": null,
"frequency": null,
"paymentTerms": null,
"termsConditions": null,
"notes": null,
"tax": null,
"discount": null,
"invoiceAmount": null,
"freightAmount": null,
"dutyAmount": null,
"purchaseOrder": null,
"firstName": null,
"lastName": null,
"company": null,
"shippingAddress1": null,
"shippingAddress2": null,
"shippingCity": null,
"shippingState": null,
"shippingZip": null,
"shippingCountry": null,
"shippingEmail": null,
"shippingPhone": null,
"shippingFromZip": null,
"summaryCommodityCode": null,
"items": null,
"attachments": null,
"additionalData": null
},
"EntrypageId": 0,
"externalPaypointID": null,
"TransactionTime": "2024-01-16T01:06:40.97",
"Customer": {
"Identifiers": "[\"customernumber\"]",
"FirstName": "Rafael",
"LastName": "Brooklyn",
"CompanyName": null,
"BillingAddress1": null,
"BillingAddress2": null,
"BillingCity": null,
"BillingState": null,
"BillingZip": null,
"BillingCountry": null,
"BillingPhone": null,
"BillingEmail": null,
"CustomerNumber": "10001",
"ShippingAddress1": null,
"ShippingAddress2": null,
"ShippingCity": null,
"ShippingState": null,
"ShippingZip": null,
"ShippingCountry": null,
"customerId": 100001,
"customerStatus": 0,
"AdditionalData": {},
"CreatedAt": "2023-12-15T01:00:57.957"
},
"splitFundingInstructions": [
{
"recipientEntryPoint": "c87b3c240e",
"AccountId": "OOO_100000xxx00000",
"Description": "Servicing Fee",
"Amount": 19.38
},
{
"recipientEntryPoint": "476aacfed00",
"AccountId": "OOO_100000xxx999999",
"Description": "payment plan due 2/15/24 ($125.00)",
"Amount": 120.62
}
],
"CfeeTransactions": [],
"TransactionEvents": [
{
"TransEvent": "Created",
"EventData": null,
"EventTime": "2024-01-16T01:06:39.8107905+00:00"
},
{
"TransEvent": "Approved",
"EventData": {
"id": "TRN_fEoo5pq0000XXX",
"time_created": "2024-01-16T08:06:40.97Z",
"type": "SALE",
"status": "CAPTURED",
"channel": "CNP",
"capture_mode": "AUTO",
"amount": "14000",
"currency": "USD",
"merchant_amount": "14000",
"country": "US",
"merchant_id": "99999999999xxxxxx",
"merchant_name": "XXXX 9999 00000",
"account_id": "OOO_100000xxx999999",
"account_name": " ",
"reference": "100-b1000d0ec123456789aa",
"order": {
"reference": ""
},
"fees": {
"amount": "0",
"rate": "0.00",
"total_amount": "0"
},
"payment_method": {
"result": "00",
"message": "Success",
"entry_mode": "ECOM",
"narrative": "ACH Payment",
"bank_transfer": {
"masked_account_number_last4": "XXXXX1234",
"account_type": "CHECKING",
"bank": {
"name": ""
}
}
},
"batch_id": "",
"action": {
"id": "XXXX00000",
"type": "AUTHORIZE",
"time_created": "2024-01-16T08:06:40.97Z",
"result_code": "SUCCESS",
"app_id": "0000-9999",
"app_name": "HOAManager_app"
}
},
"EventTime": "2024-01-16T01:06:41.0076121+00:00"
},
{
"TransEvent": "ClosedBatch",
"EventData": null,
"EventTime": "2024-01-16T15:03:12.2401091+00:00"
},
{
"TransEvent": "Transferred",
"EventData": null,
"EventTime": "2024-01-19T16:47:41.8318725+00:00"
},
{
"TransEvent": "ACH Return",
"EventData": null,
"EventTime": "2024-01-20T09:46:18.3652227+00:00"
}
]
}
]
}
]
}
```
If you need to find returns and chargebacks by transfers, use this method.
If you already have your target `TransferId`, you can skip to step 3: *Get transfer details*.
Make a GET request to [/Query/transfers/\{entry}\`](/developers/api-reference/query/get-list-of-transfers) to list transfers by a paypoint. You can use filters and conditions to limit the responses.
```json cURL example
curl --request GET \
--url https://api.payabli.com/api/Query/batches/476aacfed00?limitRecord=20&fromRecord=0&batchDate=2024-01-17 \
--header 'requestToken: '
```
In the response, check in the `Transfer` object to see if `returnedAmount` or `chargeBackAmount` is 0. If the amount is anything other than 0, then it means the transfer included ACH returns or chargebacks.
```json Example response
{
"Summary": {
"totalPages": 1,
"totalRecords": 1,
"pageSize": 20
},
"Records": [
{
"transferId": 10101, // Copy the transferId for the next step
"paypointId": 123,
"batchNumber": "batch_123_combined_01-17-2024",
"batchId": 1000,
"transferDate": "2024-01-20T23:45:01.877",
"processor": " ",
"transferStatus": 3,
"grossAmount": 222.22,
"chargeBackAmount": 0, // If this amount isn't 0, then the transfer had chargebacks
"returnedAmount": -140, // If this amount isn't 0, then the transfer had ACH returns
"holdAmount": 0,
"releasedAmount": 0,
"billingFeesAmount": 0,
"thirdPartyPaidAmount": 0,
"adjustmentsAmount": 0,
"netTransferAmount": 93.82,
"eventsData": [
{
"description": "TransferCreated",
"eventTime": "2024-01-20T23:45:01.8762702+00:00",
"refData": "",
"extraData": null,
"source": null
},
{
"description": "TransferSuccess",
"eventTime": "2024-01-20T23:45:03.3073994+00:00",
"refData": " ",
"extraData": null,
"source": null
}
]
}
]
}
```
Copy the value in `transferId` for the next step.
Fetch the transfer details to know about the specific ACH returns or chargebacks processed in the transfer.
Use the `TransferId` from the last step and make a GET request to [/Query/transferDetails/\{entry}/\{transferId}](https://docs.payabli.com/api-reference/query/get-list-of-transfer-details). You can use filters and conditions to limit the responses.
```bash curl example
curl --request GET \
--url https://api.payabli.com/api/Query/transferDetails/476aacfed00/10101?limitRecord=20&fromRecord=0 \
--header 'requestToken: '
```
Review the response to get details about individual transactions with chargebacks or returns.
```json Truncated response example
{
"Summary": {
"achReturns": -140, // If this amount isn't 0, then the transfer had ACH returns
"adjustments": 0,
"billingFees": 0,
"chargebacks": 0, // If this amount isn't 0, then the transfer had chargebacks
"grossTransferAmount": 222.22,
"releaseAmount": 0,
"thirdPartyPaid": 0,
"totalNetAmountTransfer": 93.82,
...
},
"Records": [
{
"transferDetailId": 34135,
"transferId": 10101,
"transactionId": "100-b1000d0ec123456789aa",
"transactionNumber": "TRN_fEoo5pq0000XXX",
"paypointId": 937,
"type": "debit",
"category": "return", // Indicates that a transaction had a return. The value is `chargeback` if the transaction has a chargeback
"method": "ach",
"grossAmount": 0,
"chargeBackAmount": 0, // The chargeback amount for the transaction
"returnedAmount": -140, // The ACH Return Amount for this transaction
"refundAmount": 0,
"holdAmount": 0,
"releasedAmount": 0,
"billingFeesAmount": 0,
"thirdPartyPaidAmount": 0,
...
}
]
}
```
```json Full response example
{
"Summary": {
"achReturns": -140, // If this amount isn't 0, then the transfer had ACH returns
"adjustments": 0,
"billingFees": 0,
"chargebacks": 0, // If this amount isn't 0, then the transfer had chargebacks
"grossTransferAmount": 222.22,
"releaseAmount": 0,
"thirdPartyPaid": 0,
"totalNetAmountTransfer": 93.82,
"serviceFees": 0,
"transferAmount": 0,
"refunds": 0,
"heldAmount": 0,
"totalRecords": 2,
"totalAmount": 0,
"totalNetAmount": 0,
"totalPages": 1,
"pageSize": 20,
"pageidentifier": "u.eqz=XXXXX"
},
"Records": [
{
"transferDetailId": 34135,
"transferId": 10101,
"transactionId": "100-b1000d0ec123456789aa",
"transactionNumber": "TRN_fEoo5pq0000XXX",
"paypointId": 937,
"type": "debit",
"category": "return", // Indicates that a transaction had a return. The value is `chargeback` if the transaction has a chargeback
"method": "ach",
"grossAmount": 0,
"chargeBackAmount": 0, // The chargeback amount for the transaction
"returnedAmount": -140, // The ACH Return Amount for this transaction
"refundAmount": 0,
"holdAmount": 0,
"releasedAmount": 0,
"billingFeesAmount": 0,
"thirdPartyPaidAmount": 0,
"adjustmentsAmount": 0,
"netTransferAmount": -120.62,
"splitFundingAmount": 19.38,
"billingFeesDetails": null,
"ParentOrgName": "HOAManager",
"PaypointDbaname": "San Valentino Acres",
"PaypointLegalname": "WSan Valentino Acres Neighborhood Assn, LLC",
"PaypointEntryname": "476aacfed00",
"PaymentTransId": "100-b1000d0ec123456789aa",
"ConnectorName": "gp",
"GatewayTransId": "TRN_fEoo5pq0000XXX",
"OrderId": "65134",
"Method": "ach",
"BatchNumber": "batch_100_combined_02-16-2024",
"BatchAmount": 591.11,
"PayorId": 100001,
"PaymentData": {
"MaskedAccount": "5XXXXXX5112",
"AccountType": "Checking",
"AccountExp": null,
"HolderName": "Rafael Brooklyn",
"StoredId": "30000bbb-0000-0e99-0000-100000xxx-100001",
"orderDescription": "payment plan due 2/15/24 ($125.00)",
"accountId": null,
"SignatureData": null,
"paymentDetails": {
"totalAmount": 140,
"serviceFee": 0,
"checkNumber": null,
"checkImage": null,
"currency": "USD",
"orderDescription": null,
"orderId": null,
"orderIdAlternative": null,
"paymentDescription": null,
"groupNumber": null,
"source": null,
"categories": [],
"splitFunding": []
}
},
"TransStatus": 1,
"PaypointId": 937,
"TotalAmount": 140,
"NetAmount": 140,
"FeeAmount": 0,
"SettlementStatus": -2,
"Operation": "Sale",
"ResponseData": {
"response": null,
"responsetext": "CAPTURED",
"authcode": "",
"transactionid": "TRN_fEoo5pq0000XXX",
"avsresponse": null,
"avsresponse_text": null,
"cvvresponse": null,
"cvvresponse_text": null,
"orderid": null,
"type": null,
"response_code": "100",
"response_code_text": "Operation successful.",
"customer_vault_id": null,
"emv_auth_response_data": null,
"additional_response_text": " "
},
"Source": "api",
"ScheduleReference": 0,
"OrgId": 152,
"RefundId": 0,
"ReturnedId": 2501,
"TransAdditionalData": null,
"invoiceData": {
"invoiceNumber": null,
"invoiceDate": null,
"invoiceDueDate": null,
"invoiceEndDate": null,
"invoiceStatus": null,
"invoiceType": null,
"frequency": null,
"paymentTerms": null,
"termsConditions": null,
"notes": null,
"tax": null,
"discount": null,
"invoiceAmount": null,
"freightAmount": null,
"dutyAmount": null,
"purchaseOrder": null,
"firstName": null,
"lastName": null,
"company": null,
"shippingAddress1": null,
"shippingAddress2": null,
"shippingCity": null,
"shippingState": null,
"shippingZip": null,
"shippingCountry": null,
"shippingEmail": null,
"shippingPhone": null,
"shippingFromZip": null,
"summaryCommodityCode": null,
"items": null,
"attachments": null,
"additionalData": null
},
"EntrypageId": 0,
"externalPaypointID": null,
"TransactionTime": "2024-01-16T01:06:40.97",
"Customer": {
"Identifiers": "[\"customernumber\"]",
"FirstName": "Rafael",
"LastName": "Brooklyn",
"CompanyName": null,
"BillingAddress1": null,
"BillingAddress2": null,
"BillingCity": null,
"BillingState": null,
"BillingZip": null,
"BillingCountry": null,
"BillingPhone": null,
"BillingEmail": null,
"CustomerNumber": "10001",
"ShippingAddress1": null,
"ShippingAddress2": null,
"ShippingCity": null,
"ShippingState": null,
"ShippingZip": null,
"ShippingCountry": null,
"customerId": 100001,
"customerStatus": 0,
"AdditionalData": {},
"CreatedAt": "2023-12-15T01:00:57.957"
},
"splitFundingInstructions": [
{
"recipientEntryPoint": "c87b3c240e",
"AccountId": "OOO_100000xxx00000",
"Description": "Servicing Fee",
"Amount": 19.38
},
{
"recipientEntryPoint": "476aacfed00",
"AccountId": "OOO_100000xxx999999",
"Description": "payment plan due 2/15/24 ($125.00)",
"Amount": 120.62
}
],
"CfeeTransactions": [],
"TransactionEvents": [
{
"TransEvent": "Created",
"EventData": null,
"EventTime": "2024-01-16T01:06:39.8107905+00:00"
},
{
"TransEvent": "Approved",
"EventData": {
"id": "TRN_fEoo5pq0000XXX",
"time_created": "2024-01-16T08:06:40.97Z",
"type": "SALE",
"status": "CAPTURED",
"channel": "CNP",
"capture_mode": "AUTO",
"amount": "14000",
"currency": "USD",
"merchant_amount": "14000",
"country": "US",
"merchant_id": "99999999999xxxxxx",
"merchant_name": "XXXX 9999 00000",
"account_id": "OOO_100000xxx999999",
"account_name": " ",
"reference": "100-b1000d0ec123456789aa",
"order": {
"reference": ""
},
"fees": {
"amount": "0",
"rate": "0.00",
"total_amount": "0"
},
"payment_method": {
"result": "00",
"message": "Success",
"entry_mode": "ECOM",
"narrative": "ACH Payment",
"bank_transfer": {
"masked_account_number_last4": "XXXXX1234",
"account_type": "CHECKING",
"bank": {
"name": ""
}
}
},
"batch_id": "",
"action": {
"id": "XXXX00000",
"type": "AUTHORIZE",
"time_created": "2024-01-16T08:06:40.97Z",
"result_code": "SUCCESS",
"app_id": "0000-9999",
"app_name": "HOAManager_app"
}
},
"EventTime": "2024-01-16T01:06:41.0076121+00:00"
},
{
"TransEvent": "ClosedBatch",
"EventData": null,
"EventTime": "2024-01-16T15:03:12.2401091+00:00"
},
{
"TransEvent": "Transferred",
"EventData": null,
"EventTime": "2024-01-19T16:47:41.8318725+00:00"
},
{
"TransEvent": "ACH Return",
"EventData": null,
"EventTime": "2024-01-20T09:46:18.3652227+00:00"
}
]
}
]
}
]
}
```
## Go further
You can use this process to reconcile other adjustments to your transfers. Just follow the steps and look for these values instead of `ChargeBackAmount` and `ReturnedAmount`:
* `holdAmount`
* `releasedAmount`
* `billingFeesAmount`
* `thirdPartyPaidAmount`
* `adjustmentsAmount`