Skip to main content
These four endpoints cover the complete payout lifecycle: you create a corridor for a destination currency, wait for KYC approval, request a live FX quote, and then submit a pay request with your beneficiary details. All requests must include a valid Authorization: Bearer bp_live_… header. See the overview for base URL, error codes, and the endpoint index.

POST /corridors

Creates a new corridor for your organisation. The corridor starts in PENDING_KYC status and cannot be used for quotes or payments until KYC is approved in the Meterlane dashboard.
string
required
The destination fiat currency for payouts. Must be one of BRL, MXN, NGN, KES, or ZAR.

Response fields

string
Unique corridor ID. Use this as the :id path parameter in subsequent requests.
string
The organisation ID that owns this corridor.
string
The destination fiat currency code you specified on creation.
string
Lifecycle status of the corridor. Starts as PENDING_KYC; transitions to ACTIVE after dashboard KYC approval.

Example

A newly created corridor cannot accept quotes or payments. Navigate to Dashboard → Corridors to complete KYC and move the corridor to ACTIVE status.

GET /corridors/:id

Retrieves the current state of a corridor belonging to your organisation.
string
required
The corridor ID returned when you called POST /corridors.

Response fields

string
Unique corridor ID.
string
The organisation ID that owns this corridor.
string
The destination fiat currency code.
string
Current lifecycle status: PENDING_KYC or ACTIVE.

Example


GET /corridors/:id/quote

Returns a live FX quote for converting USDC to the corridor’s destination currency. The corridor must be ACTIVE.
string
required
The corridor ID.
string
required
The USDC amount to convert, expressed as a positive numeric string (e.g. "100").

Response fields

string
Opaque identifier for this quote. Pass it to POST /corridors/:id/pay to lock in the rate.
string
Exchange rate from USDC to the destination currency at the time of the quote.
string
The amount the beneficiary will receive in the destination currency after all fees.
string
ISO 8601 timestamp after which the quote is no longer valid.

Example

Quotes expire quickly — do not cache or reuse a quoteId. Fetch a fresh quote immediately before every pay request. Submitting an expired quoteId will result in an error from the upstream Circle API.

POST /corridors/:id/pay

Initiates a USDC payout to a beneficiary’s bank account. The corridor must be ACTIVE. This endpoint accepts the request and returns 202 Accepted; settlement is confirmed asynchronously via webhook.
string
required
The corridor ID.
string
required
A unique string (e.g. a UUID) that identifies this pay attempt. Reusing the same key lets you safely retry without creating a duplicate payment.
string
required
The quoteId returned by GET /corridors/:id/quote. Must not be expired.
string
required
The USDC wallet address on the source chain that is funding this payment.
string
required
The amount of USDC to send, expressed as a positive numeric string (e.g. "100").
object
required
Bank account details for the recipient.

Beneficiary account number validation

Response fields

string
Meterlane’s internal payment record ID. Use this to reconcile payments in your system.
string
The payment ID assigned by Circle’s Cross-Platform Network (CPN). Useful for support escalations.
string
Initial status of the payment. Always "PENDING" on a 202 response.

Example

A 202 Accepted response means Meterlane has queued your payment — it does not mean the funds have settled. Listen for payments.payment_completed on your webhook endpoint to confirm final settlement.