Skip to main content
Transactions represent financial operations that need to be tracked for compliance purposes.

Creating Transactions

import { Currency } from "@artu-ai/compliance-sdk";

const transaction = await sdk.transactions.create({
  amount: 50000,
  currency: Currency.MXN,
  timestamp: new Date(),
  relatedClientIds: ["client_abc123"],
});

Accessing Transaction Properties

const txn = await sdk.transactions.retrieve("txn_xyz789");

console.log(txn.id);              // "txn_xyz789"
console.log(txn.amount);          // 50000
console.log(txn.currency);        // "MXN"
console.log(txn.formattedAmount); // "$50,000.00 MXN"
console.log(txn.status);          // "completed"
console.log(txn.isCompleted);     // true
Need to search by your own IDs or metadata? Use retrieveByExternalId or retrieveByMetadata (see SDK reference).

Client Roles

When linking clients, you can specify their role:
RoleDescription
originatorTransaction initiator
beneficiaryTransaction recipient
intermediaryIntermediary party
guarantorGuarantor of the transaction
// Link originator
await sdk.transactions.linkClient(txnId, originatorId, "originator");

// Link beneficiary
await sdk.transactions.linkClient(txnId, beneficiaryId, "beneficiary");

Updating Transactions

const updated = await sdk.transactions.update("txn_xyz789", {
  metadata: {
    reference: "INV-2024-001",
    category: "payment",
  },
});

Listing Transactions

Basic List

const { data, pagination } = await sdk.transactions.list({
  limit: 50,
});

With Filtering

import { dateRange, atLeast } from "@artu-ai/compliance-sdk";

const { data } = await sdk.transactions.list({
  filter: {
    amount: atLeast(10000),
    createdAt: dateRange(new Date("2024-01-01"), new Date("2024-12-31")),
  },
});

By Client

const { data } = await sdk.transactions.listByClient("client_abc123");

Async Iterator

for await (const txn of sdk.transactions.iterate()) {
  console.log(txn.id, txn.amount);
}

Deleting Transactions

await sdk.transactions.delete("txn_xyz789");

Transaction Model Properties

PropertyTypeDescription
idstringUnique identifier
amountnumberTransaction amount
currencyCurrencyCurrency code
formattedAmountstringFormatted amount
timestampDateTransaction timestamp
statusTransactionStatusTransaction status
isCompletedbooleanIs completed
isPendingbooleanIs pending
relatedClientIdsstring[]Linked client IDs
descriptionstring | undefinedDescription
externalIdstring | undefinedYour system’s ID
metadataobject | undefinedCustom metadata
createdAtDateCreation timestamp
updatedAtDateLast update timestamp
await sdk.transactions.linkClient(txnId, clientId, "originator");
await sdk.transactions.unlinkClient(txnId, clientId);

Replace All Clients

await sdk.transactions.setClients(txnId, [
  { clientId: "client_a", role: "originator" },
  { clientId: "client_b", role: "beneficiary" },
]);

Batch Operations

Create multiple transactions in one request:
const result = await sdk.transactions.createMany([
  { amount: 10000, currency: Currency.MXN, ... },
  { amount: 25000, currency: Currency.MXN, ... },
]);

if (result.atomic) {
  console.log("All transactions created:", result.data.length);
}
See Batch Operations for more details.