Sandbox

Simulate a deposit (sandbox only)

Changed on

The only way to originate a pay-in from the client side. It runs the real pipeline: detection, attribution, events, screening, conversion and crediting.

Exists on the sandbox host only. On production the path returns 404 not_found.

Idempotency-Key is required, exactly as on any other POST.

Fires the full event sequence for a pay-in. See Webhooks and events.

post/v1/test/customers/{customerId}/deposits/simulate

Request

  • Base URL
    https://api.sandbox.alfredpay.io
  • URL
    https://api.sandbox.alfredpay.io/v1/test/customers/{customerId}/deposits/simulate
  • Auth
    • HTTP bearer
    • or API key in header api-key and API key in header api-secret

Headers

Idempotency-Keystring uuid required

Required on every state-changing POST, simulators included; the only exempt POST is …/verifications/preflight. Replay (same key, same body) returns the original response with Idempotent-Replayed: true; same key with a different body → 409 idempotency_conflict. Keys are UUIDs, scoped to the API key, retained for 24 hours.

Request body

virtualAccountIdstring
depositAddressIdstring
referencestring

Simulates the payer quoting a reference.

Example request

{
  "amount": {
    "value": "10000.00"
  }
}

Response

Accepted

transaction_idstring required
transaction_type'PAY_IN' | 'PAY_OUT' | 'CONVERSION' required
pay_in_subtype'COLLECTION' | 'ON_RAMP' | 'USD_STABLE_DEPOSIT' | 'null' nullable
pay_out_subtype'OFF_RAMP' | 'FIAT_WITHDRAWAL' | 'CRYPTO_WITHDRAWAL' | 'CROSS_BORDER_PAYOUT' | 'null' nullable
conversion_subtype'OTC_TRADE' | 'BALANCE_CONVERSION' | 'null' nullable
transaction_status'CREATED' | 'PENDING_VALIDATION' | 'PENDING_FUNDS' | 'PENDING_COMPLIANCE' | 'PENDING_RFI' | 'APPROVED_FOR_EXECUTION' | 'PROCESSING' | 'COMPLETE' | 'FAILED' | 'CANCELLED' | 'BLOCKED' required

Business lifecycle, customer-facing. Terminal values are COMPLETE, FAILED, CANCELLED, BLOCKED.

compliance_status'NOT_REQUIRED' | 'PENDING_SCREENING' | 'PENDING_KYT' | 'CLEARED' | 'ALERTED' | 'RFI_REQUESTED' | 'PAUSED' | 'ESCALATED' | 'RELEASED' | 'BLOCKED' required
settlement_status'NOT_STARTED' | 'FUNDS_EXPECTED' | 'FUNDS_RECEIVED' | 'FUNDS_HELD' | 'FUNDS_RELEASED' | 'SETTLED' | 'PARTIALLY_SETTLED' | 'FAILED' | 'RETURNED' required

Leg-level and financial. "Delayed settlement" is a settlement value with the parent still PROCESSING, never a business status.

reconciliation_summary'ALL_MATCHED' | 'PARTIAL_MATCH' | 'HAS_BREAK' required

Derived, visibility only. Never blocks transaction_status.

payment_flow_idstring nullable

Relates independent transactions in one flow. One completing never completes another.

resource_versioninteger

Monotonic per resource. Apply events in this order.

created_atstring date-time
updated_atstring date-time
idstring
customerIdstring
type'fiat' | 'crypto'
transaction_subtypestring
railstring

The rail the deposit arrived on, such as spei, cbu, breb or pix.

referencestring nullable
settled_atstring date-time nullable
ingestion_mode'announced' | 'unannounced'
unexpectedDepositboolean

Example response

{
  "amount": {
    "value": "10000.00"
  },
  "amounts": {
    "gross": {
      "value": "10000.00"
    },
    "net_credited": {
      "value": "10000.00"
    }
  },
  "converted": {
    "developerFee": {
      "value": "10000.00"
    }
  }
}

Changes