Fetching a rate
Before initiating any cross-border payment or ramp, fetch the rate for the corridor: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:
Rate locking
Whenorg_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 submitclient_rate — the rate you displayed to the user. PCX validates it against the current live rate within a 0.5% tolerance:
RATE_STALE:
- Re-fetch the rate from
GET /organizations/admin/exchange-rate - Present the updated rate to the user for re-confirmation
- Resubmit the ramp with the new
client_rateandorg_rate_id
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. Therate returned by GET /organizations/admin/exchange-rate is the spread-adjusted rate.
For a breakdown of fees collected across virtual account operations: