Conversions

Execute a conversion

Changed on

Consumes a quote. The body is quoteId and metadata, nothing else: the customer plus the quote's currency pair fully determine which balance is debited and which is credited.

Don't run a conversion ahead of a cross-currency payout. The payout converts natively, and doing it separately creates a second transaction you don't need.

Wait on conversion.updated. See Webhooks and events.

post/v1/customers/{customerId}/conversions

Request

  • Base URL
    https://api.sandbox.alfredpay.io
  • URL
    https://api.sandbox.alfredpay.io/v1/customers/{customerId}/conversions
  • 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

quoteIdstring required
payment_flow_idstring
metadataMetadata

Client-supplied key–value pairs, echoed on the object and every event about it.

Response

Created

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
quoteIdstring
executionRatestring nullable

Changes