Payments

Simulate an inbound payment with mocked risk screening (non-production only)

Sends a real on-chain test-USDC transfer from the platform faucet into a managed wallet and fakes its risk screening: either forces the verdict to mocked_risk_status, or screens the fixed findings of mocked_screening_scenario through the real screening pipeline. Send exactly one of the two. Not available in production. Returns 201 with the screened payment, or 202 with the tx hash if it is still being detected/screened.

post/v1/payments/simulate-inbound

Request

Request body

to_accountstring uuid required

Managed account ID that should receive the simulated inbound.

mocked_risk_status'automatically_approved' | 'awaiting_decision' | 'automatically_rejected'

The risk_status the screening verdict should be forced to. Send this or mocked_screening_scenario, exactly one.

mocked_screening_scenario'vasp_findings_near_threshold'

A named screening scenario: a fixed screening provider response that the real screening pipeline evaluates against your Risk Profile, so risk_status is whatever your Risk Profile decides. vasp_findings_near_threshold: a VASP-hosted sender with two findings just over the default 0.1% VASP-hosted threshold. Send this or mocked_risk_status, exactly one.

network'BASE_SEPOLIA' | 'ETHEREUM_SEPOLIA' | 'POLYGON_AMOY' | 'TEMPO_MODERATO'

EVM testnet to send on. Defaults to BASE_SEPOLIA.

Response

The simulated inbound payment, already screened: to mocked_risk_status, or to the risk_status your Risk Profile decides for mocked_screening_scenario.

Example response

{
  "data": {
    "id": "5a9c3e7f-2b1d-4f48-a6e0-8c4b2d1f9a3e",
    "workspace_id": "b53f6690-3242-4942-9907-885779632832",
    "organization_reference_id": "ref_123",
    "direction": "inbound",
    "funding_account_id": "2a8f4c1e-9b3d-4e56-b7a0-5c6d2e1f9b3a",
    "risk_status": "automatically_approved",
    "risk_status_reasons": [
      {
        "risk_status_reason_type": "OWNERSHIP",
        "risk_status_reason_category": "Exchange",
        "risk_status_reason_participant_id": null,
        "risk_status_reason_message": "Address has OWNERSHIP activity for Exchange over its threshold",
        "risk_status_reason_severity": "Low",
        "risk_status_reason_significance": "DECISIVE",
        "volume_usd_percent": "60.00",
        "volume_usd_percent_threshold": "1",
        "volume_usd_amount": "30000.00",
        "volume_usd_amount_threshold": null,
        "confidence_score": null,
        "confidence_score_threshold": null
      },
      {
        "risk_status_reason_type": "COUNTERPARTY",
        "risk_status_reason_category": "Gaming",
        "risk_status_reason_participant_id": null,
        "risk_status_reason_message": "Address has COUNTERPARTY exposure to Gaming over its threshold",
        "risk_status_reason_severity": "Low",
        "risk_status_reason_significance": "DECISIVE",
        "volume_usd_percent": "12.00",
        "volume_usd_percent_threshold": "2",
        "volume_usd_amount": "6000.00",
        "volume_usd_amount_threshold": null,
        "confidence_score": null,
        "confidence_score_threshold": null
      }
    ],
    "provider_metadata": [],
    "participants": [
      {
        "role": "BENEFICIARY",
        "resource": {
          "resource_type": "WORKSPACE",
          "id": "b53f6690-3242-4942-9907-885779632832",
          "name_match_score": null,
          "name_match_threshold": null,
          "name_match_comparison_id": null,
          "resolution": "USER_SUPPLIED_ID"
        }
      },
      {
        "role": "ORIGINATOR_VASP",
        "resource": {
          "resource_type": "COUNTERPARTY",
          "id": "a4c1f0b8-2e9d-4a63-b7c5-1d8f6e0a3c92",
          "name_match_score": "100",
          "name_match_threshold": "85",
          "name_match_comparison_id": "a4c1f0b8-2e9d-4a63-b7c5-1d8f6e0a3c92",
          "resolution": "EXACT_MATCH"
        }
      }
    ],
    "balance_status": "unreserved",
    "steps": [],
    "created_at": "2024-03-01T10:00:00.000Z",
    "updated_at": "2024-03-01T10:00:00.000Z",
    "expires_at": "2024-03-02T10:00:00.000Z"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.