Skip to main content

Reconcile transactions

Reconciliation allows you to verify that your internal transaction records match BVNK's transaction data. By comparing your system's records with BVNK's transaction reports, you can identify discrepancies, ensure accounting accuracy, and maintain compliance with financial reporting requirements.

You can generate reconciliation reports manually on demand or automatically on a schedule. Reports are available in CSV or JSON format and can be delivered via email or webhook. Use these reports to:

  • Verify transaction amounts and balances.
  • Identify missing or duplicate transactions.
  • Reconcile fees and currency conversions.
  • Prepare accounting records and financial statements.

Prerequisites

To use the Reconciliation API, you need to have:

  • BVNK account in the sandbox or production environment
  • API credentials: Hawk Auth ID and Secret Key

Retrieve transaction history

Create reconciliation reports manually using the API or the Portal.

To generate transaction and balance reports via API, use the following endpoints:

  • POST /ledger/v1/reports: Recommended for reconciliation. Generates comprehensive transaction reports for specific wallets or all wallets. Supports CSV and JSON formats, as well as webhook or email delivery.
  • GET /ledger/v1/transactions: Use for real-time transaction queries. Returns paginated results suitable for API integration, not bulk reconciliation.
  • GET /api/wallet/balances: Use to retrieve balance snapshots for a specific date. Useful for balance reconciliation.
  • GET /api/v1/pay/summary: Use for crypto payment history only. Limited to crypto transactions.
  • GET /api/v2/channel: Use for channel payment history only. Limited to channel transactions.

See the endpoints' documentation for more information.

Schedule a recurring report

Schedule recurring reports for automated email delivery on a regular basis.

info

You can create only one recurring export per account.

Scheduled reports are generated for the previous time period:

  • Daily: Generated for the previous day. For example, a report scheduled for January 2nd contains data from January 1st.
  • Weekly: Generated for the previous week. For example, a report scheduled for Wednesday contains data from the previous Tuesday to the current Wednesday.
  • Monthly: Generated for the previous month. For example, a report scheduled for February 1st contains data from January.
Mind the data lag

Reports have a data lag due to processing time:

  • Production environment: 1-hour lag. A report generated at 9:00 AM includes transactions up to 8:00 AM.
  • Sandbox environment: 8-hour lag. A report generated at 9:00 AM includes transactions up to 1:00 AM.

If you try to create a schedule when one already exists, you receive a 409 Conflict error. Delete or update the existing export schedule first.

To schedule a recurring report via API, use the following endpoints:

Manage scheduled reports

To change an existing schedule, do the following:

Use the PUT /ledger/v1/report-schedules/{scheduleId} endpoint to update the schedule parameters of a recurring report.

To delete a schedule, do the following:

Use the DELETE /ledger/v1/report-schedules/{scheduleId} endpoint to delete a recurring report for a specific wallet.


Report data

The downloadable reports are created in the CSV or JSON format.

Use the report data to check that balances, amounts, and fees match between your system and BVNK.

You can import the data into accounting tools for further analysis or open it in any spreadsheet editor.

Download link expiration

Report download links remain active for 24 hours after generation. After that, the report is no longer accessible. Download and save your reports promptly.

In the report, you can find the following data:

FieldDescription
Account NameName of the BVNK account associated with the transaction.
Account ReferenceUnique reference identifier for the account.
Date CreatedTimestamp when the transaction was created.
CurrencyCurrency code of the transaction.
Transaction IDUnique identifier for the transaction.
Transaction TypeType of transaction. Possible values:
- PAYOUT
- PAYIN
- FEE
- internalTransfer
- paymentOut
- channelDeposit
- reversal
DescriptionHuman-readable description of the transaction.
AmountTransaction amount.
Transaction HashBlockchain transaction hash for crypto transactions.
Transaction UUIDUniversally unique identifier for the transaction.
Payment TypeType of payment: incoming (IN) or outgoing (OUT).
Payment StatusCurrent status of the payment. Possible values:
- PENDING
- COMPLETE
- CANCELLED
- EXPIRED
- UNDERPAID
Merchant ReferenceReference identifier provided by the merchant.
From Currency CodeSource currency code for currency conversion transactions.
To Currency CodeDestination currency code for currency conversion transactions.
Merchant IDUnique identifier for your BVNK account. In the Direct model, this matches the Account ID and identifies the account that uses BVNK services directly.
Running BalanceCumulative balance after the transaction.
Transaction ContextAdditional context or metadata for the transaction.
Wallet LsidWallet ledger identifier.
Wallet IdUnique identifier for the wallet.
Wallet DescriptionHuman-readable description of the wallet.
Required AmountAmount required for the transaction.
Paid Actual AmountActual amount that was paid.
Paid Amount CurrencyCurrency code of the paid amount.
Transaction AmountTotal transaction amount.
Display CurrencyCurrency code used for display purposes.
Exchange RateExchange rate applied for currency conversion.
Display Actual AmountActual amount displayed in the display currency.
Display Required AmountRequired amount displayed in the display currency.
Counterparty DetailsInformation about the counterparty in the transaction.
Contact NameName of the contact associated with the transaction.
Customer IdUnique identifier for the customer. In the Embedded model, this identifies your customers who use BVNK services via your account.
Country CodeISO country code associated with the transaction.

Reconcile your records

After generating a report, compare it with your internal transaction records:

  1. Match transactions: Use Transaction ID, Transaction UUID, or Merchant Reference to match BVNK transactions with your records.

  2. Verify amounts: Compare Amount, Transaction Amount, and Running Balance fields with your records.

  3. Check statuses: Verify that Payment Status matches your system's status. Investigate any PENDING or UNDERPAID transactions.

  4. Reconcile fees: Compare fee amounts in your records with BVNK's fee calculations.

  5. Handle discrepancies: If you find mismatches:

    • Verify the date range of your report
    • Check for transactions that may be in different statuses
    • Contact BVNK support if discrepancies persist

See also

To learn how to receive reconciliation reports via webhook delivery instead of email, see Receive transactions report via webhook.