[{"data":1,"prerenderedAt":1324},["ShallowReactive",2],{"navigation_docs":3,"-concepts-events-and-decisions":183,"-concepts-events-and-decisions-surround":1319},[4,25,60,81,153,168],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-zap",{"title":21,"path":22,"stem":23,"icon":24},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-server",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Concepts","\u002Fconcepts","2.concepts",[30,35,40,45,50,55],{"title":31,"path":32,"stem":33,"icon":34},"How AML works","\u002Fconcepts\u002Fhow-aml-works","2.concepts\u002F1.how-aml-works","i-lucide-book-open",{"title":36,"path":37,"stem":38,"icon":39},"Events and decisions","\u002Fconcepts\u002Fevents-and-decisions","2.concepts\u002F2.events-and-decisions","i-lucide-activity",{"title":41,"path":42,"stem":43,"icon":44},"Rules","\u002Fconcepts\u002Frules","2.concepts\u002F3.rules","i-lucide-scale",{"title":46,"path":47,"stem":48,"icon":49},"Alerts, cases and reporting","\u002Fconcepts\u002Falerts-cases-reporting","2.concepts\u002F4.alerts-cases-reporting","i-lucide-folder-search",{"title":51,"path":52,"stem":53,"icon":54},"Entities and the graph","\u002Fconcepts\u002Fentities-and-graph","2.concepts\u002F5.entities-and-graph","i-lucide-network",{"title":56,"path":57,"stem":58,"icon":59},"Audit log","\u002Fconcepts\u002Faudit-log","2.concepts\u002F6.audit-log","i-lucide-scroll-text",{"title":61,"icon":6,"path":62,"stem":63,"children":64,"page":6},"Guides","\u002Fguides","3.guides",[65,70,75],{"title":66,"path":67,"stem":68,"icon":69},"Guides by role","\u002Fguides\u002Fby-role","3.guides\u002F1.by-role","i-lucide-users",{"title":71,"path":72,"stem":73,"icon":74},"Integration plan","\u002Fguides\u002Fintegration-plan","3.guides\u002F2.integration-plan","i-lucide-list-checks",{"title":76,"path":77,"stem":78,"icon":79,"badge":80},"Connecting a rail","\u002Fguides\u002Fconnecting-a-rail","3.guides\u002F3.connecting-a-rail","i-lucide-plug","Coming soon",{"title":82,"icon":6,"path":83,"stem":84,"children":85,"page":6},"API reference","\u002Fapi","4.api",[86,91,96,101,106,111,116,121,126,129,134,139,144,149],{"title":87,"path":88,"stem":89,"icon":90},"Authentication","\u002Fapi\u002Fauthentication","4.api\u002F01.authentication","i-lucide-key-round",{"title":92,"path":93,"stem":94,"icon":95},"Errors","\u002Fapi\u002Ferrors","4.api\u002F02.errors","i-lucide-circle-alert",{"title":97,"path":98,"stem":99,"icon":100},"Idempotency","\u002Fapi\u002Fidempotency","4.api\u002F03.idempotency","i-lucide-repeat",{"title":102,"path":103,"stem":104,"icon":105},"Health","\u002Fapi\u002Fhealth","4.api\u002F04.health","i-lucide-heart-pulse",{"title":107,"path":108,"stem":109,"icon":110},"Entities","\u002Fapi\u002Fentities","4.api\u002F05.entities","i-lucide-user-round",{"title":112,"path":113,"stem":114,"icon":115},"Events","\u002Fapi\u002Fevents","4.api\u002F06.events","i-lucide-send",{"title":117,"path":118,"stem":119,"icon":120},"Decisions","\u002Fapi\u002Fdecisions","4.api\u002F07.decisions","i-lucide-gavel",{"title":122,"path":123,"stem":124,"icon":125},"Alerts","\u002Fapi\u002Falerts","4.api\u002F08.alerts","i-lucide-bell",{"title":41,"path":127,"stem":128,"icon":44},"\u002Fapi\u002Frules","4.api\u002F09.rules",{"title":130,"path":131,"stem":132,"icon":133},"Screening","\u002Fapi\u002Fscreening","4.api\u002F10.screening","i-lucide-user-search",{"title":135,"path":136,"stem":137,"icon":138},"API keys","\u002Fapi\u002Fapi-keys","4.api\u002F11.api-keys","i-lucide-key",{"title":140,"path":141,"stem":142,"icon":143},"Overview","\u002Fapi\u002Foverview","4.api\u002F12.overview","i-lucide-layout-dashboard",{"title":145,"path":146,"stem":147,"icon":148,"badge":80},"Webhooks","\u002Fapi\u002Fwebhooks","4.api\u002F13.webhooks","i-lucide-webhook",{"title":80,"path":150,"stem":151,"icon":152,"badge":80},"\u002Fapi\u002Fcoming-soon","4.api\u002F14.coming-soon","i-lucide-clock",{"title":154,"icon":6,"path":155,"stem":156,"children":157,"page":6},"Security and licensing","\u002Fsecurity","5.security",[158,163],{"title":159,"path":160,"stem":161,"icon":162},"Data flows","\u002Fsecurity\u002Fdata-flows","5.security\u002F1.data-flows","i-lucide-shield-check",{"title":164,"path":165,"stem":166,"icon":167,"badge":80},"Licensing and metering","\u002Fsecurity\u002Flicensing","5.security\u002F2.licensing","i-lucide-file-badge",{"title":169,"icon":6,"path":170,"stem":171,"children":172,"page":6},"Reference","\u002Freference","6.reference",[173,178],{"title":174,"path":175,"stem":176,"icon":177},"Glossary","\u002Freference\u002Fglossary","6.reference\u002F1.glossary","i-lucide-book-a",{"title":179,"path":180,"stem":181,"icon":182},"FAQ","\u002Freference\u002Ffaq","6.reference\u002F2.faq","i-lucide-circle-help",{"id":184,"title":36,"body":185,"description":1312,"extension":1313,"links":1314,"meta":1315,"navigation":1316,"path":37,"seo":1317,"stem":38,"__hash__":1318},"docs\u002F2.concepts\u002F2.events-and-decisions.md",{"type":186,"value":187,"toc":1304},"minimark",[188,192,196,204,212,374,672,676,682,796,803,807,814,868,871,874,917,923,1189,1210,1213,1217,1268,1275,1279,1286,1289,1293,1300],[189,190,191],"p",{},"Send an event, get a decision. In sync mode the answer comes back on the same request, fast enough to wait for before you move money.",[193,194,112],"h2",{"id":195},"events",[189,197,198,199,203],{},"An ",[200,201,202],"strong",{},"event"," is something that happened to a customer: a transfer, a card authorisation, a cash-in or cash-out at an agent, a payout, a login, a change of phone number.",[189,205,206,207,211],{},"Events are immutable. Each one carries an ",[208,209,210],"code",{},"idempotency_key"," that's unique within your organisation, so a retried request returns the original event and decision instead of creating a second one.",[213,214,215,231],"table",{},[216,217,218],"thead",{},[219,220,221,225,228],"tr",{},[222,223,224],"th",{},"Field",[222,226,227],{},"Required",[222,229,230],{},"Meaning",[232,233,234,261,272,284,304,328,350,362],"tbody",{},[219,235,236,242,245],{},[237,238,239],"td",{},[208,240,241],{},"type",[237,243,244],{},"Yes",[237,246,247,248,251,252,251,255,251,258],{},"What happened, for example ",[208,249,250],{},"transfer.outbound",", ",[208,253,254],{},"card.authorization",[208,256,257],{},"cash_out",[208,259,260],{},"login",[219,262,263,267,269],{},[237,264,265],{},[208,266,210],{},[237,268,244],{},[237,270,271],{},"Your unique ID for this event. Replays return the original result.",[219,273,274,279,281],{},[237,275,276],{},[208,277,278],{},"occurred_at",[237,280,244],{},[237,282,283],{},"When it happened on your side, RFC 3339",[219,285,286,291,294],{},[237,287,288],{},[208,289,290],{},"amount",[237,292,293],{},"For money events",[237,295,296,299,300,303],{},[208,297,298],{},"value"," as a number and ",[208,301,302],{},"currency"," as a three-letter ISO 4217 code",[219,305,306,311,314],{},[237,307,308],{},[208,309,310],{},"rail",[237,312,313],{},"No",[237,315,316,317,251,320,323,324,327],{},"Which network the money moves on, such as ",[208,318,319],{},"mobile_money",[208,321,322],{},"card"," or ",[208,325,326],{},"bank_transfer",". Rules can use it.",[219,329,330,335,337],{},[237,331,332],{},[208,333,334],{},"source",[237,336,313],{},[237,338,339,342,343,346,347,349],{},[208,340,341],{},"entity_id"," and ",[208,344,345],{},"account_id"," of the sender. Features and alert grouping use ",[208,348,341],{},".",[219,351,352,357,359],{},[237,353,354],{},[208,355,356],{},"destination",[237,358,313],{},[237,360,361],{},"Who and which account received it",[219,363,364,369,371],{},[237,365,366],{},[208,367,368],{},"device",[237,370,313],{},[237,372,373],{},"Device details. Stored with the event, not used by rules yet.",[375,376,382],"pre",{"className":377,"code":378,"filename":379,"language":380,"meta":381,"style":381},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"type\": \"transfer.outbound\",\n  \"idempotency_key\": \"txn_8f2a91\",\n  \"occurred_at\": \"2026-10-15T11:02:41Z\",\n  \"amount\": {\n    \"value\": 4950,\n    \"currency\": \"USD\"\n  },\n  \"rail\": \"mobile_money\",\n  \"source\": {\n    \"entity_id\": \"cus_10442\",\n    \"account_id\": \"wal_8812\"\n  },\n  \"destination\": {\n    \"account_id\": \"wal_6603\"\n  },\n  \"device\": {\n    \"id\": \"dev_a3f19c\"\n  }\n}\n","Event","json","",[208,383,384,393,419,439,459,473,492,511,517,536,549,569,587,592,605,623,628,641,660,666],{"__ignoreMap":381},[385,386,389],"span",{"class":387,"line":388},"line",1,[385,390,392],{"class":391},"sMK4o","{\n",[385,394,396,399,402,405,408,411,414,416],{"class":387,"line":395},2,[385,397,398],{"class":391},"  \"",[385,400,241],{"class":401},"spNyl",[385,403,404],{"class":391},"\"",[385,406,407],{"class":391},":",[385,409,410],{"class":391}," \"",[385,412,250],{"class":413},"sfazB",[385,415,404],{"class":391},[385,417,418],{"class":391},",\n",[385,420,422,424,426,428,430,432,435,437],{"class":387,"line":421},3,[385,423,398],{"class":391},[385,425,210],{"class":401},[385,427,404],{"class":391},[385,429,407],{"class":391},[385,431,410],{"class":391},[385,433,434],{"class":413},"txn_8f2a91",[385,436,404],{"class":391},[385,438,418],{"class":391},[385,440,442,444,446,448,450,452,455,457],{"class":387,"line":441},4,[385,443,398],{"class":391},[385,445,278],{"class":401},[385,447,404],{"class":391},[385,449,407],{"class":391},[385,451,410],{"class":391},[385,453,454],{"class":413},"2026-10-15T11:02:41Z",[385,456,404],{"class":391},[385,458,418],{"class":391},[385,460,462,464,466,468,470],{"class":387,"line":461},5,[385,463,398],{"class":391},[385,465,290],{"class":401},[385,467,404],{"class":391},[385,469,407],{"class":391},[385,471,472],{"class":391}," {\n",[385,474,476,479,482,484,486,490],{"class":387,"line":475},6,[385,477,478],{"class":391},"    \"",[385,480,298],{"class":481},"sBMFI",[385,483,404],{"class":391},[385,485,407],{"class":391},[385,487,489],{"class":488},"sbssI"," 4950",[385,491,418],{"class":391},[385,493,495,497,499,501,503,505,508],{"class":387,"line":494},7,[385,496,478],{"class":391},[385,498,302],{"class":481},[385,500,404],{"class":391},[385,502,407],{"class":391},[385,504,410],{"class":391},[385,506,507],{"class":413},"USD",[385,509,510],{"class":391},"\"\n",[385,512,514],{"class":387,"line":513},8,[385,515,516],{"class":391},"  },\n",[385,518,520,522,524,526,528,530,532,534],{"class":387,"line":519},9,[385,521,398],{"class":391},[385,523,310],{"class":401},[385,525,404],{"class":391},[385,527,407],{"class":391},[385,529,410],{"class":391},[385,531,319],{"class":413},[385,533,404],{"class":391},[385,535,418],{"class":391},[385,537,539,541,543,545,547],{"class":387,"line":538},10,[385,540,398],{"class":391},[385,542,334],{"class":401},[385,544,404],{"class":391},[385,546,407],{"class":391},[385,548,472],{"class":391},[385,550,552,554,556,558,560,562,565,567],{"class":387,"line":551},11,[385,553,478],{"class":391},[385,555,341],{"class":481},[385,557,404],{"class":391},[385,559,407],{"class":391},[385,561,410],{"class":391},[385,563,564],{"class":413},"cus_10442",[385,566,404],{"class":391},[385,568,418],{"class":391},[385,570,572,574,576,578,580,582,585],{"class":387,"line":571},12,[385,573,478],{"class":391},[385,575,345],{"class":481},[385,577,404],{"class":391},[385,579,407],{"class":391},[385,581,410],{"class":391},[385,583,584],{"class":413},"wal_8812",[385,586,510],{"class":391},[385,588,590],{"class":387,"line":589},13,[385,591,516],{"class":391},[385,593,595,597,599,601,603],{"class":387,"line":594},14,[385,596,398],{"class":391},[385,598,356],{"class":401},[385,600,404],{"class":391},[385,602,407],{"class":391},[385,604,472],{"class":391},[385,606,608,610,612,614,616,618,621],{"class":387,"line":607},15,[385,609,478],{"class":391},[385,611,345],{"class":481},[385,613,404],{"class":391},[385,615,407],{"class":391},[385,617,410],{"class":391},[385,619,620],{"class":413},"wal_6603",[385,622,510],{"class":391},[385,624,626],{"class":387,"line":625},16,[385,627,516],{"class":391},[385,629,631,633,635,637,639],{"class":387,"line":630},17,[385,632,398],{"class":391},[385,634,368],{"class":401},[385,636,404],{"class":391},[385,638,407],{"class":391},[385,640,472],{"class":391},[385,642,644,646,649,651,653,655,658],{"class":387,"line":643},18,[385,645,478],{"class":391},[385,647,648],{"class":481},"id",[385,650,404],{"class":391},[385,652,407],{"class":391},[385,654,410],{"class":391},[385,656,657],{"class":413},"dev_a3f19c",[385,659,510],{"class":391},[385,661,663],{"class":387,"line":662},19,[385,664,665],{"class":391},"  }\n",[385,667,669],{"class":387,"line":668},20,[385,670,671],{"class":391},"}\n",[193,673,675],{"id":674},"the-request-path","The request path",[189,677,678,679,407],{},"Here is what happens on a synchronous request, ",[208,680,681],{},"POST \u002Fv1\u002Fevents?mode=sync",[213,683,684,697],{},[216,685,686],{},[219,687,688,691,694],{},[222,689,690],{},"Step",[222,692,693],{},"Where",[222,695,696],{},"What happens",[232,698,699,710,721,732,743,754,764,781],{},[219,700,701,704,707],{},[237,702,703],{},"1",[237,705,706],{},"Your payment service → API",[237,708,709],{},"You send the event",[219,711,712,715,718],{},[237,713,714],{},"2",[237,716,717],{},"API",[237,719,720],{},"Checks the key and finds your organisation",[219,722,723,726,729],{},[237,724,725],{},"3",[237,727,728],{},"PostgreSQL",[237,730,731],{},"Inserts the event; a repeated idempotency key returns the stored one",[219,733,734,737,740],{},[237,735,736],{},"4",[237,738,739],{},"Redis or PostgreSQL",[237,741,742],{},"Reads 24-hour features for the source",[219,744,745,748,751],{},[237,746,747],{},"5",[237,749,750],{},"Rules engine",[237,752,753],{},"Evaluates every active rule",[219,755,756,759,761],{},[237,757,758],{},"6",[237,760,750],{},[237,762,763],{},"Adds up the score and picks the decision and reasons",[219,765,766,769,771],{},[237,767,768],{},"7",[237,770,728],{},[237,772,773,774,323,777,780],{},"Writes the decision, with its reasons and feature values, and puts a ",[208,775,776],{},"review",[208,778,779],{},"block"," on an alert",[219,782,783,786,789],{},[237,784,785],{},"8",[237,787,788],{},"API → your payment service",[237,790,791,792,795],{},"Returns ",[208,793,794],{},"200"," with the decision",[189,797,798,799,802],{},"Steps 3 to 7 hit the database a fixed number of times, whatever the size of the customer's history. The target is a p99 under 300 ms. With ",[208,800,801],{},"SENTINEL_REDIS_ADDR"," set, the counters come from Redis, and Sentinel falls back to PostgreSQL if Redis is slow or down.",[193,804,806],{"id":805},"the-decision","The decision",[189,808,809,810,813],{},"Every rule that matches adds its weight to a ",[200,811,812],{},"risk score"," from 0 to 100 and records a reason. The score becomes one of three decisions:",[213,815,816,829],{},[216,817,818],{},[219,819,820,823,826],{},[222,821,822],{},"Score",[222,824,825],{},"Decision",[222,827,828],{},"What your system should do",[232,830,831,844,856],{},[219,832,833,836,841],{},[237,834,835],{},"Under 50",[237,837,838],{},[208,839,840],{},"allow",[237,842,843],{},"Let the payment through",[219,845,846,849,853],{},[237,847,848],{},"50 to 89",[237,850,851],{},[208,852,776],{},[237,854,855],{},"Let it through or hold it (you choose). The decision goes on an alert for an analyst.",[219,857,858,861,865],{},[237,859,860],{},"90 and above",[237,862,863],{},[208,864,779],{},[237,866,867],{},"Stop the payment. The decision goes on an alert.",[189,869,870],{},"The score is capped at 100. The thresholds are fixed at 50 and 90 in the current release.",[189,872,873],{},"Take a transfer of 4,950 where both built-in rules fire:",[213,875,876,889],{},[216,877,878],{},[219,879,880,883,886],{},[222,881,882],{},"Rule",[222,884,885],{},"Why it fired",[222,887,888],{},"Points",[232,890,891,904],{},[219,892,893,898,901],{},[237,894,895],{},[208,896,897],{},"structuring_below_threshold",[237,899,900],{},"Third transfer just under 5,000 in 24 hours",[237,902,903],{},"+60",[219,905,906,911,914],{},[237,907,908],{},[208,909,910],{},"high_velocity_24h",[237,912,913],{},"20th transaction from this source in 24 hours",[237,915,916],{},"+30",[189,918,919,920,922],{},"The total is 90, so the answer is ",[208,921,779],{},". Reasons are sorted by rule key:",[375,924,926],{"className":377,"code":925,"filename":825,"language":380,"meta":381,"style":381},"{\n  \"id\": \"5f0c2b7e-3a41-4c1d-9b6e-1f2a3b4c5d6e\",\n  \"event_id\": \"9b21d4c8-7e5f-4a3b-8c2d-6e7f8a9b0c1d\",\n  \"decision\": \"block\",\n  \"risk_score\": 90,\n  \"alert_id\": \"c7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a\",\n  \"reasons\": [\n    {\n      \"rule\": \"high_velocity_24h\",\n      \"version\": 1,\n      \"detail\": \"20 or more transactions from the same source within 24h\"\n    },\n    {\n      \"rule\": \"structuring_below_threshold\",\n      \"version\": 1,\n      \"detail\": \"repeated transfers just below the reporting threshold within 24h\"\n    }\n  ],\n  \"created_at\": \"2026-10-15T11:02:41.041Z\"\n}\n",[208,927,928,932,951,971,990,1006,1026,1040,1045,1065,1081,1099,1104,1108,1126,1140,1157,1162,1167,1185],{"__ignoreMap":381},[385,929,930],{"class":387,"line":388},[385,931,392],{"class":391},[385,933,934,936,938,940,942,944,947,949],{"class":387,"line":395},[385,935,398],{"class":391},[385,937,648],{"class":401},[385,939,404],{"class":391},[385,941,407],{"class":391},[385,943,410],{"class":391},[385,945,946],{"class":413},"5f0c2b7e-3a41-4c1d-9b6e-1f2a3b4c5d6e",[385,948,404],{"class":391},[385,950,418],{"class":391},[385,952,953,955,958,960,962,964,967,969],{"class":387,"line":421},[385,954,398],{"class":391},[385,956,957],{"class":401},"event_id",[385,959,404],{"class":391},[385,961,407],{"class":391},[385,963,410],{"class":391},[385,965,966],{"class":413},"9b21d4c8-7e5f-4a3b-8c2d-6e7f8a9b0c1d",[385,968,404],{"class":391},[385,970,418],{"class":391},[385,972,973,975,978,980,982,984,986,988],{"class":387,"line":441},[385,974,398],{"class":391},[385,976,977],{"class":401},"decision",[385,979,404],{"class":391},[385,981,407],{"class":391},[385,983,410],{"class":391},[385,985,779],{"class":413},[385,987,404],{"class":391},[385,989,418],{"class":391},[385,991,992,994,997,999,1001,1004],{"class":387,"line":461},[385,993,398],{"class":391},[385,995,996],{"class":401},"risk_score",[385,998,404],{"class":391},[385,1000,407],{"class":391},[385,1002,1003],{"class":488}," 90",[385,1005,418],{"class":391},[385,1007,1008,1010,1013,1015,1017,1019,1022,1024],{"class":387,"line":475},[385,1009,398],{"class":391},[385,1011,1012],{"class":401},"alert_id",[385,1014,404],{"class":391},[385,1016,407],{"class":391},[385,1018,410],{"class":391},[385,1020,1021],{"class":413},"c7d4e1a2-5b6c-4d7e-8f9a-0b1c2d3e4f5a",[385,1023,404],{"class":391},[385,1025,418],{"class":391},[385,1027,1028,1030,1033,1035,1037],{"class":387,"line":494},[385,1029,398],{"class":391},[385,1031,1032],{"class":401},"reasons",[385,1034,404],{"class":391},[385,1036,407],{"class":391},[385,1038,1039],{"class":391}," [\n",[385,1041,1042],{"class":387,"line":513},[385,1043,1044],{"class":391},"    {\n",[385,1046,1047,1050,1053,1055,1057,1059,1061,1063],{"class":387,"line":519},[385,1048,1049],{"class":391},"      \"",[385,1051,1052],{"class":481},"rule",[385,1054,404],{"class":391},[385,1056,407],{"class":391},[385,1058,410],{"class":391},[385,1060,910],{"class":413},[385,1062,404],{"class":391},[385,1064,418],{"class":391},[385,1066,1067,1069,1072,1074,1076,1079],{"class":387,"line":538},[385,1068,1049],{"class":391},[385,1070,1071],{"class":481},"version",[385,1073,404],{"class":391},[385,1075,407],{"class":391},[385,1077,1078],{"class":488}," 1",[385,1080,418],{"class":391},[385,1082,1083,1085,1088,1090,1092,1094,1097],{"class":387,"line":551},[385,1084,1049],{"class":391},[385,1086,1087],{"class":481},"detail",[385,1089,404],{"class":391},[385,1091,407],{"class":391},[385,1093,410],{"class":391},[385,1095,1096],{"class":413},"20 or more transactions from the same source within 24h",[385,1098,510],{"class":391},[385,1100,1101],{"class":387,"line":571},[385,1102,1103],{"class":391},"    },\n",[385,1105,1106],{"class":387,"line":589},[385,1107,1044],{"class":391},[385,1109,1110,1112,1114,1116,1118,1120,1122,1124],{"class":387,"line":594},[385,1111,1049],{"class":391},[385,1113,1052],{"class":481},[385,1115,404],{"class":391},[385,1117,407],{"class":391},[385,1119,410],{"class":391},[385,1121,897],{"class":413},[385,1123,404],{"class":391},[385,1125,418],{"class":391},[385,1127,1128,1130,1132,1134,1136,1138],{"class":387,"line":607},[385,1129,1049],{"class":391},[385,1131,1071],{"class":481},[385,1133,404],{"class":391},[385,1135,407],{"class":391},[385,1137,1078],{"class":488},[385,1139,418],{"class":391},[385,1141,1142,1144,1146,1148,1150,1152,1155],{"class":387,"line":625},[385,1143,1049],{"class":391},[385,1145,1087],{"class":481},[385,1147,404],{"class":391},[385,1149,407],{"class":391},[385,1151,410],{"class":391},[385,1153,1154],{"class":413},"repeated transfers just below the reporting threshold within 24h",[385,1156,510],{"class":391},[385,1158,1159],{"class":387,"line":630},[385,1160,1161],{"class":391},"    }\n",[385,1163,1164],{"class":387,"line":643},[385,1165,1166],{"class":391},"  ],\n",[385,1168,1169,1171,1174,1176,1178,1180,1183],{"class":387,"line":662},[385,1170,398],{"class":391},[385,1172,1173],{"class":401},"created_at",[385,1175,404],{"class":391},[385,1177,407],{"class":391},[385,1179,410],{"class":391},[385,1181,1182],{"class":413},"2026-10-15T11:02:41.041Z",[385,1184,510],{"class":391},[385,1186,1187],{"class":387,"line":668},[385,1188,671],{"class":391},[189,1190,1191,1193,1194,323,1196,1198,1199,342,1201,1203,1204,1206,1207,349],{},[208,1192,1012],{}," is set only when the decision is ",[208,1195,776],{},[208,1197,779],{},". While a source already has an open alert, its new ",[208,1200,776],{},[208,1202,779],{}," decisions join that alert, so ",[208,1205,1012],{}," can point to an alert raised earlier. See ",[1208,1209,122],"a",{"href":123},[189,1211,1212],{},"Your payment service blocks the transfer and shows the customer a generic error. Sentinel never moves money itself.",[193,1214,1216],{"id":1215},"sync-or-async","Sync or async",[213,1218,1219,1232],{},[216,1220,1221],{},[219,1222,1223,1226,1229],{},[222,1224,1225],{},"Mode",[222,1227,1228],{},"Behaviour",[222,1230,1231],{},"Use when",[232,1233,1234,1250],{},[219,1235,1236,1241,1247],{},[237,1237,1238],{},[208,1239,1240],{},"sync",[237,1242,1243,1244,1246],{},"Scores before responding. Returns ",[208,1245,794],{}," with the decision.",[237,1248,1249],{},"You need the answer before moving money",[219,1251,1252,1258,1265],{},[237,1253,1254,1257],{},[208,1255,1256],{},"async"," (default)",[237,1259,1260,1261,1264],{},"Stores the event and returns ",[208,1262,1263],{},"202"," with its ID. Nothing scores it yet.",[237,1266,1267],{},"Loading history, so velocity features count it",[1269,1270,1271,1272,1274],"warning",{},"Async scoring isn't built yet. An event sent in async mode is stored and counts toward later events' features, but it never gets a decision or raises an alert. Use ",[208,1273,1240],{}," for anything you want monitored.",[193,1276,1278],{"id":1277},"if-sentinel-cant-be-reached","If Sentinel can't be reached",[189,1280,1281,1282,1285],{},"Decide your fallback before go-live. Most teams let low-value payments through and send the event again with ",[208,1283,1284],{},"mode=sync"," once Sentinel is back, and hold high-value ones. This is called failing open or failing closed, and you can choose per amount band.",[189,1287,1288],{},"Sentinel stores every event it accepts, so nothing goes missing from the record.",[193,1290,1292],{"id":1291},"where-events-come-from","Where events come from",[189,1294,1295,1296,1299],{},"Today your engineers call the API directly, as above. Later, ",[1208,1297,1298],{"href":77},"connectors"," will pull events from a rail for you, such as a mobile money operator's API, a bank switch or a card processor. They aren't built yet.",[1301,1302,1303],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":381,"searchDepth":395,"depth":395,"links":1305},[1306,1307,1308,1309,1310,1311],{"id":195,"depth":395,"text":112},{"id":674,"depth":395,"text":675},{"id":805,"depth":395,"text":806},{"id":1215,"depth":395,"text":1216},{"id":1277,"depth":395,"text":1278},{"id":1291,"depth":395,"text":1292},"What happens between sending an event and getting allow, review or block back.","md",null,{},{"icon":39},{"title":36,"description":1312},"3P2p8p1B4kHH22v7QTdZVwmyq5DiZ89-6nUoZ0ltBKk",[1320,1322],{"title":31,"path":32,"stem":33,"description":1321,"icon":34,"children":-1},"The loop every anti-money laundering programme follows, and where Sentinel fits in it.",{"title":41,"path":42,"stem":43,"description":1323,"icon":44,"children":-1},"How rules are written, how they add up to a score, and how to change one safely.",1792169658428]