Transaction Monitoring

ACH Risk Management

To enhance the management of the risks associated with ACH funding deposit transfer returns, we introduce the transaction monitoring feature that analyzes the originator of the ACH pull transfer, and, based on the Plaid Signal score, we determine if we need to place the transfer on hold due to high-risk customers.

Cybrid assesses each ACH funding deposit transfer, and if the customer is considered high-risk, the Cybrid platform automatically places a 2-day administrative hold on the customer's transfers once they move into the pending state.

The goal is to capture ACH returns within the standard 2-day window and protect Cybrid partners from issues related to ACH returns, while helping you keep your reserve account intact. If an ACH return occurs during the hold period, Cybrid will credit the customer's external bank account instead. This also ensures complete transparency, allowing you to display accurate account balances to end users.

ACH pull transfer lifecycle

The transfer can potentially progress through the following stages:

storing -> reviewing -> pending -> holding -> completed, or failed.

💡

The reviewing and holding states may or may not happen.

How to know if an ACH pull transfer is on hold?

You can monitor the state and check the hold_details block on any of the ACH pull funding deposit transfers.

API polling

The first method is to call the following API request:

GET /api/transfers/{transfer_guid}

{
  "guid": "string",
  "transfer_type": "string",
  "side": "string",
  "payment_rail": "ach",
  "state": "string",
  // ... other fields ...
  "hold_details": {
    "applicable_types": [
      "administrative"
    ],
    "duration": 172800,  // 172800 seconds = 2 days
    "started_at": "datetime"
  }
  // ... other fields ...
}

The applicable_types will be set very soon after creating the transfer to indicate the type of hold that will apply. However, the other fields (duration and started_at) will only be populated/updated once the hold has started.

You can use the summation of started_at + duration to calculate when funds will be released and available (automatically) in the platform_available field of the customer's fiat account.

Web event deliveries

The second approach is to monitor the delivery of webhook events for transfer.holding, and after that, use API polling to retrieve the ACH transfer details, such as the duration of the holding period. As soon as a transfer gets submitted to the Cybrid partner processor and enters the pending state, you can inspect hold_details information, and other information such as the applicable_types and whether it has been set to administrative.