![]() |
VOOZH | about |
dotnet add package MaxMind.MinFraud --version 6.0.0
NuGet\Install-Package MaxMind.MinFraud -Version 6.0.0
<PackageReference Include="MaxMind.MinFraud" Version="6.0.0" />
<PackageVersion Include="MaxMind.MinFraud" Version="6.0.0" />Directory.Packages.props
<PackageReference Include="MaxMind.MinFraud" />Project file
paket add MaxMind.MinFraud --version 6.0.0
#r "nuget: MaxMind.MinFraud, 6.0.0"
#:package MaxMind.MinFraud@6.0.0
#addin nuget:?package=MaxMind.MinFraud&version=6.0.0Install as a Cake Addin
#tool nuget:?package=MaxMind.MinFraud&version=6.0.0Install as a Cake Tool
This package provides an API for the MaxMind minFraud web services. This includes minFraud Score, Insights, and Factors. It also includes our minFraud Report Transaction API.
The legacy minFraud Standard and Premium services are not supported by this API.
This library works with .NET Framework version 4.6.1 and above and .NET Standard 2.0 or above.
This library depends on GeoIP2 and its dependencies.
We recommend installing this library with NuGet. To do this, type the following into the Visual Studio Package Manager Console:
install-package MaxMind.MinFraud
This API uses the async/await feature to provide non-blocking calls to the minFraud web services.
To use this API, first create a new WebServiceClient object. The constructor
takes your MaxMind account ID and license key:
var client = new WebServiceClient(10, "LICENSEKEY");
To use the Sandbox web service instead of the production web service, you can provide the host argument:
var client = new WebServiceClient(
accountId: 10,
licenseKey: "LICENSEKEY",
host: "sandbox.maxmind.com"
);
You may also specify the fall-back locales, the host, or the timeout as optional parameters. See the API docs for more information.
This object is safe to share across threads. If you are making multiple requests, the object should be reused to so that new connections are not created for each request. Once you have finished making requests, you should dispose of the object to ensure the connections are closed and any resources are promptly returned to the system.
Create a new Transaction object. This represents the transaction that you are
sending to minFraud:
var transaction = new Transaction
{
Device = new Device
{
IPAddress = System.Net.IPAddress.Parse("152.216.7.110"),
UserAgent = "Mozilla/5.0 (X11; Linux x86_64)",
AcceptLanguage = "en-US,en;q=0.8"
},
Account = new Account
{
UserId = "3132",
Username = "fred"
}
};
After creating the request object, send a non-blocking minFraud Score request by
calling the ScoreAsync method using the await keyword from a method marked
as async:
var score = await client.ScoreAsync(transaction);
A minFraud Insights request by calling the InsightsAsync method:
var insights = await client.InsightsAsync(transaction);
Or a minFraud Factors request by calling the FactorsAsync method:
var factors = await client.FactorsAsync(transaction);
If the request succeeds, a model object will be returned for the endpoint. If the request fails, an exception will be thrown.
See the API documentation for more details.
To use the web service API with HttpClient factory pattern as a Typed client you need to do the following:
Startup.cs ConfigureServices method:// Configure to read configuration options from MinFraud section
services.Configure<WebServiceClientOptions>(Configuration.GetSection("MinFraud"));
// Configure dependency injection for WebServiceClient
services.AddHttpClient<WebServiceClient>();
appsettings.json with your account ID and license
key....
"MinFraud": {
"AccountId": 10,
"LicenseKey": "LICENSEKEY",
"Timeout": TimeSpan.FromSeconds(5), // optional
"Host": "minfraud.maxmind.com" // optional
},
...
WebServiceClient where you need to make the call and use it.[ApiController]
[Route("[controller]")]
public class MinFraudController : ControllerBase
{
private readonly WebServiceClient _minfraudClient;
public MinFraudController(WebServiceClient minfraudClient)
{
_minfraudClient = minfraudClient;
}
[HttpGet]
public async Task<double?> RiskScore(Transaction transaction)
{
var score = await _minfraudClient.ScoreAsync(transaction);
return score.RiskScore;
}
}
If a transaction was scored incorrectly or you received a chargeback, you may
report it to MaxMind. To do this, create a new TransactionReport object:
var report = new TransactionReport
{
Tag = TransactionReportTag.Chargeback,
ChargebackCode = "BL",
IPAddress = IPAddress.Parse("104.16.148.244"),
MaxMindId = "abcd1234",
MinFraudId = new Guid("01c25cb0-f067-4e02-8ed0-a094c580f5e4"),
Notes = "Suspicious account behavior",
TransactionId = "txn123"
};
A valid tag and at least one of the following are required parameters:
ipAddress, maxmindId, minfraudId, transactionId.
Send the report by calling the ReportAsync method using the await keyword:
await client.ReportAsync(report);
The endpoint does not return any data and the method does not return a value. If there is an error, an exception will be thrown.
Thrown by the request models:
ArgumentException - Thrown when invalid data is passed to a request model
property or to ReportAsync.Thrown by WebServiceClient method calls:
AuthenticationException - Thrown when the server is unable to authenticate
the request, e.g., if the license key or account ID is invalid.InsufficientFundsException - Thrown when your account is out of funds.PermissionRequiredException - Thrown when your account does not have
permission to access the service.InvalidRequestException - Thrown when the server rejects the request for
another reason such as invalid JSON in the POST.MinFraudException - Thrown when the server returns an unexpected response.
This also serves as the base class for the above exceptions.HttpException - Thrown when an unexpected HTTP error occurs such as an
internal server error or other unexpected status code.using MaxMind.MinFraud;
using MaxMind.MinFraud.Request;
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
public class MinFraudExample
{
static void Main()
{
MinFraudAsync().Wait();
}
static public async Task MinFraudAsync()
{
var transaction = new Transaction
{
Device = new Device
{
IPAddress = IPAddress.Parse("152.216.7.110"),
UserAgent = "Mozilla/5.0 (X11; Linux x86_64)",
AcceptLanguage = "en-US,en;q=0.8",
SessionAge = 3600.5,
SessionId = "a333a4e127f880d8820e56a66f40717c",
TrackingToken = "a]L@E*bnoqHa9&SBSwbB8X3#1E"
},
Event = new Event
{
Party = EventParty.Customer,
TransactionId = "txn3134133",
ShopId = "s2123",
Time = new DateTimeOffset(2014, 4, 12, 23, 20, 50, 52, new TimeSpan(0)),
Type = EventType.Purchase
},
Account = new Account
{
UserId = "3132",
Username = "fred"
},
Email = new Email
{
Address = "test@maxmind.com",
Domain = "maxmind.com",
HashAddress = false
},
Billing = new Billing
{
FirstName = "First",
LastName = "Last",
Company = "Company",
Address = "101 Address Rd.",
Address2 = "Unit 5",
City = "City of Thorns",
Region = "CT",
Country = "US",
Postal = "06510",
PhoneNumber = "123-456-7890",
PhoneCountryCode = "1"
},
Shipping = new Shipping
{
FirstName = "ShipFirst",
LastName = "ShipLast",
Company = "ShipCo",
Address = "322 Ship Addr. Ln.",
Address2 = "St. 43",
City = "Nowhere",
Region = "OK",
Country = "US",
Postal = "73003",
PhoneNumber = "123-456-0000",
PhoneCountryCode = "1",
DeliverySpeed = ShippingDeliverySpeed.SameDay
},
Payment = new Payment
{
Method = PaymentMethod.Card,
Processor = PaymentProcessor.Stripe,
WasAuthorized = false,
DeclineCode = "invalid number"
},
CreditCard = new CreditCard
{
IssuerIdNumber = "411111",
BankName = "Bank of No Hope",
BankPhoneCountryCode = "1",
BankPhoneNumber = "123-456-1234",
AvsResult = 'Y',
CvvResult = 'N',
LastDigits = "7643",
Token = "123456abc1234",
Was3DSecureSuccessful = true
},
CustomInputs = new CustomInputs.Builder
{
{ "float_input", 12.1d},
{ "integer_input", 3123},
{ "string_input", "This is a string input."},
{ "boolean_input", true},
}.Build(),
Order = new Order
{
Amount = 323.21m,
Currency = "USD",
DiscountCode = "FIRST",
AffiliateId = "af12",
SubaffiliateId = "saf42",
ReferrerUri = new Uri("http://www.amazon.com/"),
IsGift = true,
HasGiftMessage = false
},
ShoppingCart = new List<ShoppingCartItem>
{
new ShoppingCartItem
{
Category = "pets",
ItemId = "ad23232",
Quantity = 2,
Price = 20.43m
},
new ShoppingCartItem
{
Category = "beauty",
ItemId = "bst112",
Quantity = 1,
Price = 100.00m
}
}
};
// If you are making multiple requests, a single WebServiceClient
// should be shared across requests to allow connection reuse. The
// class is thread safe.
//
// Replace "6" with your account ID and "ABCD567890" with your license
// key.
using (var client = new WebServiceClient(6, "ABCD567890"))
{
// Use `InsightsAsync` if querying Insights
var score = await client.ScoreAsync(transaction);
Console.WriteLine(score);
}
}
}
Please report all issues with this code using the GitHub issue tracker.
If you are having an issue with the minFraud service that is not specific to the client API, please see our support page.
Patches and pull requests are encouraged. Please include unit tests whenever possible.
This API uses Semantic Versioning.
This software is Copyright (c) 2015-2026 by MaxMind, Inc.
This is free software, licensed under the Apache License, Version 2.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 6.0.0 | 236 | 5/22/2026 |
| 5.3.1 | 10,104 | 11/24/2025 |
| 5.3.0 | 636 | 11/20/2025 |
| 5.2.0 | 46,012 | 5/23/2025 |
| 5.1.0 | 21,360 | 2/10/2025 |
| 5.1.0-beta.1 | 1,956 | 9/6/2024 |
| 5.0.0 | 28,009 | 7/8/2024 |
| 4.3.0 | 20,524 | 4/16/2024 |
| 4.2.0 | 28,179 | 12/6/2023 |
| 4.1.0 | 67,965 | 3/28/2022 |
| 4.0.0 | 2,988 | 2/7/2022 |
| 3.3.0 | 2,378 | 1/27/2022 |
| 3.2.0 | 16,512 | 8/27/2021 |
| 3.1.0 | 14,208 | 2/2/2021 |
| 3.0.0 | 43,291 | 11/24/2020 |
| 2.9.0 | 27,167 | 10/14/2020 |
| 2.8.0 | 35,388 | 9/25/2020 |
| 2.7.0 | 1,904 | 7/31/2020 |
| 2.6.0 | 54,447 | 6/19/2020 |
| 2.5.0 | 40,806 | 4/6/2020 |