Skip to main content

What it’s for

POST /v1/transactions feeds transaction monitoring from your core banking system, wallet or M-Pesa integration. Each transaction you send is stored, checked against the customer’s history by the monitoring rules, and its counterparty (the person or business on the other side of the payment) is screened against sanctions and watch lists. When a rule is met, an alert appears on the Transactions page for your compliance team. The rules and how alerts are worked are in B13 Transaction monitoring (in Sentinel’s in-app Help). The API does the same job as the CSV upload on the Transactions page, with the same fields and the same checks. Use it to send transactions automatically, for example every few minutes or at the end of each day. Transaction monitoring does not use credits. Authentication, test mode, rate limits and the general error format are in Quick start.

Who can use it

  • Any system holding a valid API key for your organization with the Manage AML monitoring scope. The same scope covers the monitoring calls in AML and monitoring API.
  • An Admin or Developer creates keys and picks their scopes on the API Keys page.
  • A key created before scopes existed can call every endpoint.
  • Your organization must be on the Business or Enterprise plan, or on the free trial. On Starter and Growth, every call, test keys included, is refused with 403.
  • The alerts your transactions raise are seen and decided in Sentinel, not through the API. See B13 (in Sentinel’s in-app Help) for who can close or escalate them.

Step by step

All examples read the key from the SENTINEL_API_KEY environment variable, for example gt_live_.... The examples use Sentinel’s production address, https://robust-parakeet-542.convex.site. If API Keys shows a different API address for your organization, use that.

Send a batch

  1. Collect up to 500 transactions. They can belong to many customers.
  2. Give each one an externalId that never changes, such as the M-Pesa receipt number or your core banking transaction id.
  3. Set customerRef. Where you can, use the Sentinel reference (ver_...) of the customer’s KYC or AML check. Sentinel then knows the customer’s risk rating, applies stricter thresholds to high-risk customers, and links the alert to the check.
  4. Send them in one request as { "transactions": [...] }.

curl

Node

Python

Send more than 500

Split the list into chunks of 500 and send them one after another. If a request fails part-way, for example on a timeout or a 429, send the same chunk again. Rows that were already stored are counted as duplicates and skipped.

curl

This splits a JSON array file into chunks of 500 with jq, then posts each one.

Node

Python

Check the outcome

  1. Read accepted, duplicates and rejected in the response.
  2. Fix each rejected row using its error and send those rows again. The index is the row’s position in the array you sent, starting at 0.
  3. Open Transactions in Sentinel. New alerts usually appear within a minute.
Transactions page with alerts raised from API transactions

Try it with a test key

Send the same request with a test key (gt_test_...). Sentinel checks every row and returns the same counts with "sandbox": true, but stores nothing and raises no alerts. Use it to check your field mapping before you go live.

What each result means

Transaction fields

Other fields in a transaction are ignored. Only cash counts as cash for the large cash rule. cash and mpesa both count for the structuring rule (B13 (in Sentinel’s in-app Help)).

Response (202)

A 202 means the batch was read, even if some rows were rejected. Always check rejected.

Row errors

Request errors

Common questions

Is it safe to send the same batch twice?

Yes. Sentinel keeps one transaction per externalId in your organization, so a resend only increases duplicates. A resend can’t change a stored transaction. To correct one, use a new externalId.

Do test-key transactions show up in Sentinel?

No. A test key only checks the rows. Nothing is stored, no rules run and no counterparties are screened.

How quickly are alerts raised?

The rules run straight after each batch, and new alerts usually appear on the Transactions page within a minute. Counterparties are screened 20 at a time, so a batch with many new names can take a few minutes. Each name’s result is reused for 30 days.

Can I read alerts or decisions through the API?

No. There is no API call or webhook for transaction alerts. Your team sees them on the Transactions page and gets a “Transaction alerts” notification by default (B13 (in Sentinel’s in-app Help)).

Does sending transactions cost credits?

No. Transaction monitoring and counterparty screening are not charged.

How long are transactions kept?

For your organization’s retention period, at least seven years. An Admin sets it in Settings → Audit & data.