Skip to main content
PCX applies exchange rates to all cross-currency flows. Rates are fetched per-transaction, locked at initiation, and validated at submission. Organizations can have custom rate configurations that control the spread applied on top of the underlying market rate.

Fetching a rate

Before initiating any cross-border payment or ramp, fetch the rate for the corridor:
Response:
Store both org_rate_id and rate. Both are required when initiating a cross-border payment or ramp. For ramp flows, the corridor direction must match the ramp direction:
Fetching the rate in the wrong direction for a ramp request will cause a RATE_STALE error. Always align the rate fetch direction with the ramp direction.

Rate locking

When org_rate_id is included in a payment or ramp initiation, PCX locks that rate for the transaction. The payer sees the rate you fetched, and PCX guarantees the conversion at that rate regardless of market movement between fetch and settlement. Rates expire at expires_at. Initiating a payment after expiry will fail — re-fetch the rate and retry promptly.

Spread validation (ramp flows)

For on-ramp and off-ramp flows, you also submit client_rate — the rate you displayed to the user. PCX validates it against the current live rate within a 0.5% tolerance:
When you receive RATE_STALE:
  1. Re-fetch the rate from GET /organizations/admin/exchange-rate
  2. Present the updated rate to the user for re-confirmation
  3. Resubmit the ramp with the new client_rate and org_rate_id
Never cache org_rate_id values across sessions or reuse them after the user has been shown the rate.

Org rate configurations

Organizations can have custom spreads applied on top of market rates. These are managed by platform administrators: A rate config defines the spread percentage for a given currency pair. When a rate is fetched for an org, the active rate config for that pair is applied to produce the org_rate_id rate.

Manual rate management

Administrators can manually set or override rates for specific organizations and corridors:

Fees

PCX does not charge fees as a separate line item on payments. Fees are embedded in the spread applied via the org’s rate configuration — the rate the user sees already includes PCX’s margin. The rate returned by GET /organizations/admin/exchange-rate is the spread-adjusted rate. For a breakdown of fees collected across virtual account operations:
This endpoint is available to internal admins and provides aggregate fee data across all accounts.