Create Transaction Endpoint for Monitoring
API Reference
Create Transaction Endpoint for Monitoring
POST /transactions endpoint reference for transaction monitoring: request schema, currency conversion, payment fields, fraud and AML examples.
POST
Create Transaction Endpoint for Monitoring
Canonical Endpoint Reference
The official reference forPOST /transactions (response shape, errors, all fields) is:
Create transaction (API Reference β Transactions)
There youβll find the actual response: transaction is an object (the created transaction), and when rules run, rulesExecutionSummary appears at the response root (see Rules Execution Summary).
This page adds use-case context for monitoring: currency conversion, payment-method examples (PIX, card, multi-currency), and detailed field descriptions.
Endpoint: Create Transaction
executeRules: true (default), the rules engine runs and the response includes rulesExecutionSummary at the root when rules execute.
Authentication
All requests must include an API key in theAuthorization header:
Required Headers
Request Body
Your unique identifier for this transaction in your systemType:
string (min length: 1)Type of transaction. Options:
PAYMENT- Purchase or payment to merchantTRANSFER- Transfer between accounts/usersWITHDRAWAL- Cash withdrawal or account debitDEPOSIT- Deposit or account creditREFUND- Refund of a previous transactionCHARGEBACK- Chargeback disputeREVERSAL- Transaction reversalFEE- Fee or commission chargeADJUSTMENT- Balance adjustmentOTHER- Other transaction type
enum - 'PAYMENT' | 'TRANSFER' | 'WITHDRAWAL' | 'DEPOSIT' | 'REFUND' | 'CHARGEBACK' | 'REVERSAL' | 'FEE' | 'ADJUSTMENT' | 'OTHER'Transaction status. Follows a state machine with open and closed states.Open States (can transition to other states):
CREATED- Transaction created (default)PROCESSING- Transaction being processedSUSPENDED- Transaction temporarily suspended
SENT- Transaction sent/transmittedEXPIRED- Transaction expiredDECLINED- Transaction declined/rejectedREFUNDED- Transaction refunded/reversedSUCCESSFUL- Transaction completed successfully
enum - 'CREATED' | 'PROCESSING' | 'SUSPENDED' | 'SENT' | 'EXPIRED' | 'DECLINED' | 'REFUNDED' | 'SUCCESSFUL' (default: βCREATEDβ)Important: Once a transaction reaches a closed state, it cannot transition back to an open state. This ensures transaction integrity and proper audit trails.Transaction amount (must be positive)Type:
number (> 0)ISO 4217 currency code (e.g., βUSDβ, βBRLβ, βEURβ)Type:
string (length: 3)Payment method used for the transactionType:
string (enum, optional)Possible Values:CARD- Credit or debit card paymentACH- Automated Clearing House (US bank transfer)PIX- Brazilian instant payment systemTED- Brazilian wire transfer (TransferΓͺncia EletrΓ΄nica DisponΓvel)BOLETO- Brazilian payment slipWALLET- Digital wallet (PayPal, Venmo, etc.)SWIFT- SWIFT international wire transferIBAN- IBAN-based bank transferCBU- Argentine bank account (Clave Bancaria Uniforme)CVU- Argentine virtual account (Clave Virtual Uniforme)DEBIN- Argentine instant debit systemGENERIC_BANK_ACCOUNT- Generic bank account transferMPESA- M-Pesa mobile money (Kenya)UPI- Unified Payments Interface (India)CHECK- Check paymentECHECK- Electronic checkQR_CODE- QR code paymentONLINE_PAYMENT- Generic online paymentWITHDRAWAL_ORDER- Withdrawal order
"PIX" or "CARD"UUID of the origin entity (sender) in gu1 systemType:
string (uuid, optional)Your external ID for the origin entityType:
string (optional)Tax / document ID for the origin at the root of the request. Third linking path after
originEntityId and originExternalId (normalized match to entity.taxId). If matched, originEntityId and optionally name/country are filled. Max 50 characters. Type: string (optional)Name of the origin entity (sender)Type:
string (max length: 500, optional)ISO 3166-1 alpha-2 country code of origin entityType:
string (length: 2, optional)Contextual information about the origin of the transaction (device, geolocation, account, security flags). These fields match the API schema; you can also send additional custom fields (e.g. nested Custom fields are allowed - the system will validate known fields and preserve custom ones.
paymentDetails or any other keys) and they will be stored.Type: object (optional, validated structure; extra keys allowed)Key Difference:originCountry(direct field) = Entityβs countryoriginDetails.country= Device/IP country at transaction time (can differ if traveling)
deviceId(string) - Device identifierdeviceFingerprint(string) - Device fingerprint hashdeviceType(enum) -mobile|desktop|tablet|pos|atmuserAgent(string) - Browser user agentipAddress(string) - IP address (validated format)
country(string) - ISO 2-letter codecity(string) - City nameregion(string) - State/provincelatitude(number) - Latitude (-90 to 90)longitude(number) - Longitude (-180 to 180)timezone(string) - Timezone identifier
paymentDetails(object) - Payment-specific information for the origin. You can send any payment-related fields here:- Bank/Account Details:
accountNumber(string) - Account numberaccountType(enum) -checking|savings|business|personalbankCode(string) - Bank codebankName(string) - Bank nameroutingNumber(string) - Routing number (US)swiftCode(string) - SWIFT/BIC codeiban(string) - IBAN (International Bank Account Number)
- PIX Details (Brazil):
pixKey(string) - PIX keypixType(enum) - PIX key type:email|phone|cpf|cnpj|random
- Card Details:
cardLast4(string) - Last 4 digits of cardcardBrand(string) - Card brand (Visa, Mastercard, Amex, etc.)cardholderName(string) - Name on cardcardBin(string) - First 6 digits of card (BIN)cardType(enum) -credit|debit|prepaidcardCountry(string) - Card issuing country (ISO 2-letter)cardExpiry(string) - Expiration date (MM/YY)cardFingerprint(string) - Unique card fingerprint/hash for tracking
- Crypto Details:
walletAddress(string) - Cryptocurrency wallet addresswalletType(string) - Wallet type (e.g., βmetamaskβ, βcoinbaseβ)blockchain(string) - Blockchain network (e.g., βethereumβ, βbitcoinβ)tokenSymbol(string) - Token symbol (e.g., βETHβ, βBTCβ, βUSDTβ)
- Wallet/Digital Payment:
walletId(string) - Digital wallet identifierwalletProvider(string) - Wallet provider (e.g., βpaypalβ, βvenmoβ, βcashappβ)walletEmail(string) - Email associated with wallet
- And any other payment-related fields you need
- Bank/Account Details:
isVpn(boolean) - VPN detectedisTor(boolean) - Tor network detectedisProxy(boolean) - Proxy detectedgovernmentAccount(boolean) - Government account flag
UUID of the destination entity (receiver) in gu1 systemType:
string (uuid, optional)Your external ID for the destination entityType:
string (optional)Tax / document ID for the destination at the root. Third path after
destinationEntityId and destinationExternalId. Same rules as originTaxId. Type: string (optional)Name of the destination entity (receiver)Type:
string (max length: 500, optional)ISO 3166-1 alpha-2 country code of destination entityType:
string (length: 2, optional)Contextual information about the destination of the transaction (merchant, device, geolocation, account, risk flags). These fields match the API schema; you can also send additional custom fields (e.g. nested Custom fields are allowed - the system will validate known fields and preserve custom ones.
paymentDetails or any other keys) and they will be stored.Type: object (optional, validated structure; extra keys allowed)Supported Fields:Merchant Info:mcc(string) - Merchant Category Code (4 digits, ISO 18245)mccDescription(string) - MCC description (e.g., βRestaurantsβ)merchantId(string) - Merchant identifiermerchantName(string) - Merchant namemerchantType(string) - Merchant type/category
deviceId(string) - Device identifierdeviceType(enum) -pos|online|mobile|atmipAddress(string) - IP address (validated format)
country(string) - ISO 2-letter codecity(string) - City nameregion(string) - State/province
paymentDetails(object) - Payment-specific information for the destination. You can send any payment-related fields here:- Bank/Account Details:
accountNumber(string) - Destination account numberaccountType(enum) -checking|savings|business|merchantbankCode(string) - Bank codebankName(string) - Bank nameroutingNumber(string) - Routing number (US)swiftCode(string) - SWIFT/BIC codeiban(string) - IBAN (International Bank Account Number)
- PIX Details (Brazil):
pixKey(string) - PIX keypixType(enum) - PIX key type:email|phone|cpf|cnpj|random
- Card Details:
cardLast4(string) - Last 4 digits of cardcardBrand(string) - Card brand (Visa, Mastercard, Amex, etc.)cardholderName(string) - Name on cardcardBin(string) - First 6 digits of card (BIN)cardType(enum) -credit|debit|prepaidcardCountry(string) - Card issuing country (ISO 2-letter)cardExpiry(string) - Expiration date (MM/YY)cardFingerprint(string) - Unique card fingerprint/hash for tracking
- Crypto Details:
walletAddress(string) - Cryptocurrency wallet addresswalletType(string) - Wallet type (e.g., βmetamaskβ, βcoinbaseβ)blockchain(string) - Blockchain network (e.g., βethereumβ, βbitcoinβ)tokenSymbol(string) - Token symbol (e.g., βETHβ, βBTCβ, βUSDTβ)
- Wallet/Digital Payment:
walletId(string) - Digital wallet identifierwalletProvider(string) - Wallet provider (e.g., βpaypalβ, βvenmoβ, βcashappβ)walletEmail(string) - Email associated with wallet
- And any other payment-related fields you need
- Bank/Account Details:
cryptoExchange(boolean) - Is cryptocurrency exchangehighRisk(boolean) - High risk merchant flagprivateSector(boolean) - Private sector flag
The channel through which the transaction was initiated (max 50 characters).Type:
string (max length: 50, optional)Common Examples:mobile_app- Mobile applicationweb_browser- Web browserpos_terminal- Point of sale terminalapi- Direct API integrationatm- ATM machinephone_banking- Phone bankingbranch- Physical branchcall_center- Call centerpartner_api- Partner integration
Optional reason for the transaction outcome (e.g. decline, failure, limit exceeded). The client can send any value from the
transaction_reason_type enum. If omitted, the system uses WITHOUT_REASON. Not required β existing integrations remain valid.Type: string (enum, optional, default: WITHOUT_REASON)Common values (full enum has 60+ values):WITHOUT_REASON- No specific reason (default when omitted)INSUFFICIENT_FUNDS- Insufficient fundsLIMIT_EXCEEDED,DAILY_LIMIT_EXCEEDED,MONTHLY_LIMIT_EXCEEDED,TRANSACTION_LIMIT_EXCEEDEDACCOUNT_BLOCKED,ACCOUNT_FROZEN,ACCOUNT_CLOSEDCARD_EXPIRED,CARD_BLOCKED,CARD_LOST_OR_STOLEN,INVALID_CARD,INVALID_ACCOUNTFRAUD_SUSPECTED,COMPLIANCE_BLOCK,SANCTIONS_MATCH,AML_ALERT,RISK_SCORE_THRESHOLDMERCHANT_BLOCKED,COUNTRY_RESTRICTION,CURRENCY_NOT_SUPPORTED,CHANNEL_NOT_ALLOWEDSYSTEM_ERROR,TIMEOUT,INVALID_AMOUNT,KYC_PENDING,KYC_REJECTEDEXPIRED,CANCELLED_BY_USER,CANCELLED_BY_MERCHANT,REFUSED_BY_ISSUER,DO_NOT_HONORINVALID_PIN,PIN_TRIES_EXCEEDED,INSUFFICIENT_LIQUIDITY,VALIDATION_FAILED,OTHER
Geographic location information where the transaction occurred. Useful for fraud detection, geographic risk analysis, and compliance reporting.Type: Use Cases:
object (optional)Supported Fields:Address Information:country(string) - ISO 3166-1 alpha-2 country code (e.g., βUSβ, βBRβ, βARβ)countryName(string) - Full country namecity(string) - City nameregion(string) - State or provinceaddress(string) - Full addressstreet(string) - Street namestreetNumber(string) - Street numberpostalCode(string) - Postal/ZIP codeneighborhood(string) - Neighborhood or district
latitude(number) - Latitude coordinate (-90 to 90)longitude(number) - Longitude coordinate (-180 to 180)
timezone(string) - IANA timezone (e.g., βAmerica/Sao_Pauloβ)placeId(string) - Google Places ID or similar identifier
- Fraud Detection: Identify transactions from unusual locations or high-risk countries
- Geographic Analysis: Analyze transaction patterns by region
- Compliance: Track cross-border transactions for regulatory reporting
- Velocity Rules: Detect impossible travel (same user in different locations in short time)
Device information for the transaction. Critical for fraud detection, device fingerprinting, and security analysis.Type: Use Cases:
object (optional)Supported Fields:Device Identification:deviceId(string) - Unique device identifierexternalId(string) - Your external device ID
platform(enum) - Device platform:android,ios,web,desktop,mobile,tablet,pos,atmosName(string) - Operating system name (e.g., βAndroidβ, βiOSβ, βWindowsβ, βmacOSβ)osVersion(string) - OS version (e.g., β13.0β, β16.4β)
manufacturer(string) - Device manufacturer (e.g., βSamsungβ, βAppleβ)model(string) - Device model (e.g., βGalaxy S22β, βiPhone 14β)brand(string) - Device branddeviceName(string) - User-assigned device name
browser(string) - Browser name (e.g., βChromeβ, βSafariβ, βFirefoxβ)browserVersion(string) - Browser versionuserAgent(string) - Full user agent string
isEmulator(boolean) - Whether device is an emulatorisRooted(boolean) - Whether device is rooted (Android)isJailbroken(boolean) - Whether device is jailbroken (iOS)
ipAddress(string) - IP address (validated format)isVpn(boolean) - Whether connection is through VPNisTor(boolean) - Whether connection is through TorisProxy(boolean) - Whether connection is through proxy
deviceFingerprint(string) - Unique device fingerprint hash for tracking
screenResolution(string) - Screen resolution (e.g., β1920x1080β)language(string) - Device languagetimezone(string) - Device timezone
- Fraud Detection: Identify suspicious devices (emulators, rooted devices, VPN usage)
- Device Fingerprinting: Track unique devices across transactions for behavioral analysis
- Security Analysis: Detect anomalies in device patterns (new device, impossible device velocity)
- Compliance: Document device information for audit trails
- User Experience: Personalize experience based on device type and capabilities
Transaction descriptionType:
string (max length: 1000, optional)Transaction category for groupingType:
string (max length: 100, optional)Custom metadata for storing additional transaction information.Type:
The Example 2: Business categorizationExample 3: Multi-channel trackingExample 4: Banking operationsFiltering transactions by tags: You can later filter transactions using these tags in list endpoints or dashboards.Custom fields beyond the standard ones are allowed and will be preserved.
object (optional, validated structure)Supported Standard Fields:tags (object) - Key-Value Categorization System
The tags field allows you to add custom key-value pairs for flexible categorization, filtering, and workflow management. This is particularly useful for:- Custom filtering in dashboards and reports
- Triggering specific business logic
- Tracking review status
- Categorizing by risk level or source
- Custom workflow states
{ "key1": "value1", "key2": "value2" }Common Tag Patterns:risk_level(string) - βlowβ, βmediumβ, βhighβ, βcriticalβsource(string) - βapiβ, βwebβ, βmobileβ, βbatchβ, βimportβchannel(string) - βonlineβ, βbranchβ, βatmβ, βcall_centerβ, βpartnerβreviewed(boolean) - false (pending review), true (reviewed)category(string) - βpayrollβ, βsupplierβ, βrefundβ, βinvestmentβ, βloanβ, βbill_paymentβpriority(string) - βlowβ, βnormalβ, βhighβ, βurgentβteam(string) - βcomplianceβ, βfraudβ, βsupportβ, βoperationsβcampaign(string) - Marketing or business campaign identifierapproved_by(string) - User or system that approvedrequires_approval(boolean) - Manual approval requiredcustomer_segment(string) - βvipβ, βregularβ, βnewβ, βdormantβproduct_type(string) - βsavingsβ, βinvestmentβ, βloanβ, βtransferβregion(string) - βnorthβ, βsouthβ, βlatamβ, βemeaβ, βapacβbusiness_unit(string) - βretailβ, βcorporateβ, βwealthβ, βsmeβ
Other Metadata Fields:
purpose(string) - Transaction purpose (e.g., βsalaryβ, βinvoice_paymentβ)frequency(string) - Transaction frequency (e.g., βmonthlyβ, βone-timeβ)contract_number(string) - Contract number (for business payments)enhanced_due_diligence(boolean) - EDD flagblock_reason(string) - Reason for blockingcompliance_alert(boolean) - Compliance alert flag
When the transaction occurred (ISO 8601 timestamp). Defaults to current time if not provided.Type:
string (ISO 8601 datetime, optional)Whether to execute risk rules automatically after creating the transactionType:
boolean (default: true)Payment Methods
CARD- Credit/debit card paymentACH- ACH transfer (US)PIX- Brazilian instant paymentTED- Brazilian bank transfer (TED)BOLETO- Brazilian boleto paymentWALLET- Digital wallet paymentSWIFT- International SWIFT transferIBAN- IBAN-based transferCBU- Argentine bank account (CBU)CVU- Argentine virtual wallet (CVU)DEBIN- Argentine direct debitGENERIC_BANK_ACCOUNT- Generic bank account transferMPESA- M-Pesa mobile moneyUPI- India UPI paymentCHECK- Physical checkECHECK- Electronic checkQR_CODE- QR code paymentONLINE_PAYMENT- Generic online paymentWITHDRAWAL_ORDER- Withdrawal order
Account Types
PERSONAL- Personal accountBUSINESS- Business accountMERCHANT- Merchant accountSAVINGS- Savings accountCHECKING- Checking accountINVESTMENT- Investment accountESCROW- Escrow accountPREPAID- Prepaid accountOTHER- Other account type
MCC Codes
Merchant Category Codes (MCC) classify business types:5411- Grocery Stores5812- Restaurants5999- Miscellaneous Retail6011- ATM/Cash Withdrawal7995- Gambling
Tags and Metadata
Multi-Currency Support
gu1 provides automatic currency conversion for all transactions. Each organization has a configured base currency (default: USD), and all transactions are automatically converted to this base currency for consistent rule evaluation and reporting.How It Works
- Automatic Detection: When a transactionβs
currencydiffers from your organizationβs base currency, automatic conversion is triggered - Real-Time Rates: Exchange rates are fetched from our currency service in real-time
- Dual Amount Storage: Both original and converted amounts are stored
- Rule Evaluation: Rules can use either
amount(original) oramountInUsd(converted to USD)
Supported Currencies
150+ currencies supported including:- Major: USD, EUR, GBP, JPY, CHF, CAD, AUD
- Latin America: BRL, ARS, MXN, COP, CLP, PEN, UYU
- Asia: CNY, INR, KRW, SGD, HKD, THB, MYR
- Crypto: BTC, ETH, USDT, USDC
- And many more (ISO 4217 standard)
Exchange Rate Sources
| Source | Description | When Used |
|---|---|---|
ms-provider | Real-time rates from currency microservice | Primary source |
cache-fallback | Cached rates when service unavailable | Fallback (< 1h old) |
no-conversion | No conversion needed (same currency) | Same as base |
client-provided | Custom rate provided by client | Optional override |
Response Fields
Conversion data is returned on the transaction object, not in a separate block:transaction.amount,transaction.currencyβ original amount and currencytransaction.amountInUsdβ converted amount in USD (null if conversion failed or not applicable)transaction.exchangeRate,transaction.rateSourceβ rate used and source (e.g.ms-provider)
Using Converted Amounts in Rules
Rules can reference both amounts:amountInUsd in rules to ensure consistent thresholds regardless of transaction currency.
Error Handling
If currency conversion fails:- Transaction processing continues with original amount
transaction.amountInUsdandtransaction.exchangeRatewill be null- Rules using
amountInUsdwill use originalamountas fallback if conversion failed - Error is logged but doesnβt block transaction
Example: Multi-Currency Transaction
Complete Request Examples
PIX Transfer (Brazil)
Card Payment
Multi-Currency Transfer
Response
Full response spec: Create transaction. The API returnstransaction as an object (single created transaction).
Success Response (201 Created)
Response Fields
The created transaction with all its data including:
- id (string) - gu1βs internal UUID
- externalId (string) - Your external ID
- type (enum) - Transaction type
- status (enum) - Transaction status
- amount (string) - Original amount (numeric string)
- currency (string) - Original currency code (ISO 4217)
- amountInUsd (string | null) - Converted amount in USD
- exchangeRate (string | null) - Exchange rate used (precision: 10 decimals)
- rateSource (string | null) - Source of exchange rate
- riskScore (string | null) - Risk score 0-100 (precision: 2 decimals) if rules were executed
- riskFactors (array) - Array of risk factors identified
- flagged (boolean) - Whether transaction was flagged for review
- reason (string | null) - Optional outcome reason (e.g. WITHOUT_REASON, INSUFFICIENT_FUNDS); default WITHOUT_REASON when omitted
At the root of the response. Only present when executeRules is true and the rules engine ran. Summary of which rules matched (hit) vs did not match (no hit), executed actions, and total score. Omitted when
executeRules is false. See Rules Execution Summary for the full structure and a complete example.- rulesHit (array) - Rules whose conditions were met. Each item: name, description, score, priority, category, status (e.g.
active,shadow), conditions (array of{ field, value, operator? }), actions (alerts, suggestion, status, assignedUser). - rulesNoHit (array) - Rules that were evaluated but conditions were not met. Same structure as rulesHit (includes configured actions, not executed).
- actionsExecuted (object) - Aggregated executed actions across all rules that hit: alerts (array of
{ name?, type?, severity?, description? }), suggestion (BLOCK|SUSPEND|FLAG, highest weight), status (entity status applied, if any), assignedUser ({ userId }, if any), customKeys (array of strings, optional) β custom action keys from rules that matched (e.g.require_kyc,flag_for_review). Present when any matched rule has a custom action with a key; used for integrations/workflows. - totalScore (number) - Sum of score of all rules that hit and are not in
shadowstatus.
Transaction Status Values
The transaction status follows a state machine model with open and closed states:Open States (Can Transition)
| Status | Description | Can Transition To |
|---|---|---|
CREATED | Transaction created (initial state) | PROCESSING, SUSPENDED, SENT, EXPIRED, DECLINED, SUCCESSFUL |
PROCESSING | Transaction being processed | SUSPENDED, SENT, EXPIRED, DECLINED, REFUNDED, SUCCESSFUL |
SUSPENDED | Transaction temporarily suspended | PROCESSING, SENT, EXPIRED, DECLINED, REFUNDED, SUCCESSFUL |
Closed States (Final)
| Status | Description | Note |
|---|---|---|
SENT | Transaction sent/transmitted | Final state - no further transitions |
EXPIRED | Transaction expired | Final state - no further transitions |
DECLINED | Transaction declined/rejected | Final state - no further transitions |
REFUNDED | Transaction refunded/reversed | Final state - no further transitions |
SUCCESSFUL | Transaction completed successfully | Final state - no further transitions |
Risk Score Ranges
Risk score from 0 to 100 (stored with 2 decimal precision):- 0-30: Low risk (green)
- 31-60: Medium risk (yellow)
- 61-80: High risk (orange)
- 81-100: Critical risk (red)
Currency Conversion Rate Sources
TherateSource field indicates how the exchange rate was obtained:
- ms-provider: Real-time rate from currency microservice (primary source)
- cache-fallback: Cached rate (< 1h old) when service unavailable
- no-conversion: No conversion needed (currency is already USD)
- null: Conversion failed or not applicable
Error Responses
400 Bad Request - Validation Error
Example 1: Missing required fields400 Bad Request - Missing Organization
401 Unauthorized
500 Internal Server Error
Next Steps
Rules Configuration
Learn to create rules
Fraud Detection
Fraud detection examples
AML Monitoring
AML compliance rules
Overview
Back to overview