Reporting
Exact's Reporting APIs enable our partners and customers (merchants) to access all Account (Merchant Onboarding), Transaction, Settlement, Chargeback, Fee and Payout data for their account or portfolio of accounts. Queries are defined by Date/Time range and can be for a single or multiple accounts. Report data is returned either in Json or comma delimited file format. Reports include a expiration date set through the API.
Reporting Lifecycle
Reports are created through the UI or API. The backend then asynchronously runs the queries and returns the data. The UI will reflect when the report is available, or the API can be queried to determine the status and availability. Webhooks are also available to check for status programmatically.
Finished reports can be viewed through the UI and downloaded in CSV or JSON formats through the UI or API.
Creating Reports
To create a report, submit a JSON request as follows:
--url https://api.exactpaysandbox.com/report/transaction \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"parameters": {
"accounts": [
"Merchant Store 35 in Arizona"
],
"start": "2022-01-01T00:00:00.000Z",
"end": "2022-11-15T23:59:59.999Z",
"user": "61a78fe82c3156b0945ef135"
},
"expiresAt": "2030-01-01T00:00:00.000Z"
}
'
Download Reports
Download the report with a JSON request as follows:
--url 'https://api.exactpaysandbox.com/report/61a91d429bf82a2d8e95738f?format=csv' \
--header 'accept: application/json'
More details can be found in the API documentation Reporting section
Report Format
Each report's data fields are listed below. In the downloaded JSON or CSV reports, optional columns without data might not appear.
Settlement Report
Report data includes all transactions that have been settled through a Payment Network (Visa, Mastercard, AMEX, Discover, NACHA) and approved for funding. Funding timelines are defined in the terms of services but generally range 1 - 2 days for credit and debit card and 3 - 4 days for ACH.
Display Name | Field Name | Type | Description |
---|---|---|---|
Transaction Date | createdAt | Date | Creation date of the transaction |
Settlement Amount | amount | Number | Settlement Amount |
Account Name | account | String | Merchant Legal Name |
Merchant DBA Name | dbaName | String | Doing Business As Name |
Merchant MID | merchantMID | String | Acquirer Merchant ID |
Transaction Type | type | String | 'Card', 'ACH', or 'void'; 'payment' in JSON means Card, 'void' can be either card or ACH (To be improved in the future) |
Approved | approved | Boolean | If Transaction is approved or not |
Refunded | refunded | Boolean | If Transaction is refunded or not |
Settled | settled | Boolean | If Transaction is settled or not |
Settled At | settledAt | Date | Date when Transaction is settled |
Payment ID | paymentId | String | Unique Internal Payment Identifier created by Exact Payments |
Authorization Code | authorization | String | Alphanumeric Code - ACH begins with letter; Credit/Debit begins with number |
Surcharge Amount | surchargeAmount | Number | Surcharge Amount for Transaction |
Currency Code | currencyCode | String | 3 Character Currency Code (USD) |
Bank Response Code | bankResponse.code | String | In case of a card transaction it will always be blank; in case of an error with ACH it will be a 3-digit code |
Bank Response Message | bankResponse.message | String | In case of a card it will always be blank; in case of error with ACH it will be populated |
Card Holder | paymentMethodDetails.cardHolder | String | Name of Card Holder |
Card Number | paymentMethodDetails.last4 | String | Last 4 digits of card |
Expiry Month | paymentMethodDetails.expiryMonth | String | Card expiry month |
Expiry Year | paymentMethodDetails.expiryYear | String | Card expiry year |
Card Type | paymentMethodDetails.cardBrand | String | Card Brand Name (Visa, Mastercard, etc) |
AVS Response Code | avsCheck.code | String | Address Verification Service response code |
AVS Response Message | avsCheck.description | String | Text description of AVS check code |
CVC Response Code | cvcCheck.code | String | Credit Card Verification Code |
CVC Response Message | cvcCheck.description | String | Text description of CVC check code |
Customer Reference | customerRef | string | Reference number provided by Merchant |
Reference number | referenceNo | string | optional - Reference number found in chargeback/transaction/settlement report |
E-commerce Indicator | eCommerceIndicator | String | eg. 5, 6, or 7 |
Disbursement Report
Report data includes Daily Fees and Payouts for given accounts (Merchants) during the specified period. This data is valuable for partner and merchant reconciliation where bank deposits are matched to settlement (payouts) data and fees assessed.
Display Name | Field Name | Type | Description |
---|---|---|---|
Transaction Date | createdAt | Date | Creation date of the transaction |
Funding ID | fundingId | String | Maps to Dwolla Transfer ID |
Exact AccountID | account | String | Exact Internal Account ID |
Funding Type | fundingType | String | ACH or CARD - The payment method against to which the payout is been made |
Funding Amount | amount | Number | Funding Amount (in Cents) |
Currency | currencyCode | String | Currency of payout |
Status | status | String | PENDING or SUCCESS or FAILED - Mass payout will always be a batch, and the entire batch will never fail; each record within the batch will have its status. If something changes, the status will remain PENDING, and after a couple of days, it will return as SUCCESS or FAILED. - If a Batch fails, the system will continue to keep trying |
Account Report
Report data includes the current status of all submitted Account Onboarding Applications for a given user during the specified report range. Status includes Approved
, Declined
, Closed
, Terminated
, or Pending
.
Display Name | Field Name | Type | Description |
---|---|---|---|
Status | status | string | Worflow status (new ; pendingChecks ; checking ; errored ; autoDeclined ; withdrawn ; inProgress ; pended ; autoApproved ; manuallyApproved ; bankBoarding ; bankBoardingError ; Approved ; declined ; autoClosed ; reviewNeeded ; inRiskReview ; terminated ; webhooks ; finished ) |
Status Change Reason | statusChangeReason | string | Reason for the workflow status change |
Status Change Reason Note | statusChangeReasonNotes | string | Notes for the workflow status change |
Organization | name | string | Name of the partner organization who created this merchant |
KYC Results Status | krcResults.status | string | "Know Your Customer" status - e.g. "Passed" |
Merchant Name | merchant.name | string | Merchant's name |
Registration # | merchant.businessRegistrationNumber | string | Merchant's Business Registration Number |
DBA Name | merchant.dbaName | string | Merchant's Doing Business As name |
Established Date | merchant.establishedDate | date | Merchant's company establishment date |
# of Employees | merchant.numberOfEmployees | number | Number of employees in Merchant's company |
Phone | merchant.telephone | string | Merchant's Telephone number |
merchant.email | string | Merchant's Email | |
Web Site | merchant.onlinePresence | string | Merchant's online web site address |
merchant.facebook | string | Merchant's Facebook profile URL | |
merchant.twitter | string | Merchant's Twitter profile URL | |
merchant.linkedIn | string | Merchant's LinkedIn profile URL | |
Entity Type | merchant.entityType | string | LLC Or Corp Or Sole prop Or Non - Profit Or Public Corp |
Average Ticket | merchant.anticipatedTransAmounts.averageTicketSize | number | Average Payment amount per transaction |
Max Ticket | merchant.anticipatedTransAmounts.maxTicketSize | number | Maximum Payment amount per transaction |
Anticipated Monthly Volume | merchant.anticipatedTransAmounts.anticipatedMonthlyVolume | number | Anticipated Monthly total Payment amount |
MCC | merchant.mcc | string | Merchant Category Code |
Merchant Address Line 1 | merchant.address.line1 | string | Merchant company's address line 1 |
Merchant Address Line 2 | merchant.address.line2 | string | Merchant company' address line 2 |
Merchant Address City | merchant.address.city | string | Merchant company's city |
Merchant Address Postal Code | merchant.address.postalCode | string | Merchant company's postal code |
Merchant Address Country | merchant.address.country | string | Merchant company's country code (three characters) |
Merchant Address Country Subdivision | merchant.address.countrySubdivision | string | Merchant company's state code (two characters) |
Merchant Bank Name | merchant.bankingDetails.bankName | string | Merchant's bank name |
Merchant Routing Number | merchant.bankingDetails.routingNumber | string | Routing number for US/Bank Transit number for Canada |
Merchant DDA Number | merchant.bankingDetails.DDANumber | string | Merchant's bank account number |
Merchant Bank Number | merchant.bankingDetails.bankNumber | string | Bank Institution number for Canada |
Merchant Service Description | merchant.businessProfile.serviceDescription | string | The service or product description rendered by the merchant |
Merchant Currently Accepting Payments | merchant.businessProfile.currentlyAcceptingPayments | string | Whether the merchant is currently accepting the payments or not (Y or N) |
Merchant Acceptance Method Moto | merchant.businessProfile.acceptanceMethods.moto | number | Percentage of Payments via Acceptance Method of Mail/phone |
Merchant Acceptance Method Internet | merchant.businessProfile.acceptanceMethods.internet | number | Percentage of Payments via Acceptance Method of internet/online |
Merchant Acceptance Method Swipe | merchant.businessProfile.acceptanceMethods.swipe | number | Percentage of Payments via Acceptance Method of swipe/pos |
Merchant Acceptance Method Keyed | merchant.businessProfile.acceptanceMethods.keyed | number | Percentage of Payments via Acceptance Method of keyed |
Merchant Recurring Service | merchant.businessProfile.recurringService | string | Whether the merchant is currently offering any recurring services or not (Y or N) |
Merchant Recurring Service Description | merchant.businessProfile.recurringServiceDescription | string | Recurring service description |
Merchant Refund Policy Description | merchant.businessProfile.refundPolicyDescription | string | Refund policy of the merchant |
Merchant Payment Time | merchant.businessProfile.paymentTime | string | Payment time |
Merchant Delivery Time Frame | merchant.businessProfile.deliveryTimeFrame | string | Product delivery timeline |
Merchant Principal First Name | merchant.principal.firstName | string | Owner's/Authorized person's first name |
Merchant Principal Last Name | merchant.principal.lastName | string | Owner's/Authorized person's second name |
Merchant Principal Title | merchant.principal.title | string | CEO/President Or Owner/Founder Or VP/Director Or Manager Or Administrator Or Other |
Merchant Principal Telephone | merchant.principal.telephone | string | Owner's/Authorized person's telephone |
Merchant Principal Email | merchant.principal.email | string | Owner's/Authorized person's email |
Merchant Principal Date of Birth | merchant.principal.dateOfBirth | date | Owner's/Authorized person's Date of Birth |
Merchant Principal Drivers License | merchant.principal.driversLicense | string | Owner's/Authorized person's Driving License number |
Merchant Principal Drivers License State | merchant.principal.driversLicenseState | string | DL issue state |
Merchant Principal Drivers License Country | merchant.principal.driversLicenseCountry | string | DL issue country |
Merchant Principal SSN | merchant.principal.ssn | string | Owner's/Authorized person's Social Security Number or Social Insurance Number(SIN) (last 4) |
Merchant Principal SSN State | merchant.principal.ssnState | string | SSN issue state |
Merchant Principal SSN Country | merchant.principal.ssnCountry | string | SSN issue country |
Merchant Principal SSN Country Subdivision | merchant.principal.ssnCountrySubdivision | string | SSN issue country subdivision |
Merchant Principal Nationality | merchant.principal.nationaliity | string | Owner's/Authorized person's Nationality |
Merchant Principal Percent of Ownership | merchant.principal.percentOfOwnership | number | Owner's/Authorized person's % of ownership in the businessl |
Merchant Principal Line 1 | merchant.principal.address.line1 | string | Owner's/Authorized person's address line 1 |
Merchant Principal Line 2 | merchant.principal.address.line2 | string | Owner's/Authorized person's address line 2 |
Merchant Principal Address City | merchant.principal.address.city | string | Owner's/Authorized person's city |
Merchant Principal Address Postal Code | merchant.principal.address.postalCode | string | Owner's/Authorized person's postal code |
Merchant Principal Address Country | merchant.principal.address.country | string | Owner's/Authorized person's country (Three Character Code) |
Merchant Principal Address Country Subdivision | merchant.principal.address.countrySubdivision | string | Owner's/Authorized person's State/Province (Two character code) |
Created At | createdAt | date | Onboarding created time |
Transaction Report
Report data includes all transactions (Payments API) or events processed by a given user during the specified report range whether approved or declined.
Display Name | Field Name | Value Type | Description |
---|---|---|---|
Created At | createdAt | string | Transaction creation date |
Payment ID | paymentId | string | Unique Internal Payment Identifier created by Exact Payments |
Transaction Type | type | string | "Card", "ACH", or "void" - void can apply to either type |
Transaction State | state | string | Transaction processing status |
Account Name | account | string | Account Name |
Merchant DBA Name | dbaName | string | Doing Business As Name |
Merchant MID | merchantMID | string | Acquirer Merchant ID |
Soft Descriptor DBA Name | softDescriptor:dbaName | string | Appears on the cardholder statement |
Soft Descriptor State | softDescriptor:state | string | Appears on the cardholder statement |
Soft Descriptor Phone | softDescriptor:phone | string | Appears on the cardholder statement |
Approved | approved | Boolean | If Transaction is approved or not |
Captured | captured | Boolean | True If hold has been paid, It means the funds were captured at the time of processing; i.e., not just an authorization |
Capture Details | captureDetails | Object {array[string]; remaining(int)) | Contains a list of captured Payment IDs (or the Object in JSON) |
Refunded | refunded | Boolean | If transaction is refunded or not |
Refund Details | refundDetails | Object {array[string]; remaining(int)) | Contains a list of refunded Payment IDs (or the Object in JSON) |
Voided | voided | Boolean | True if Transaction was voided, False if not |
Settled | settled | Boolean | True if Transaction has been settled, False if not |
Settled At | settledAt | String | When the transaction was settled |
Authorization | authorization | String | Alphanumeric Code - ACH begins with letter; Credit/Debit begins with number |
Amount | amount | Number (2 decimal) | Settlement Amount (eg. 28.00) |
Surcharge Amount | surchargeAmount | Number (2 decimal) | Surcharge Amount (eg. 28.00) |
Currency Code | currencyCode | string | 3 Character Currency Code (eg. USD) |
Bank Response Code | bankResponse:code | string | In case of a card transaction it will always be blank; in case of an error with ACH it will be a 3-digit code |
Bank Response Message | bankResponse:message | string | In case of a card it will always be blank; in case of error with ACH it will be populated |
Exact Response Code | exactResponse:code | string | Response Code generated by Exact |
Exact Response Message | exactResponse:message | string | Response Message related to Exact Response Code |
Card Holder | paymentMethodDetails.cardholder | string | Name of Card Holder |
Card Number | paymentMethodDetails.last4 | string | Last 4 digits of Card Number |
Expiry Month | paymentMethodDetails.expiryMonth | string | Card Expiration Month |
Expiry Year | paymentMethodDetails.expiryYear | string | Card Expiration Year |
Card Type | paymentMethodDetails.cardBrand | string | Card Brand Name (Visa, Mastercard, etc) |
AVS Response Code | paymentMethodDetails.avsCheck.code | string | Address Verification service check |
AVS Response Message | paymentMethodDetails.avsCheck.description | string | Text description of AVS check code |
CVC Response Code | paymentMethodDetails.cvdCheck.code | string | Credit Card Verification Code |
CVC Response Message | paymentMethodDetails.cvdCheck.description | string | Any CVC description if provided |
E-commerce Indicator | options.ecommerceFlag | string | Passed by the merchant with initial transaction eg. 5, 6, 7 or another number |
Customer Reference | customerReference | string | Customer supplied reference |
Reference Number | ReferenceNum | string | Customer supplied reference |
Chargeback Report
Report data includes any Chargeback (credit/debit card) posted during the specified report range.
Display Name | Field Name | Type | Description |
---|---|---|---|
Account Name | account | string | Merchant Legal Name |
Merchant DBA Name | dbaName | string | Doing Business As Name |
Merchant MID | merchantMID | string | Acquirer Merchant ID |
Payment ID | paymentId | string | Unique internal payment identifier created by Exact |
Chargeback Date | paymentDate | string | Date when the chargeback was deducted from our receivables |
Amount | amount | Number (2 decimal) | Transaction Amount (eg. 28.00) |
Surcharge Amount | surchgAmount | Number (2 decimal) | Part of the original transaction - see Settlement Report |
Convenience Fee Amt | convnceAmt | Number (2 decimal) | Part of the original transaction |
Card Plan | cardPlan | string | Type of Credit Plan |
Card Number | cardNo | string | Masked 15 digit card number |
Transaction Date | transactionDate | string | Date of the Transaction |
Settlement Date | settlementDate | string | Date of Transaction Settlement |
Exact Payment ID | roctext | string | Unique Internal Payment Identifier created by Exact Payments |
Currency Code | currencyCode | string | 3 character currency code |
ChargeBack Reason Desc | chgbkRsnDesc | string | Reason for the chargeback |
Created At | createdAt | Date | Chargeback record creation date |
Updated At | updatedAt | Date | Chargeback record updated date |
ACH Credit Report
Report data includes current status or reject code and both the unique Payment ID and the associated original debit transaction ID if applicable.
Display Name | Field Name | Type | Description |
---|---|---|---|
Created At | createdAt | Date | Chargeback record creation date |
Payment ID | paymentId | string | Unique internal payment identifier created by Exact |
Transaction Type | type | string | "ach-credit" |
Account Name | account | string | Merchant Legal Name |
Authorization | authorization | String | Alphanumeric Code - ACH begins with letter; Credit/Debit begins with number |
Amount | amount | Number (2 decimal) | Settlement Amount (eg. 28.00) |
Bank Response Code | bankResponse:code | string | In case of an error with ACH it will be a 3-digit code |
Bank Response Message | bankResponse:message | string | In case of an error with ACH it will be populated |
Failure Reason Code | failureReason:code | string | In case of anerror with ACH it will be populated |
Failure Reason Description | failureReason:description | string | A brief description for the failure |
Failure Reason Explanation | failureReason:explanation | string | A detailed explanation for the failure |
ACH Debit Payment ID | achDebitPaymentId | string | Unique internal payment identifier for the original transaction |
Customer Reference | customerReference | string | Customer supplied reference |
Merchant Funding Report
Report data allows merchants to determine which transactions are included in amounts we fund (deposit) into their bank account. This report allows merchants to review and validate that approved sale transactions, as well as refunds and chargebacks, are funded correctly into their deposit account by Exact.
Display Name | Field Name | Type | Description |
---|---|---|---|
Funding ID | fundingId | string | Numerical value assigned to the funding event |
Funding Date | fundingDate | date | Funding event date |
Merchant DBA Name | dbaName | string | Doing Business As Name |
Payment ID | paymentId | string | Unique internal payment identifier created by Exact |
Card Type | paymentMethodDetails.cardBrand | string | Card Brand Name (Visa, Mastercard, etc) |
Card Number | paymentMethodDetails.last4 | string | Last 4 digits of Card Number |
Authorization Code | authorizationCode | String | Alphanumeric Code - ACH begins with letter; Credit/Debit begins with number |
Refund | refund | Boolean | Indicates if transaction is a refund |
Chargeback | chargeback | Boolean | Indicates if transaction is a chargeback |
Amount | amount | Number (2 decimal) | Settlement Amount (eg. 28.00) |
Transaction Date | transactionDate | string | Transaction creation date |
Reference Number | referenceNumber | string | Customer supplied reference |