Skip to Content
B2B APITransaction Endpoints

Transaction Screening

Screen transactions for risk and retrieve transaction risk assessments.

Submit Transaction

Process a new transaction and receive an immediate risk assessment for merchant payments. This endpoint enables real-time fraud detection for payment transactions in merchant environments.

Endpoint

POST /v1/transaction

Request Schema

FieldTypeRequiredDescription
idstringYesUnique transaction identifier
userIdstringYesUser identifier
statusenumYesTransaction status: PENDING, APPROVED, DECLINED, FAILED, CANCELED
currencyCodestringYesISO 4217 currency code
amountnumberYesTransaction amount
timestampnumberNoUnix epoch milliseconds (preferred over deprecated createdAt)
userDeviceIdstringNoUnique device identifier
userDeviceobjectNoComplete user device information
directionenumNoPayment direction: payin, payout
actionTypestringNoTransaction type: PURCHASE, REFUND, VOID, etc.
providerstringNoPayment method provider (e.g., dlocal, stripe)
paymentMethodenumNoPayment method: crypto, wallet, bank, card, vas, ewa, cash
sourcestringNoSource of funds (e.g., savings, checking)
accountIdstringNoUser account identifier
merchantIdstringNoMerchant identifier, this should be omitted if the merchant field is used
merchantstringNoComplete Merchant object, if used omit the merchantId field. The Merchant can be sent via the /merchant endpoint, or using this field
terminalIdstringNoTerminal identifier
externalIdstringNoExternal transaction identifier
billingAddressobjectBilling address information
recipientobjectDetails when recipient differs from sender

Additional identifiers like externalId can help link transactions across different systems

Payment Method Details

The request should include one of these payment method objects based on the paymentMethod field:

FieldTypeDescription
bankobjectBank payment details
cardobjectCard payment details
cryptoobjectCryptocurrency payment details
walletobjectDigital wallet payment details
ewaobjectEarned Wage Advance (EWA) payment details
vasobjectValue Added Services (VAS) payment details

The details specific to each payment method can be found in the Payment Method Schemas section below.

Recipient Details

There is also a recipient object which is only necessary if the recipient is different from the originating user

When sending funds to another party, include recipient information:

FieldTypeDescription
recipient.idstringRecipient identifier
recipient.paymentMethodenumRecipient payment method: crypto, wallet, bank, card
recipient.bankobjectRecipient bank details
recipient.cardobjectRecipient card details
recipient.cryptoobjectRecipient crypto details
recipient.walletobjectRecipient wallet details

Example Request

{ "id": "TXN123456", "userId": "USER789", "merchantId": "MERCH123456", "status": "APPROVED", "paymentMethod": "card", "card": { "id": "CARD789", "last4": "4321", "type": "CREDIT", "bin": "423456" }, "terminalId": "TERM123", "amount": 1299.99, "currencyCode": "ZAR", "timestamp": 1734100200000, "actionType": "PURCHASE", "externalId": "EXT123456" }

Example Responses

Low Risk Response

{ "id": "TXN123456789", "riskLevel": "low", "recommendedAction": "ALLOW", "triggered": [], "timestamp": 1734100583000 }

High Risk Response

{ "id": "TXN123456790", "riskLevel": "high", "recommendedAction": "REVIEW", "timestamp": 1734100583000, "triggered": [ { "id": "TRIG123456", "name": "Transaction amount above threshold", "level": "high", "reason": "Transaction amount exceeds allowed purchase size", "recommendedAction": "REVIEW" } ] }

Understanding Risk Levels

The response includes a risk assessment with five levels:

  • low: Minimal risk, transaction can proceed
  • medium_low: Slightly elevated risk, usually safe to proceed
  • medium: Moderate risk, may require additional verification
  • high: Significant risk, careful review recommended
  • very_high: Highest risk level, manual review strongly advised

Based on the risk assessment, you’ll receive one of these recommended actions:

  • ALLOW: Process the transaction normally
  • REVIEW: Flag for manual review
  • BLOCK: Reject the transaction
  • STEP_UP_AUTH: Request additional authentication
  • FLAG_FOR_MONITORING: Allow but monitor for suspicious patterns
  • REPORT_SUSPICIOUS: Consider reporting to appropriate authorities

These actions can be configured according to client requirements. Reach out to support@orca-fraud.com for customization options.

Error Response Format

See the Error Reference section for a full description of API errors. All API errors follow a consistent JSON structure:

{ "error": { "type": "ERROR_TYPE", "message": "Human-readable error description", "details": ["Additional error details (optional)"] }, "timestamp": 1755602195137 }

In the case of a validation error, the format will be as follows:

{ "error": { "type": "VALIDATION_ERROR", "message": "Request validation failed", "details": [ "/amount: Expected number to be greater or equal to 0" ] }, "timestamp": 1755602195137 }

Update Transaction Endpoint

The update endpoint allows you to update transaction statuses and provide additional context about processed transactions. This data helps improve risk assessment accuracy over time.

Endpoint

POST /v1/transaction/update

Request Schema

FieldTypeRequiredDescription
transactionIdstringYesTransaction identifier to update
statusenumNoUpdated status: PENDING, APPROVED, DECLINED, BLOCKED, FAILED, CANCELED, ABANDONED
timestampnumberNoUnix epoch milliseconds (defaults to current time if not provided)
reasonstringNoOptional reason for the update, usually a reason code
descriptionstringNoOptional textual description for the update
typestringNoOptional type of update (e.g., merchant_decision, manual_review)
isFraudulentbooleanNoFlag to indicate if the transaction is fraudulent, if applicable
transactionobjectNoPartial transaction object with updated fields since original processing

Transaction Update Fields

The transaction field accepts a partial transaction object containing only the fields that have been updated since the transaction was originally processed:

FieldTypeDescription
accountIdstringUpdated Account ID
bankBank Details SchemaUpdated bank details
cardCard Details SchemaUpdated card details
vasVAS Details SchemaUpdated VAS details
cashCash Details SchemaUpdated cash details

Note: Only include fields in the transaction object that have actually changed since the original transaction was processed.

Example Update Request

{ "transactionId": "TXN123456", "status": "APPROVED", "description": "Transaction approved after manual review", "reason": "Customer verification completed", "type": "manual_review", "isFraudulent": false, "timestamp": 1734167723000, "transaction": { "accountId": "ACC789456" } }

Response

By default, this endpoint returns a simple success response:

{ "status": "Success" }

A validation error in the same structure as above will be returned should the request fail validation.

Monitoring Response

If monitoring is configured for your client on this endpoint, you will receive the same response structure as the transaction screening endpoint, including risk assessment:

{ "id": "TXN123456", "riskLevel": "low", "recommendedAction": "ALLOW", "triggered": [], "timestamp": 1734167723000 }

Note: To enable monitoring on this endpoint and receive risk assessment responses, contact support@orca-fraud.com to configure this feature for your account.

Retrieve Transaction

Get risk assessment results for a specific transaction that has already been assessed.

Endpoint

GET /v1/transaction/{id}

Parameters

ParameterTypeRequiredDescription
idstringYesTransaction identifier

Example Response

{ "id": "TXN123456", "riskLevel": "medium", "recommendedAction": "ALLOW", "timestamp": 1734100583000, "triggered": [ { "id": "TRIG123456", "name": "Unusual hours for merchant", "level": "medium", "reason": "Merchant operating hours outside normal range", "recommendedAction": "ALLOW" } ] }

Response Schema

FieldTypeRequiredDescription
idstringYesTransaction identifier
riskLevelenumYesRisk level: low, medium_low, medium, high, very_high
recommendedActionenumYesAction to take: ALLOW, REVIEW, BLOCK, STEP_UP_AUTH, FLAG_FOR_MONITORING, REPORT_SUSPICIOUS
triggeredarrayNoArray of triggered risk rules
timestampnumberYesUnix epoch milliseconds

Note: Both the POST and GET transaction endpoints return the same response structure. This allows consistent handling of transaction risk assessments regardless of how they are retrieved.

Triggered Rule Schema

FieldTypeDescription
idstringUnique identifier for the triggered rule
namestringName of the triggered rule
levelenumRule severity: low, medium_low, medium, high, very_high
reasonstringReason for the triggered rule
recommendedActionenumSuggested action: ALLOW, REVIEW, BLOCK, STEP_UP_AUTH, FLAG_FOR_MONITORING, REPORT_SUSPICIOUS

Merchant Schema

The Merchant details can either be sent via the /merchant endpoint, or in an object on the /transaction request. If the merchant object is used, please omit the root merchantId field in favour of merchant.id

FieldTypeRequiredDescription
idstringYesUnique merchant identifier
namestringYesMerchant business name
statusenumYesMerchant status
timestampnumberYesUnix timestamp in milliseconds
riskLevelstringNoPre-assigned risk level if available
mccstringNoMerchant Category Code
tradingNamestringNoDBA (Doing Business As) name
organizationIdstringNoParent organization identifier
posModestringNoPoint of Sale mode
businessSegmentstringNoBusiness industry segment
averagePurchaseSizestringNoAverage transaction size
monthlyVolumestringNoExpected monthly transaction volume
provincestringNoMerchant location province/state
countrystringNoMerchant location country code
paymentMethodsarrayNoAccepted payment methods include: crypto, wallet, bank, card, cash, vas, ewa
registrationNumberstringNoBusiness registration/tax ID
verificationStatusenumNoVerification status: PENDING, APPROVED, DECLINED, BLOCKED
accountNumberstringNoMerchant account number
bankIdstringNoMerchant bank identifier
merchantIdstringNoMerchant identifier as registered
terminalIdstringNoPOS terminal initiating transaction
agentIdstringNoIdentifier of agent or distributor

Payment Method Schemas

For each of the following schemas, no fields are required however some form of identifier that can be used to identify subsequent transactions is ideal.

Bank Details Schema

FieldTypeDescription
idstringUnique identifier for bank instrument
accountNumberstringBank account number
routingNumberstringBank routing number (ACH)
currencystringCurrency code of the account
ibanFullstringFull IBAN number for international payments
sortCodestringUK sort code if applicable
accountTypestringType of account (checking/savings)
accountHolderNamestringName of the account holder
bankNamestringName of the bank
bankBranchstringName of the bank branch
bankBranchCodestringCode identifying the specific bank branch

Card Details Schema

FieldTypeDescription
idstringEncrypted card identifier
binstringFirst six digits of card
binCountrystringCountry associated with the card BIN. This can be inferred if not sent.
brandstringCard brand (e.g., Visa, Mastercard)
last4stringLast four digits of card
typestringCard type: CREDIT, DEBIT
isDigitalWalletbooleanIndicates if this is from Google Pay/Apple Pay
cardFingerprintstringUnique tokenized card identifier
digitalWalletTypestringType of digital wallet if applicable
digitalWalletTokenstringToken or identifier from digital wallet if applicable

Crypto Details Schema

FieldTypeDescription
idstringUnique identifier for crypto instrument
assetSymbolstring/arrayCryptocurrency symbol(s) (e.g., BTC, ETH)
networkstringBlockchain network
addressstringWallet address
transactionHashstringBlockchain transaction hash (only on transactions)

Wallet Details Schema

Support for various wallet types, such as:

  • PIX (Brazil)
  • M-PESA (Kenya)
FieldTypeDescription
idstringUnique Wallet identifier
tokenBrandstringWallet brand (e.g., PIX)
phonestringPhone number associated with wallet (in E.164 international format if applicable)
phoneCountrystringCountry code for phone (if not sent this can be inferred if phone is in E.164 international format)
countrystringCountry code, kept separate for verification. Use if different from phoneCountry
phoneProviderstringMobile phone wallet provider if applicable
currencystringCurrency code for the wallet
typestringWallet type
pixKeystringPIX key for PIX transactions
taxNumberIdstringTax ID for PIX transactions

EWA (Earned Wage Access) Details Schema

FieldTypeDescription
idstringUnique identifier for EWA instrument
employerIdstringID of the employer associated with the EWA

VAS (Value Added Service) Details Schema

FieldTypeDescription
idstringUnique identifier for voucher/VAS instrument
voucherCodestringUnique code identifying the voucher
voucherTypeenumType of voucher: gift, discount, promotional, prepaid, service
issuerstringCompany that issued the voucher
recipient.emailstringEmail of gift voucher recipient
recipient.phonestringPhone number of gift voucher recipient
faceValuenumberOriginal/nominal value
currentBalancenumberRemaining balance
currencystringCurrency code
expiryDatenumberTimestamp when voucher expires
activationDatenumberTimestamp when voucher became active
statusenumVoucher status: active, redeemed, expired, cancelled, pending

Cash Details Schema

FieldTypeDescription
idstringUnique identifier for cash transaction
agentIdstringID of the agent where cash was deposited
typestringType of cash transaction
Last updated on