Skip to main content
POST
Unlock foreign currency capability

Authorizations

x-api-key
string
header
required

API key for authentication. Obtain from your Pods dashboard.

Body

application/json

Request Avenia currency unlock, or refresh UnblockPay rails / register a USD wire External Account when rampProvider is unblockpay

currency
enum<string>
required

Currency to unlock (Avenia) or refresh from ramp-provider rails (UnblockPay)

Available options:
usd
Example:

"usd"

kycUserId
string<uuid>
required

Pods-generated KYC user id returned by the foreign share-token endpoint

Example:

"550e8400-e29b-41d4-a716-446655440000"

rampProvider
string

Fiat ramp provider. Omitted or empty defaults to avenia (submit unlock). unblockpay refreshes GET /rails and, when the USD bank fields below are complete, registers a wire External Account for offramp. Never writes top-level usdEnabled.

Example:

"avenia"

bankBeneficiaryName
string

UnblockPay USD offramp only. Same field Rivool already sends on Avenia USDC→USD quotes.

Example:

"Jane Doe"

bankName
string
Example:

"Chase"

bankAccountNumber
string
Example:

"123456789"

bankRoutingNumber
string
Example:

"021000021"

beneficiaryStreetLine1
string
Example:

"1 Main St"

beneficiaryCity
string
Example:

"New York"

beneficiaryState
string
Example:

"NY"

beneficiaryPostalCode
string
Example:

"10001"

beneficiaryCountry
string
Example:

"US"

alias
string

Optional UnblockPay External Account name. Defaults to bankBeneficiaryName.

Example:

"Jane Chase wire"

beneficiaryStreetLine2
string

Response

Currency unlock submitted or already enabled

Current normalized KYC profile status

kycUserId
string<uuid>
required

Pods-generated public KYC user id

Example:

"550e8400-e29b-41d4-a716-446655440000"

provider
enum<string>
required

KYC provider used for the profile. external_evidence means the capture was performed by the customer and submitted to Pods as attested evidence.

Available options:
sumsub,
bigdatacorp,
external_evidence
Example:

"sumsub"

email
string<email>
required
walletAddress
string
required

Wallet address stored on the Ramp KYC profile. Accepts a checksummed EVM address or a Solana public key. Later Pix quotes must use the same address as destinationAddress (onramp) or originAddress (offramp).

Example:

"EXYhCNamLPFfSMekSn7Lzc2cP32aZpRa7ok5gErdJzcj"

walletAddresses
string[]
required

Every wallet linked to this Pods KYC profile. walletAddress is the primary (first linked) address and remains for existing clients.

Wallet address stored on the Ramp KYC profile. Accepts a checksummed EVM address or a Solana public key. Later Pix quotes must use the same address as destinationAddress (onramp) or originAddress (offramp).

status
enum<string>
required

Normalized Pods KYC status

Available options:
created,
provider_pending,
approved,
rejected,
rejected_retryable,
blocked
Example:

"provider_pending"

brlaEnabled
boolean
required
Example:

false

usdEnabled
boolean
required

True when the profile is approved for USD WIRE/ACH ramps via Avenia

Example:

false

eurEnabled
boolean
required

Reserved for a future EUR capability; always false today

Example:

false

rejectReason
string | null
required
providerStatus
string | null
required
Example:

"COMPLETED"

providerResult
string | null
required

Provider-specific normalized result. BigDataCorp may return values such as WAITING_ADDRESS_TO_SUBMIT_TO_AVENIA, DUPLICATE_TAX_ID, or AVENIA_KYC_SUBMIT_FAILED before the final Pods status is approved.

Example:

"APPROVED"

providerMessage
string | null
required

Provider message persisted for support and retry decisions, when available.

livenessStatus
string | null
required
Example:

"passed"

documentStatus
string | null
required
Example:

"passed"

birthDate
string | null
required

Resolved birth date in YYYY-MM-DD format for BigDataCorp profiles. Null while pending, unavailable, or not applicable to the provider.

Example:

"1990-01-01T00:00:00.000Z"

ageAtVerification
number | null
required
Example:

36

bigDataCorpIframeCreatedAt
string<date-time> | null
required

When the current BigDataCorp iframe session was created.

Example:

"2026-06-15T12:00:00.000Z"

bigDataCorpCompletedAt
string<date-time> | null
required

When BigDataCorp completed document, liveness, and identity verification.

Example:

"2026-06-15T12:04:00.000Z"

aveniaSubmissionStartedAt
string<date-time> | null
required

When Pods started the final Avenia submission. Repeated submit requests return the existing provider_pending result while this operation is in progress.

Example:

"2026-06-15T12:04:30.000Z"

aveniaSubmittedAt
string<date-time> | null
required

When the verified BigDataCorp profile was submitted to Avenia.

Example:

"2026-06-15T12:05:00.000Z"

aveniaApprovedAt
string<date-time> | null
required

When Avenia approved the KYC attempt. For Brazil profiles this coincides with brlaEnabled; for foreign profiles poll usdEnabled after currency unlock.

Example:

"2026-06-15T12:06:00.000Z"

documentEvidenceSource
enum<string>
required

Who captured the document. Null for profiles created before evidence sources were recorded.

Available options:
customer_attested,
deframe_managed
Example:

"customer_attested"

livenessEvidenceSource
enum<string>
required

Who ran the liveness check.

Available options:
customer_attested,
deframe_managed
Example:

"customer_attested"

documentType
string | null
required

Type of identity document submitted, when known.

reason
object
required

Present only when status is rejected or rejected_retryable. Prefer this over rejectReason and providerResult, which carry raw provider values and vary between providers.

updatedAt
string<date-time>
Example:

"2026-06-15T12:01:00.000Z"

ramps
object

Per ramp-provider KYC readiness. Present only when an UnblockPay nest exists. usdEnabled / brlaEnabled stay Avenia-only. When the nest is non-terminal, GET /status live-refreshes UnblockPay and may POST /check once after Path B uploads.