Skip to main content

Bank Accounts

Bank accounts connect statements, payments, and reconciliation. Use these queries and mutations to provision cash/bank ledgers, update metadata, and remove unused accounts. Pair this with Bank Ingest when you import transactions.

Prerequisites​

  • A Naqood API secret or OAuth-issued secret scoped to the organization
  • The organization slug on every request
  • A role that can manage bank accounts

BankAccount fields​

FieldTypeNotes
idID!Stable identifier
nameString!Display label (for example “Main AED Account”)
bankNameStringOptional bank name
iban / bicStringOptional identifiers
branchStringOptional branch info
address / city / postalCodeStringOptional location details
countryStringISO country name
currencyString!ISO‑4217 code (for example AED, USD)
accountAccountLinked ledger account (when applicable)
externalIdStringUpstream reference (for example a bank feed identifier)
externalBalanceSnapshotBankAccountBalanceSnapshotOptional latest observed balance. Pass date for a historical day
createdAt / updatedAtTimestamp!Audit timestamps

BankAccountBalanceSnapshot fields:

FieldTypeNotes
bankAccountIdID!Bank account the snapshot belongs to
balanceString!Observed statement balance
balanceDateDate!Statement date of that balance
requestedDateDate!Date you asked for (balanceDate when omitted)
isVirtualBoolean!true when the result is carried forward from an earlier snapshot
sourceString!Where the snapshot came from

List bank accounts​

Fetch all bank and cash accounts for an organization.

query BankAccounts($slug: Slug!) {
organization(slug: $slug) {
bankAccounts {
id
name
bankName
currency
iban
bic
externalId
externalBalanceSnapshot {
balance
balanceDate
isVirtual
source
}
}
}
}

Create a bank account​

mutation CreateBankAccount($input: CreateBankAccountInput!) {
createBankAccount(input: $input)
}

CreateBankAccountInput highlights:

FieldRequiredNotes
slug✅Organization issuing the account
name✅Display label
currency✅ISO‑4217 code
bankNameOptionalBank label shown in UI
iban / bicOptionalBanking identifiers
externalIdOptionalUse to align with external systems

Update a bank account​

mutation UpdateBankAccount($input: UpdateBankAccountInput!) {
updateBankAccount(input: $input) {
id
name
bankName
iban
bic
externalId
}
}

Provide the id plus any fields you want to change (name, identifiers, externalId, and so on). Statement balances are not part of this mutation.

To record an observed statement balance, use updateBankAccountBalanceSnapshot:

mutation UpdateBankAccountBalanceSnapshot(
$input: UpdateBankAccountBalanceSnapshotInput!
) {
updateBankAccountBalanceSnapshot(input: $input) {
bankAccountId
balance
balanceDate
source
}
}

UpdateBankAccountBalanceSnapshotInput fields: bankAccountId, balance, and balanceDate (Date, for example "2025-11-05"). You can also send snapshots with transactions on Bank Ingest.