Monitoring Payment Orders

Modern Treasury can monitor all of your originated payments for signs of fraud or money laundering.

1. Retrieve API Key

Go to your API Keys page. There you will find your Organization ID and API keys. Your default Sandbox or Production keys have the appropriate permissions. Otherwise, create or modify an API key to have manage permissions for Compliance and Accounts.

2. Create Payment Order

When creating a Payment Order, set the transaction_monitoring_enabled boolean to true.

curl --request POST \
  -u ORGANIZATION_ID:API_KEY \
  --url https://app.moderntreasury.com/api/payment_orders \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "ach",
    "amount": 1000,
    "direction": "debit",
    "currency": "USD",
    "originating_account_id": "0f8e3719-3dfd-4613-9bbf-c0333781b59f",
    "receiving_account_id": "5acec2ef-987b-4260-aa97-b719eeb0a8d5",
    "transaction_monitoring_enabled": true
  }'

When the Payment Order is created, transaction monitoring will be kicked off in the background.

3. Monitor Payment Order

When the Payment Order is created, transaction monitoring will be kicked off automatically.

Based on the compliance score, a Payment Order will be automatically approved, automatically denied, or have a Case opened for manual review.

Using your sandbox account, you can test these scenarios using select counterparties. If you are unfamiliar with making payments, check out the Payments Quickstart Guide, as well as the Internal Accounts and Counterparties Sandbox details pages. The sandbox will return dummy data and not run live checks on the data submitted, as those require calls to downstream data providers.

Compliance ScoreSandbox SimulationResult
low or mediumCreate a debit payment to the default Harry Potter counterparty.The Payment Order will be automatically approved.
highCreate a debit payment to the default Snape (ACH/Wire Return) - R03 No Account/Unable to Locate Account counterparty.A Case will be opened for manual review, and the Payment Order will be in needs_approval state.
very_highCreate a debit payment to the default Lucius (General Failure) counterparty.The Payment Order will be automatically denied.

Additional information about the Payment Order can be found in the related Decision object.

Webhooks are used to provide status updates on Payment Orders. The following are relevant states for transaction monitoring.

EventDescription
payment_order.needs_approvalA Payment Order needs approval when a transaction monitoring Case has been opened or when payment operations approval rules are triggered.
payment_order.approvedA Payment Order has been approved, either automatically or manually.
payment_order.deniedA Payment Order has been denied, either automatically or manually.

If a Payment Order is approved and will be sent to the bank. If a Payment Order is denied, it will not be sent (it is a terminal state).