Sistema de inteligencia de pagos
Reduce pagos fallidos y detecta transacciones de riesgo
Valida BIN, IBAN y códigos SWIFT mientras contrastas IP y país de facturación antes de que el pago llegue a tu procesador.
Obtener clave APIMotor
Motor de inteligencia de pagos
Valida datos financieros y evalúa el riesgo de transacción en una llamada. Señales BIN, IBAN, SWIFT e IP compuestas automáticamente.
{
"card_bin": "424242",
"iban": "DE89370400440532013000",
"ip_address": "92.168.1.1",
"billing_country": "DE"
}
{
"valid": true,
"risk_score": 0.14,
"country_mismatch": false,
"bank": {
"name": "Deutsche Bank",
"country": "DE",
"brand": "Visa"
},
"signals": {
"bin_valid": true,
"iban_valid": true,
"ip_country": "DE",
"billing_country": "DE"
}
}
Los pagos fallidos cuestan ingresos y confianza a productos SaaS y fintech. El motor de inteligencia de pagos valida datos financieros y evalúa el riesgo de transacción en una sola llamada, combinando señales de finanzas y red sin que tengas que orquestarlas.
Referencia de la API
Base URL: https://requiems.xyz
Descripción general
Casos de uso
- Validate card BIN, IBAN, and SWIFT data before submitting to a payment processor
- Flag transactions where billing country mismatches IP geolocation
- Verify financial identifiers during fintech onboarding flows
- Reduce payment decline rates by pre-validating data before submission
- Detect VPN and TOR use on high-value transactions
Funcionalidades
Puntos finales de la API
Validate Payment
Validate and cross-check BIN, IBAN, and SWIFT identifiers in one call. Returns per-field results and a consistency check that flags country and bank mismatches.
https://requiems.xyz/v1/systems/payment/validate
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| bin | string |
Opcional | Card BIN (first 6–8 digits). At least one of bin, iban, or swift is required. |
| iban | string |
Opcional | IBAN string to validate. Checksum and format are verified. |
| swift | string |
Opcional | SWIFT/BIC code to look up institution and country. |
Pruébalo
Demostración en vivoSolicitud
Card BIN (first 6–8 digits). At least one of bin, iban, or swift is required.
IBAN string to validate. Checksum and format are verified.
SWIFT/BIC code to look up institution and country.
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| bin | object |
BIN result. Null when bin was not provided. Contains valid, scheme, card_type, card_level, country_code, issuer, prepaid, luhn_prefix_valid. |
| iban | object |
IBAN result. Null when iban was not provided. Contains valid, country_code, bank_code, account_number. |
| swift | object |
SWIFT result. Null when swift was not provided. Contains valid, institution, country, branch. |
| consistency.ok | boolean |
True when no cross-field mismatches were detected |
| consistency.flags | array<string> |
Mismatch flags. Possible values: country_mismatch_bin_iban, country_mismatch_bin_swift, country_mismatch_iban_swift, bank_mismatch_iban_swift |
Ejemplos de código
curl -X POST https://requiems.xyz/v1/systems/payment/validate \
-H "requiems-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"bin": "424242",
"iban": "DE89370400440532013000",
"swift": "DEUTDEDB"
}'
import requests
response = requests.post(
"https://requiems.xyz/v1/systems/payment/validate",
headers={"requiems-api-key": "YOUR_API_KEY"},
json={"bin": "424242", "iban": "DE89370400440532013000", "swift": "DEUTDEDB"}
)
data = response.json()["data"]
if not data["consistency"]["ok"]:
print("Consistency flags:", data["consistency"]["flags"])
else:
print("All identifiers consistent")
const { data } = await fetch('https://requiems.xyz/v1/systems/payment/validate', {
method: 'POST',
headers: { 'requiems-api-key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({ bin: '424242', iban: 'DE89370400440532013000', swift: 'DEUTDEDB' })
}).then(r => r.json());
if (!data.consistency.ok) {
console.warn('Mismatch detected:', data.consistency.flags);
}
require 'net/http'
require 'json'
uri = URI('https://requiems.xyz/v1/systems/payment/validate')
request = Net::HTTP::Post.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
request['Content-Type'] = 'application/json'
request.body = { bin: '424242', iban: 'DE89370400440532013000', swift: 'DEUTDEDB' }.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(request) }
data = JSON.parse(response.body)['data']
puts data['consistency']['ok'] ? 'Consistent' : data['consistency']['flags'].inspect
Respuestas de error
validation_failed
All of bin, iban, and swift were omitted. At least one is required.
unauthorized
Missing or invalid API key
Score Transaction Risk
Score a transaction for fraud risk by cross-checking the card BIN country against IP geolocation and billing country. Detects VPN, proxy, and TOR use.
https://requiems.xyz/v1/systems/transaction/risk
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| card_bin | string |
Obligatorio | Card BIN (first 6–8 digits) to look up card issuing country. |
| ip_address | string |
Obligatorio | Customer's IPv4 or IPv6 address. Must be a valid IP. |
| billing_country | string |
Opcional | ISO 3166-1 alpha-2 billing country code. When provided, country mismatch checks are more precise. |
| amount_usd | number |
Opcional | Transaction amount in USD. High-value transactions via VPN incur an additional risk score boost. |
Pruébalo
Demostración en vivoSolicitud
Card BIN (first 6–8 digits) to look up card issuing country.
Customer's IPv4 or IPv6 address. Must be a valid IP.
ISO 3166-1 alpha-2 billing country code. When provided, country mismatch checks are more precise.
Transaction amount in USD. High-value transactions via VPN incur an additional risk score boost.
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| risk_score | number |
Transaction risk score from 0.0 to 1.0 |
| is_safe | boolean |
True when score is below 0.5 and no TOR or proxy detected |
| flags | array<string> |
Triggered flags. Possible values: ip_country_mismatch, bin_country_mismatch, country_mismatch, vpn_detected, proxy_detected, tor_detected, high_value_vpn |
| signals.ip_country | string |
Country code resolved from the IP address |
| signals.billing_country | string |
Billing country provided in the request, or null if omitted |
| signals.bin_country | string |
Country of the card issuer resolved from the BIN |
| signals.country_mismatch | boolean |
True when any country comparison produced a mismatch |
Ejemplos de código
curl -X POST https://requiems.xyz/v1/systems/transaction/risk \
-H "requiems-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"card_bin": "424242",
"ip_address": "92.168.1.1",
"billing_country": "DE",
"amount_usd": 250.00
}'
import requests
response = requests.post(
"https://requiems.xyz/v1/systems/transaction/risk",
headers={"requiems-api-key": "YOUR_API_KEY"},
json={
"card_bin": "424242",
"ip_address": "92.168.1.1",
"billing_country": "DE",
"amount_usd": 250.00
}
)
data = response.json()["data"]
print(f"risk_score={data['risk_score']}, is_safe={data['is_safe']}")
if data["flags"]:
print("Flags:", data["flags"])
const { data } = await fetch('https://requiems.xyz/v1/systems/transaction/risk', {
method: 'POST',
headers: { 'requiems-api-key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
card_bin: '424242',
ip_address: '92.168.1.1',
billing_country: 'DE',
amount_usd: 250.00
})
}).then(r => r.json());
console.log(data.risk_score, data.is_safe, data.flags);
Respuestas de error
validation_failed
ip_address is not a valid IPv4 or IPv6 address, or card_bin is missing
unauthorized
Missing or invalid API key
Preguntas frecuentes
Backend todo en uno para productos SaaS
Autenticación, validación, detección de fraude, inteligencia de pagos y datos globales, entregados a través de una API unificada.