Skip to main content
POST

Authorizations

Authorization
string
header
required

ES256 JWT bearer token, minted fresh per request.

See Authentication for the claims, including the nonce, the request signature, the two scopes, and which status means what.

X-Request-Signature
string
header
required

Body-bound ES256 signature over the request, required alongside the bearer token on every call. Base64url of an IEEE P-1363 fixed 64-byte r‖s signature.

See Authentication for the canonical string it signs, including the JWT nonce that binds it to the bearer token.

Headers

X-App-Mode
enum<string>
default:SANDBOX

Which environment this request runs against.

An omitted header means SANDBOX. Send it explicitly on every call rather than relying on that default, so live money movement is never missed because a header was forgotten: a live API key that reaches a live instance without an explicit LIVE value is rejected with AUTH_API_KEY_SANDBOX_REQUIRED. When present, the value must be SANDBOX or LIVE, matched without regard to case. Any other value, including an empty one, returns 400 INVALID_APP_MODE; details.received echoes the value you sent.

Available options:
SANDBOX,
LIVE
Example:

"SANDBOX"

X-Request-Id
string

Your own correlation id for this request, returned on the response exactly as you sent it.

Optional. Where you send none the response omits it, and the X-Trace-Id response header is the handle to correlate on instead.

Example:

"9f2c1b7e-4d3a-4f81-9c2e-6b0a5d7e1f34"

Idempotency-Key
string
required

Unique client-generated key identifying this request.

A request that timed out or failed can be replayed safely under the same key. See Idempotency keys.

Pattern: ^[a-zA-Z0-9_-]{1,255}$
Example:

"3fa85f64-5717-4562-b3fc-2c963f66afa6"

Body

application/json

Payload for creating a payout address. Carries bankAccount, the routable identifiers of the destination. See createPayoutAddress for the setup and status lifecycle that follows.

payoutAddressType
string
required
Allowed value: "BANK_ACCOUNT"
accountId
string
required

The account this payout address belongs to.

Immutable once set, and an id rather than an inlined record: fetch GET /v3/common/accounts/{accountId} for the account's own identity data.

Pattern: ^acc_[1-9A-HJ-NP-Za-km-z]{21,22}$
Example:

"acc_BMY3UenpGBn8ZQ8hio4BgE"

bankAccount
SEPA bank account · object
required

An account the platform can pay over SEPA.

The IBAN's country must sit in the SEPA scheme roster, checked at creation and rejected as a validation error. A euro account the SEPA scheme does not reach, and one with no IBAN at all, belong on the SWIFT arm instead. Reachability of the specific IBAN is verified synchronously as the address is set up, and an unreachable account is rejected in that call rather than settling later through the address lifecycle.

label
string

Human-friendly label. Cosmetic.

Example:

"Operating account"

metadata
object

Your own key/value pairs, kept on the record and returned with it.

See Metadata for what belongs in a metadata object, the limits, and where it comes back. Metadata is visible in the OpenFX platform, API, and MCP server (including connected AI tools), so don't include sensitive or personal data.

Example:

Response

The created payout address.

data
object
required

A registered destination an account can be paid at. Carries bankAccount, the routable identifiers of the destination.

The record is immutable apart from archiving. There is no update operation, so correcting anything on it means creating a replacement and archiving this one.