curl --request POST \
--url https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders \
--header 'Content-Type: application/json' \
--header 'X-Access-Key: <api-key>' \
--header 'X-Access-Request-Id: <api-key>' \
--header 'X-Access-Signature: <api-key>' \
--header 'X-Access-Timestamp: <api-key>' \
--data '
{
"direction": "IN",
"network": "br.gov.bcb.pix",
"idempotencyKey": "invoice-2026-0184",
"amount": 25000,
"currency": "BRL",
"instrument": {
"type": "PIX_CASH_IN_EMV_DYNAMIC",
"expiresIn": 86400
},
"metadata": {
"orderId": "2026-0184"
}
}
'import requests
url = "https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders"
payload = {
"direction": "IN",
"network": "br.gov.bcb.pix",
"idempotencyKey": "invoice-2026-0184",
"amount": 25000,
"currency": "BRL",
"instrument": {
"type": "PIX_CASH_IN_EMV_DYNAMIC",
"expiresIn": 86400
},
"metadata": { "orderId": "2026-0184" }
}
headers = {
"X-Access-Key": "<api-key>",
"X-Access-Timestamp": "<api-key>",
"X-Access-Request-Id": "<api-key>",
"X-Access-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Access-Key': '<api-key>',
'X-Access-Timestamp': '<api-key>',
'X-Access-Request-Id': '<api-key>',
'X-Access-Signature': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
direction: 'IN',
network: 'br.gov.bcb.pix',
idempotencyKey: 'invoice-2026-0184',
amount: 25000,
currency: 'BRL',
instrument: {type: 'PIX_CASH_IN_EMV_DYNAMIC', expiresIn: 86400},
metadata: {orderId: '2026-0184'}
})
};
fetch('https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'direction' => 'IN',
'network' => 'br.gov.bcb.pix',
'idempotencyKey' => 'invoice-2026-0184',
'amount' => 25000,
'currency' => 'BRL',
'instrument' => [
'type' => 'PIX_CASH_IN_EMV_DYNAMIC',
'expiresIn' => 86400
],
'metadata' => [
'orderId' => '2026-0184'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Access-Key: <api-key>",
"X-Access-Request-Id: <api-key>",
"X-Access-Signature: <api-key>",
"X-Access-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders"
payload := strings.NewReader("{\n \"direction\": \"IN\",\n \"network\": \"br.gov.bcb.pix\",\n \"idempotencyKey\": \"invoice-2026-0184\",\n \"amount\": 25000,\n \"currency\": \"BRL\",\n \"instrument\": {\n \"type\": \"PIX_CASH_IN_EMV_DYNAMIC\",\n \"expiresIn\": 86400\n },\n \"metadata\": {\n \"orderId\": \"2026-0184\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Access-Key", "<api-key>")
req.Header.Add("X-Access-Timestamp", "<api-key>")
req.Header.Add("X-Access-Request-Id", "<api-key>")
req.Header.Add("X-Access-Signature", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders")
.header("X-Access-Key", "<api-key>")
.header("X-Access-Timestamp", "<api-key>")
.header("X-Access-Request-Id", "<api-key>")
.header("X-Access-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"direction\": \"IN\",\n \"network\": \"br.gov.bcb.pix\",\n \"idempotencyKey\": \"invoice-2026-0184\",\n \"amount\": 25000,\n \"currency\": \"BRL\",\n \"instrument\": {\n \"type\": \"PIX_CASH_IN_EMV_DYNAMIC\",\n \"expiresIn\": 86400\n },\n \"metadata\": {\n \"orderId\": \"2026-0184\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Access-Key"] = '<api-key>'
request["X-Access-Timestamp"] = '<api-key>'
request["X-Access-Request-Id"] = '<api-key>'
request["X-Access-Signature"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"direction\": \"IN\",\n \"network\": \"br.gov.bcb.pix\",\n \"idempotencyKey\": \"invoice-2026-0184\",\n \"amount\": 25000,\n \"currency\": \"BRL\",\n \"instrument\": {\n \"type\": \"PIX_CASH_IN_EMV_DYNAMIC\",\n \"expiresIn\": 86400\n },\n \"metadata\": {\n \"orderId\": \"2026-0184\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "ord_3KpFvBwYzNqMxA7eHbRdJ",
"kind": "Payment.Order",
"wallet": "production-main",
"ordVersion": 1,
"direction": "IN",
"status": "PENDING",
"network": "br.gov.bcb.pix",
"idempotencyKey": "invoice-2026-0184",
"amount": 25000,
"currency": "BRL",
"instrument": {
"type": "PIX_CASH_IN_EMV_DYNAMIC",
"endToEndId": null,
"expiresIn": 86400,
"debtorName": null,
"debtorDocument": null,
"debtorAccount": null,
"qrcode": null,
"copypaste": null,
"expiresAt": null
},
"metadata": {
"orderId": "2026-0184"
},
"errorCode": null,
"errorMessage": null,
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-15T10:30:00.000Z",
"processedAt": null,
"selfName": "wallets/production-main/paymentOrders/ord_3KpFvBwYzNqMxA7eHbRdJ",
"etag": "4d5e6f70816253647586950a1b2c3d4e5f6071829304a5b6c7d8e9f0a1b2c3d4"
}{
"error": {
"code": 400,
"status": "INVALID_ARGUMENT",
"message": "Filter expression references an unsupported field.",
"details": [
{
"reason": "INVALID_ARGUMENT",
"description": "Field `nonexistent` is not allowed for filtering on this endpoint.",
"metadata": {}
}
]
}
}{
"error": {
"code": 401,
"status": "SIGNATURE_INVALID",
"message": "Request signature could not be verified.",
"details": [
{
"reason": "SIGNATURE_INVALID",
"description": "The provided signature does not match the canonical request.",
"metadata": {
"decisionId": "acd_9RmKvTpYzH2wN8qJ5b"
}
}
]
}
}{
"error": {
"code": 403,
"status": "RBAC_DENY",
"message": "The credential is not permitted to perform this action.",
"details": [
{
"reason": "RBAC_DENY",
"description": "Missing required role binding on the target resource.",
"metadata": {
"decisionId": "acd_8PaJvNqLcK3xW5sR4d"
}
}
]
}
}{
"error": {
"code": 404,
"status": "WALLET_NOT_FOUND",
"message": "Wallet not found.",
"details": [
{
"reason": "WALLET_NOT_FOUND",
"description": "No wallet exists with name `production-main`.",
"metadata": {}
}
]
}
}{
"error": {
"code": 409,
"status": "IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS",
"message": "Idempotency key already used with different parameters.",
"details": [
{
"reason": "IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS",
"description": "The `(wallet, idempotencyKey)` tuple was already used with a different request body.",
"metadata": {}
}
]
}
}{
"error": {
"code": 422,
"status": "PAYMENT_ORDER_NOT_AWAITING_APPROVAL",
"message": "Payment order is not awaiting approval.",
"details": [
{
"reason": "PAYMENT_ORDER_NOT_AWAITING_APPROVAL",
"description": "The payment order must be in AWAITING_APPROVAL for this operation.",
"metadata": {}
}
]
}
}{
"error": {
"code": 429,
"status": "RESOURCE_EXHAUSTED",
"message": "Rate limit exceeded for this credential.",
"details": [
{
"reason": "RESOURCE_EXHAUSTED",
"description": "You have exceeded the request quota for this endpoint.",
"metadata": {
"retry_after_seconds": 12
}
}
]
}
}{
"error": {
"code": 500,
"status": "INTERNAL",
"message": "An unexpected error occurred.",
"details": [
{
"reason": "INTERNAL",
"description": "Internal server error.",
"metadata": {
"id": "exc_5KaHsBxYzW3pM2dV"
}
}
]
}
}{
"error": {
"code": 503,
"status": "PROVIDER_UNAVAILABLE",
"message": "Upstream payment provider is unavailable.",
"details": [
{
"reason": "PROVIDER_UNAVAILABLE",
"description": "The provider returned a transient error or did not respond.",
"metadata": {
"id": "exc_5KaHsBxYzW3pM2dV"
}
}
]
}
}Create payment order
Creates a payment order for the given wallet.
The idempotencyKey is strongly recommended: it makes the request
safe to retry. Duplicate creates with the same (wallet, idempotencyKey)
and an identical body return the existing order; divergent bodies
return IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS.
The instrument field is a discriminated union by type; the
supported variants reflect provider capabilities.
Outbound (direction: OUT) orders are created in AWAITING_APPROVAL
status and require an explicit approve call before being submitted
for processing. Inbound (direction: IN) orders are submitted to the
provider immediately and start in PENDING.
curl --request POST \
--url https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders \
--header 'Content-Type: application/json' \
--header 'X-Access-Key: <api-key>' \
--header 'X-Access-Request-Id: <api-key>' \
--header 'X-Access-Signature: <api-key>' \
--header 'X-Access-Timestamp: <api-key>' \
--data '
{
"direction": "IN",
"network": "br.gov.bcb.pix",
"idempotencyKey": "invoice-2026-0184",
"amount": 25000,
"currency": "BRL",
"instrument": {
"type": "PIX_CASH_IN_EMV_DYNAMIC",
"expiresIn": 86400
},
"metadata": {
"orderId": "2026-0184"
}
}
'import requests
url = "https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders"
payload = {
"direction": "IN",
"network": "br.gov.bcb.pix",
"idempotencyKey": "invoice-2026-0184",
"amount": 25000,
"currency": "BRL",
"instrument": {
"type": "PIX_CASH_IN_EMV_DYNAMIC",
"expiresIn": 86400
},
"metadata": { "orderId": "2026-0184" }
}
headers = {
"X-Access-Key": "<api-key>",
"X-Access-Timestamp": "<api-key>",
"X-Access-Request-Id": "<api-key>",
"X-Access-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Access-Key': '<api-key>',
'X-Access-Timestamp': '<api-key>',
'X-Access-Request-Id': '<api-key>',
'X-Access-Signature': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
direction: 'IN',
network: 'br.gov.bcb.pix',
idempotencyKey: 'invoice-2026-0184',
amount: 25000,
currency: 'BRL',
instrument: {type: 'PIX_CASH_IN_EMV_DYNAMIC', expiresIn: 86400},
metadata: {orderId: '2026-0184'}
})
};
fetch('https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'direction' => 'IN',
'network' => 'br.gov.bcb.pix',
'idempotencyKey' => 'invoice-2026-0184',
'amount' => 25000,
'currency' => 'BRL',
'instrument' => [
'type' => 'PIX_CASH_IN_EMV_DYNAMIC',
'expiresIn' => 86400
],
'metadata' => [
'orderId' => '2026-0184'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Access-Key: <api-key>",
"X-Access-Request-Id: <api-key>",
"X-Access-Signature: <api-key>",
"X-Access-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders"
payload := strings.NewReader("{\n \"direction\": \"IN\",\n \"network\": \"br.gov.bcb.pix\",\n \"idempotencyKey\": \"invoice-2026-0184\",\n \"amount\": 25000,\n \"currency\": \"BRL\",\n \"instrument\": {\n \"type\": \"PIX_CASH_IN_EMV_DYNAMIC\",\n \"expiresIn\": 86400\n },\n \"metadata\": {\n \"orderId\": \"2026-0184\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Access-Key", "<api-key>")
req.Header.Add("X-Access-Timestamp", "<api-key>")
req.Header.Add("X-Access-Request-Id", "<api-key>")
req.Header.Add("X-Access-Signature", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders")
.header("X-Access-Key", "<api-key>")
.header("X-Access-Timestamp", "<api-key>")
.header("X-Access-Request-Id", "<api-key>")
.header("X-Access-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"direction\": \"IN\",\n \"network\": \"br.gov.bcb.pix\",\n \"idempotencyKey\": \"invoice-2026-0184\",\n \"amount\": 25000,\n \"currency\": \"BRL\",\n \"instrument\": {\n \"type\": \"PIX_CASH_IN_EMV_DYNAMIC\",\n \"expiresIn\": 86400\n },\n \"metadata\": {\n \"orderId\": \"2026-0184\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://txengine.bloobank.com/txengine/v1/wallets/{wallet}/paymentOrders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Access-Key"] = '<api-key>'
request["X-Access-Timestamp"] = '<api-key>'
request["X-Access-Request-Id"] = '<api-key>'
request["X-Access-Signature"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"direction\": \"IN\",\n \"network\": \"br.gov.bcb.pix\",\n \"idempotencyKey\": \"invoice-2026-0184\",\n \"amount\": 25000,\n \"currency\": \"BRL\",\n \"instrument\": {\n \"type\": \"PIX_CASH_IN_EMV_DYNAMIC\",\n \"expiresIn\": 86400\n },\n \"metadata\": {\n \"orderId\": \"2026-0184\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "ord_3KpFvBwYzNqMxA7eHbRdJ",
"kind": "Payment.Order",
"wallet": "production-main",
"ordVersion": 1,
"direction": "IN",
"status": "PENDING",
"network": "br.gov.bcb.pix",
"idempotencyKey": "invoice-2026-0184",
"amount": 25000,
"currency": "BRL",
"instrument": {
"type": "PIX_CASH_IN_EMV_DYNAMIC",
"endToEndId": null,
"expiresIn": 86400,
"debtorName": null,
"debtorDocument": null,
"debtorAccount": null,
"qrcode": null,
"copypaste": null,
"expiresAt": null
},
"metadata": {
"orderId": "2026-0184"
},
"errorCode": null,
"errorMessage": null,
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-15T10:30:00.000Z",
"processedAt": null,
"selfName": "wallets/production-main/paymentOrders/ord_3KpFvBwYzNqMxA7eHbRdJ",
"etag": "4d5e6f70816253647586950a1b2c3d4e5f6071829304a5b6c7d8e9f0a1b2c3d4"
}{
"error": {
"code": 400,
"status": "INVALID_ARGUMENT",
"message": "Filter expression references an unsupported field.",
"details": [
{
"reason": "INVALID_ARGUMENT",
"description": "Field `nonexistent` is not allowed for filtering on this endpoint.",
"metadata": {}
}
]
}
}{
"error": {
"code": 401,
"status": "SIGNATURE_INVALID",
"message": "Request signature could not be verified.",
"details": [
{
"reason": "SIGNATURE_INVALID",
"description": "The provided signature does not match the canonical request.",
"metadata": {
"decisionId": "acd_9RmKvTpYzH2wN8qJ5b"
}
}
]
}
}{
"error": {
"code": 403,
"status": "RBAC_DENY",
"message": "The credential is not permitted to perform this action.",
"details": [
{
"reason": "RBAC_DENY",
"description": "Missing required role binding on the target resource.",
"metadata": {
"decisionId": "acd_8PaJvNqLcK3xW5sR4d"
}
}
]
}
}{
"error": {
"code": 404,
"status": "WALLET_NOT_FOUND",
"message": "Wallet not found.",
"details": [
{
"reason": "WALLET_NOT_FOUND",
"description": "No wallet exists with name `production-main`.",
"metadata": {}
}
]
}
}{
"error": {
"code": 409,
"status": "IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS",
"message": "Idempotency key already used with different parameters.",
"details": [
{
"reason": "IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS",
"description": "The `(wallet, idempotencyKey)` tuple was already used with a different request body.",
"metadata": {}
}
]
}
}{
"error": {
"code": 422,
"status": "PAYMENT_ORDER_NOT_AWAITING_APPROVAL",
"message": "Payment order is not awaiting approval.",
"details": [
{
"reason": "PAYMENT_ORDER_NOT_AWAITING_APPROVAL",
"description": "The payment order must be in AWAITING_APPROVAL for this operation.",
"metadata": {}
}
]
}
}{
"error": {
"code": 429,
"status": "RESOURCE_EXHAUSTED",
"message": "Rate limit exceeded for this credential.",
"details": [
{
"reason": "RESOURCE_EXHAUSTED",
"description": "You have exceeded the request quota for this endpoint.",
"metadata": {
"retry_after_seconds": 12
}
}
]
}
}{
"error": {
"code": 500,
"status": "INTERNAL",
"message": "An unexpected error occurred.",
"details": [
{
"reason": "INTERNAL",
"description": "Internal server error.",
"metadata": {
"id": "exc_5KaHsBxYzW3pM2dV"
}
}
]
}
}{
"error": {
"code": 503,
"status": "PROVIDER_UNAVAILABLE",
"message": "Upstream payment provider is unavailable.",
"details": [
{
"reason": "PROVIDER_UNAVAILABLE",
"description": "The provider returned a transient error or did not respond.",
"metadata": {
"id": "exc_5KaHsBxYzW3pM2dV"
}
}
]
}
}direction field determines the workflow:
| Direction | Workflow | Initial status |
|---|---|---|
IN | One-step. Submitted to the provider immediately. | PENDING |
OUT | Two-step. Requires explicit approve before submission. | AWAITING_APPROVAL |
The idempotencyKey field
idempotencyKey for payment-order creates. It makes the request safe to retry on network failures — the (wallet, idempotencyKey) tuple is unique; the same key may be reused across different wallets. Without it, every retry creates a duplicate payment. Reusing a key in the same wallet with different parameters returns HTTP 409 Conflict (IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS).| Scenario | Result |
|---|---|
First request with this (wallet, idempotencyKey) | New order created. 201 Created. |
| Retry with identical body | The original order is returned. 201 Created. |
| Retry with divergent body | IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS (HTTP 409 Conflict). |
The instrument field
instrument is a discriminated union by type — five PIX variants today. The five variants and when to use each are documented in Instrument types.
type | Direction |
|---|---|
PIX_CASH_IN_EMV_STATIC | IN |
PIX_CASH_IN_EMV_DYNAMIC | IN |
PIX_CASH_OUT_KEY | OUT |
PIX_CASH_OUT_EMV | OUT |
PIX_CASH_OUT_ACCOUNT | OUT |
Authorizations
Opaque credential identifier provisioned during onboarding. See the Integration Guide for the request-signing protocol.
Unix epoch timestamp in UTC milliseconds. See the Integration Guide for skew tolerance.
Unique identifier per request (UUID v4 recommended). The
(accessKey, requestId) tuple must be unique within the replay
window defined by the Integration Guide.
Base64-encoded ECDSA signature of the canonical request, computed
with the private key paired to X-Access-Key. See the Integration
Guide for canonicalization rules and reference implementations.
Path Parameters
Wallet name (RFC 1035 DNS label).
1 - 63^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$Body
Direction of value flow.
IN, OUT Payment network identifier.
br.gov.bcb.pix, tron.mainnet, solana.mainnet, bitcoin.mainnet, ethereum.mainnet Amount in minor units of the order currency.
x >= 125000
Currency or asset code.
BRL, USD, TRX, SOL, BTC, ETH, USDT Inbound PIX instrument backed by a long-lived, reusable static EMV QR code.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Client-supplied opaque key. Strongly recommended; makes the request safe to retry. Globally unique within the wallet scope.
1 - 64"invoice-2026-0184"
Show child attributes
Show child attributes
Response
Payment order created.
An inbound (cash-in) or outbound (cash-out) payment request routed through a provider network on behalf of a wallet.
^ord_[A-Za-z0-9]+$"ord_3KpFvBwYzNqMxA7eHbRdJ"
Payment.Order The wallet that owns this order (DNS label name).
"production-main"
Snapshot version, incremented on every content mutation.
x >= 1Direction of value flow.
IN, OUT Lifecycle status of a payment order.
AWAITING_APPROVAL, PENDING, PROCESSING, SUCCESS, FAILED, CANCELED, EXPIRED, REFUNDED Payment network identifier.
br.gov.bcb.pix, tron.mainnet, solana.mainnet, bitcoin.mainnet, ethereum.mainnet Client-supplied opaque key. The (wallet, idempotencyKey) tuple
is globally unique; identical retries return the existing order,
divergent retries return IDEMPOTENCY_KEY_IN_USE_WITH_DIFFERENT_PARAMS.
1 - 64"invoice-2026-0184"
Amount in minor units of the order currency.
x >= 125000
Currency or asset code.
BRL, USD, TRX, SOL, BTC, ETH, USDT Inbound PIX instrument backed by a long-lived, reusable static EMV QR code.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Server-assigned creation timestamp (UTC ISO 8601).
Timestamp of the last content mutation (UTC ISO 8601).
Canonical relative resource name.
"wallets/production-main/paymentOrders/ord_3KpFvBwYzNqMxA7eHbRdJ"
Hex-encoded content fingerprint of the resource. Reserved for
optimistic concurrency control via the If-Match request header
in a future release; currently exposed for informational and
audit purposes only.
^[a-f0-9]{64,128}$Client-supplied tags. Not included in the etag computation.
Show child attributes
Show child attributes
{ "orderId": "2026-0184" }
Provider-reported error code when status is FAILED.
Human-readable error description when status is FAILED.
Server processing timestamp. null until the order is submitted
to (or rejected by) the underlying provider; set once the
provider returns a definitive outcome.