Invoice and Payout APIs
Use the Invoice and Payout APIs when your backend needs to create finance-team workflows in KryptoGO Studio with a Studio API key.
Call these APIs only from your server. Never expose a Studio API key in browser, mobile app, or other client-side code.
Authentication
Every request uses your Studio API key:
X-STUDIO-API-KEY: YOUR_API_KEYCreate endpoints also require your Studio OAuth client id:
X-Client-ID: YOUR_CLIENT_IDIf you include client_id in the JSON body for compatibility with Studio dashboard requests, it must match X-Client-ID.
Permissions
The API key acts as the Studio user that created it. That user must have the matching Transfer role:
| Endpoint group | Required permission |
|---|---|
| Create or update invoice intents | transfer:create |
| Cancel invoice intents | transfer:create |
| Approve or reject invoice intents | transfer:approve |
| Sign or refund invoice intents | transfer:sign |
| Create or update payout intents | transfer:create |
| Approve or reject payout intents | transfer:approve |
| Refund payout intents | transfer:sign |
| Get/list invoice or payout records and invoice logs | transfer:read |
Invoice endpoints
| Method | Endpoint | Request | Success response |
|---|---|---|---|
POST | /v1/studio/api/invoice/intent | InvoiceCreateRequest | Envelope<InvoiceIntent> |
GET | /v1/studio/api/invoice/intent/{id} | Path id | Envelope<InvoiceIntent> |
PUT | /v1/studio/api/invoice/intent/{id} | Path id + InvoiceUpdateRequest | Envelope<InvoiceIntent> |
POST | /v1/studio/api/invoice/intent/{id}/cancel | Path id + optional CancelRequest | Envelope<InvoiceIntent> |
POST | /v1/studio/api/invoice/intent/{id}/approve | Path id | Envelope<InvoiceIntent> |
POST | /v1/studio/api/invoice/intent/{id}/reject | Path id + RejectRequest | Envelope<InvoiceIntent> |
POST | /v1/studio/api/invoice/intent/{id}/sign | Path id + optional SignInvoiceRequest | Envelope<object> |
POST | /v1/studio/api/invoice/intent/{id}/refund | Path id + RefundReviewRequest | Envelope<object> |
GET | /v1/studio/api/invoice/intents | InvoiceListQuery | ListEnvelope<InvoiceIntent> |
GET | /v1/studio/api/invoice/intent/{id}/logs | Path id | Envelope<InvoiceLog[]> |
Create an invoice
cURL
curl -X POST 'https://wallet.kryptogo.app/v1/studio/api/invoice/intent' \
-H 'Content-Type: application/json' \
-H 'X-STUDIO-API-KEY: YOUR_API_KEY' \
-H 'X-Client-ID: YOUR_CLIENT_ID' \
-d '{
"pricing_mode": "fiat",
"amount": "3000.00",
"currency": "TWD",
"pay_token": "USDT",
"chain": "arb",
"origin": "https://merchant.example",
"recipient_name": "Acme Buyer",
"recipient_email": "buyer@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"creator": "finance-bot",
"payment_terms": 30,
"payment_method_type": "crypto",
"payout_addresses": {
"evm": "0x0000000000000000000000000000000000000000"
},
"detail_items": [
{
"name": "Consulting service",
"quantity": 1,
"unit_price": 3000,
"tax": 0
}
],
"order_data": {
"external_invoice_id": "INV-2026-001"
}
}'Invoice request schemas
InvoiceCreateRequest
Required fields: pricing_mode, amount, pay_token, chain, origin, recipient_name, recipient_email, organization_name, organization_email, creator, payment_terms, detail_items.
{
"client_id": "YOUR_CLIENT_ID",
"pricing_mode": "fiat",
"amount": "3000.00",
"currency": "TWD",
"pay_token": "USDT",
"chain": "arb",
"origin": "https://merchant.example",
"order_data": { "external_invoice_id": "INV-2026-001" },
"callback_url": "https://merchant.example/kg-callback",
"group_key": "merchant-batch-2026-06",
"payout_target_address": "0x0000000000000000000000000000000000000000",
"payout_addresses": {
"evm": "0x0000000000000000000000000000000000000000",
"sol": "SOLANA_ADDRESS",
"tron": "TRON_ADDRESS"
},
"payment_deadline": 1782096000,
"swap_enabled": true,
"use_fixed_stablecoin_rate": false,
"recipient_name": "Acme Buyer",
"recipient_email": "buyer@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"description": "June invoice",
"attachment": { "file_id": "file_abc123" },
"creator": "finance-bot",
"payment_terms": 30,
"invoice_issue_date": "2026-06-22",
"payment_method_type": "crypto",
"allow_any_chain": false,
"allow_any_token": false,
"bank_account_id": 123,
"detail_items": [
{
"name": "Consulting service",
"quantity": 1,
"unit_price": 3000,
"tax": 0
}
]
}| Field | Type | Required | Notes |
|---|---|---|---|
client_id | string | No | Optional body compatibility field. If present, must match X-Client-ID. |
pricing_mode | fiat | crypto | Yes | Price input mode. |
amount | string | Yes | Amount in currency for fiat mode or crypto amount for crypto mode. |
currency | TWD | USD | No | Fiat currency. |
pay_token | USDC | USDT | Yes | Accepted payment token. |
chain | string | Yes | Payment chain id, for example arb. |
origin | string | Yes | Merchant origin URL. |
order_data | object | No | Arbitrary merchant metadata. |
callback_url | string | No | Webhook callback URL. |
group_key | string | No | Merchant grouping key. |
payout_target_address | string | No | Legacy single payout address. |
payout_addresses | object | No | Chain-to-address map, for example evm, sol, tron. |
payment_deadline | integer | No | Unix timestamp in seconds. |
swap_enabled | boolean | No | Whether swap is enabled. |
use_fixed_stablecoin_rate | boolean | No | Whether to use a fixed stablecoin rate. |
recipient_name | string | Yes | Invoice recipient contact name. |
recipient_email | string | Yes | Invoice recipient email. |
organization_name | string | Yes | Recipient organization name. |
organization_email | string | Yes | Recipient organization email. |
description | string | No | Invoice description. |
attachment | object | No | Attachment metadata. |
creator | string | Yes | Creator display name or external actor id. |
payment_terms | integer | Yes | Days until due; 0 means due on receipt. |
invoice_issue_date | string | No | ISO-8601 timestamp or YYYY-MM-DD. |
payment_method_type | crypto | fiat | No | Settlement method type. |
allow_any_chain | boolean | No | Allow payer to choose any supported chain. |
allow_any_token | boolean | No | Allow payer to choose any supported token. |
bank_account_id | integer | No | Bank account id for fiat settlement. |
detail_items | InvoiceDetailItem[] | Yes | Line items. |
InvoiceDetailItem
Required fields: name, quantity, unit_price.
{
"name": "Consulting service",
"quantity": 1,
"unit_price": 3000,
"tax": 0
}| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | Line item name. |
quantity | number | Yes | Line item quantity. |
unit_price | number | Yes | Unit price. |
tax | number | No | Per-line tax amount, not a percentage rate. |
InvoiceUpdateRequest
All fields are optional.
{
"recipient_name": "Acme Buyer",
"recipient_email": "buyer@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"description": "Updated invoice description",
"attachment": { "file_id": "file_abc123" },
"reviewer": "finance-manager@example.com",
"approve_time": "2026-06-22T12:00:00Z",
"invoice_issue_date": "2026-06-22",
"payment_terms": 30,
"payment_method_type": "crypto",
"bank_account_id": 123,
"payout_target_address": "0x0000000000000000000000000000000000000000",
"payout_target_sol_address": "SOLANA_ADDRESS",
"payout_target_tron_address": "TRON_ADDRESS",
"chain": "arb",
"pay_token": "USDT",
"allow_any_chain": false,
"allow_any_token": false,
"payout_addresses": {
"evm": "0x0000000000000000000000000000000000000000"
},
"detail_items": [
{
"name": "Consulting service",
"quantity": 1,
"unit_price": 3000,
"tax": 0
}
]
}CancelRequest
{
"reason": "Cancelled by initiator"
}RejectRequest
Required fields: reason.
{
"reason": "Recipient information does not match our records."
}SignInvoiceRequest
All fields are optional. refund_address is required when the invoice payment is overpaid and the sign action must also create a refund.
{
"refund_address": "0x0000000000000000000000000000000000000000",
"refund_reason": "Overpaid invoice refund",
"refund_attachments": ["file_abc123"]
}RefundReviewRequest
Required fields: refund_address, refund_reason, refund_attachments.
{
"refund_address": "0x0000000000000000000000000000000000000000",
"refund_reason": "Customer requested refund",
"refund_attachments": ["file_abc123"]
}InvoiceListQuery
GET /v1/studio/api/invoice/intents?page=1&page_size=20&status=approval_pending| Query | Type | Notes |
|---|---|---|
page | integer | Default 1. |
page_size | integer | Default 20, maximum 100. |
status | string | Exact invoice status. |
status_category | string | Status group. |
settlement_type | crypto | fiat | Settlement type. |
recipient_email | string | Recipient email filter. |
invoice_id | string | Invoice id filter. |
payment_intent_id | string | Payment intent id filter. |
search | string | Free-text search. |
created_after | string | ISO date-time lower bound. |
created_before | string | ISO date-time upper bound. |
Payout endpoints
| Method | Endpoint | Request | Success response |
|---|---|---|---|
POST | /v1/studio/api/payout/intent | PayoutCreateRequest | Envelope<PayoutIntent> |
GET | /v1/studio/api/payout/intent/{id} | Path id | Envelope<PayoutIntent> |
PUT | /v1/studio/api/payout/intent/{id} | Path id + PayoutUpdateRequest | Envelope<PayoutIntent> |
POST | /v1/studio/api/payout/intent/{id}/approve | Path id | Envelope<PayoutIntent> |
POST | /v1/studio/api/payout/intent/{id}/reject | Path id + RejectRequest | Envelope<PayoutIntent> |
POST | /v1/studio/api/payout/intent/{id}/refund | Path id + RefundReviewRequest | Envelope<PayoutIntent> |
GET | /v1/studio/api/payout/intents | PayoutListQuery | ListEnvelope<PayoutIntent> |
Create a payout
cURL
curl -X POST 'https://wallet.kryptogo.app/v1/studio/api/payout/intent' \
-H 'Content-Type: application/json' \
-H 'X-STUDIO-API-KEY: YOUR_API_KEY' \
-H 'X-Client-ID: YOUR_CLIENT_ID' \
-d '{
"pricing_mode": "fiat",
"amount": "100.00",
"currency": "USD",
"pay_token": "USDT",
"chain": "arb",
"origin": "https://merchant.example",
"exact_out_amount": "100.00",
"recipient_name": "Jane Receiver",
"recipient_email": "receiver@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"creator": "payout-bot",
"recipient_type": "individual",
"recipient_uid": "recipient-user-id",
"order_data": {
"external_payout_id": "PO-2026-001"
}
}'Payout request schemas
PayoutCreateRequest
Required fields: pricing_mode, amount, pay_token, chain, origin, exact_out_amount, recipient_name, recipient_email, organization_name, organization_email, creator.
{
"client_id": "YOUR_CLIENT_ID",
"pricing_mode": "fiat",
"amount": "100.00",
"currency": "USD",
"pay_token": "USDT",
"chain": "arb",
"origin": "https://merchant.example",
"order_data": { "external_payout_id": "PO-2026-001" },
"callback_url": "https://merchant.example/kg-callback",
"group_key": "merchant-batch-2026-06",
"payout_target_address": "0x0000000000000000000000000000000000000000",
"payment_deadline": 1782096000,
"exact_out_amount": "100.00",
"swap_enabled": true,
"recipient_name": "Jane Receiver",
"recipient_email": "receiver@example.com",
"recipient_account_email": "receiver-account@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"description": "June supplier payout",
"attachment": { "file_id": "file_abc123" },
"creator": "payout-bot",
"recipient_type": "individual",
"recipient_uid": "recipient-user-id",
"recipient_org_id": 123,
"recipient_phone": "+886900000000"
}| Field | Type | Required | Notes |
|---|---|---|---|
client_id | string | No | Optional body compatibility field. If present, must match X-Client-ID. |
pricing_mode | fiat | crypto | Yes | Price input mode. |
amount | string | Yes | Gross payout amount. |
currency | TWD | USD | No | Fiat currency. |
pay_token | USDC | USDT | Yes | Token used for payout funding. |
chain | string | Yes | Payment chain id, for example arb. |
origin | string | Yes | Merchant origin URL. |
order_data | object | No | Arbitrary merchant metadata. |
callback_url | string | No | Webhook callback URL. |
group_key | string | No | Merchant grouping key. |
payout_target_address | string | No | Target payout address. |
payment_deadline | integer | No | Unix timestamp in seconds. |
exact_out_amount | string | Yes | Net amount the recipient should receive. |
swap_enabled | boolean | No | Whether swap is enabled. |
recipient_name | string | Yes | Recipient contact name. |
recipient_email | string | Yes | Recipient email. |
recipient_account_email | string | No | Recipient account email. |
organization_name | string | Yes | Recipient organization name. |
organization_email | string | Yes | Recipient organization email. |
description | string | No | Payout description. |
attachment | object | No | Attachment metadata. |
creator | string | Yes | Creator display name or external actor id. |
recipient_type | individual | organization | No | Recipient type. |
recipient_uid | string | No | KryptoGO user id. |
recipient_org_id | integer | No | KryptoGO organization id. |
recipient_phone | string | No | Recipient phone number. |
PayoutUpdateRequest
All fields are optional.
{
"recipient_name": "Jane Receiver",
"recipient_email": "receiver@example.com",
"recipient_account_email": "receiver-account@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"description": "Updated payout description",
"attachment": { "file_id": "file_abc123" },
"exact_out_amount": "100.00",
"chain": "arb",
"pay_token": "USDT",
"payout_target_address": "0x0000000000000000000000000000000000000000",
"recipient_type": "individual",
"recipient_uid": "recipient-user-id",
"recipient_org_id": 123,
"recipient_phone": "+886900000000"
}PayoutListQuery
GET /v1/studio/api/payout/intents?page=1&page_size=20&status=approval_pending| Query | Type | Notes |
|---|---|---|
page | integer | Default 1. |
page_size | integer | Default 20, maximum 100. |
payout_id | string | Payout id filter. |
payment_intent_id | string | Payment intent id filter. |
creator | string | Creator filter. |
status | string | Exact payout status. |
status_category | string | Status group. |
settlement_type | crypto | fiat | Settlement type. |
search | string | Free-text search. |
Response schemas
All successful responses use a KryptoGO envelope.
Envelope<T>
{
"code": 0,
"data": {}
}ListEnvelope<T>
{
"code": 0,
"data": [],
"paging": {
"page_number": 1,
"page_size": 20,
"total_count": 0
},
"counts": {}
}InvoiceIntent
The invoice create, get, update, cancel, approve, and reject endpoints return Envelope<InvoiceIntent>.
{
"code": 0,
"data": {
"id": "inv_abc123",
"invoice_id": "INV-2026-001",
"payment_intent": {
"payment_intent_id": "pi_abc123",
"client_id": "YOUR_CLIENT_ID",
"org_id": 123,
"pricing_mode": "fiat",
"payment_chain_id": "arb",
"payment_address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"payer_address": null,
"token_address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
"symbol": "USDT",
"decimals": 6,
"crypto_amount": "9.23",
"fiat_amount": "3000.00",
"fiat_currency": "TWD",
"payment_deadline": 1782096000,
"status": "awaiting_approval",
"payment_tx_hash": null,
"payment_tx_timestamp": null,
"aggregation_tx_hash": null,
"refund_tx_hash": null,
"received_crypto_amount": null,
"aggregated_crypto_amount": null,
"refund_crypto_amount": null,
"order_data": { "external_invoice_id": "INV-2026-001" },
"callback_url": "https://merchant.example/kg-callback",
"group_key": "merchant-batch-2026-06",
"kg_deep_link": "https://kryptogo.page.link/send?...",
"payment_method_type": "crypto",
"swap_enabled": true,
"payout_target_address": "0x0000000000000000000000000000000000000000",
"payout_target_sol_address": null,
"payout_target_tron_address": null,
"payout_addresses": { "evm": "0x0000000000000000000000000000000000000000" },
"exact_out_amount": null,
"kg_fee_amount": null,
"aggregation_tx_timestamp": null,
"finalized_timestamp": null,
"partial_refund_tx_hash": null,
"partial_refund_amount": null,
"partial_refund_address": null,
"crypto_price": null,
"target_chain_id": null,
"target_token_address": null,
"bank_account_id": null,
"kya_risk": null,
"large_transaction_risk": null,
"kya_risk_address": null,
"kya_risk_counter_party": null,
"transaction_frequency_risk": null,
"total_weighted_risk_score": null,
"quick_in_out_risk": null,
"dormant_account_risk": null,
"volume_spike_risk": null,
"structuring_risk": null,
"kya_accumulation_risk": null,
"business_pattern_risk": null,
"kya_record": {}
},
"status": "approval_pending",
"recipient_name": "Acme Buyer",
"recipient_email": "buyer@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"payment_terms": 30,
"detail_items": [
{
"name": "Consulting service",
"quantity": 1,
"unit_price": 3000,
"tax": 0
}
]
}
}InvoiceIntent may include additional fields as Studio adds workflow metadata. Treat unknown fields as additive.
| Field | Type | Notes |
|---|---|---|
id | string | Invoice intent id. |
invoice_id | string | Human-readable invoice id. |
payment_intent | PaymentIntent | Nested payment intent. |
status | string | Invoice workflow status. |
recipient_name | string | Recipient contact name. |
recipient_email | string | Recipient email. |
organization_name | string | Recipient organization name. |
organization_email | string | Recipient organization email. |
payment_terms | integer | Payment terms in days. |
detail_items | object[] | Invoice line items. |
PayoutIntent
The payout create, get, update, approve, reject, and refund endpoints return Envelope<PayoutIntent>.
{
"code": 0,
"data": {
"id": "payout_abc123",
"payout_id": "PO-2026-001",
"payment_intent": {
"payment_intent_id": "pi_abc123",
"client_id": "YOUR_CLIENT_ID",
"org_id": 123,
"pricing_mode": "fiat",
"payment_chain_id": "arb",
"payment_address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"payer_address": null,
"token_address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
"symbol": "USDT",
"decimals": 6,
"crypto_amount": "100.00",
"fiat_amount": "100.00",
"fiat_currency": "USD",
"payment_deadline": 1782096000,
"status": "awaiting_approval",
"payment_tx_hash": null,
"payment_tx_timestamp": null,
"aggregation_tx_hash": null,
"refund_tx_hash": null,
"received_crypto_amount": null,
"aggregated_crypto_amount": null,
"refund_crypto_amount": null,
"order_data": { "external_payout_id": "PO-2026-001" },
"callback_url": "https://merchant.example/kg-callback",
"group_key": "merchant-batch-2026-06",
"kg_deep_link": "https://kryptogo.page.link/send?...",
"payment_method_type": "crypto",
"swap_enabled": true,
"payout_target_address": "0x0000000000000000000000000000000000000000",
"payout_target_sol_address": null,
"payout_target_tron_address": null,
"payout_addresses": {},
"exact_out_amount": "100.00",
"kg_fee_amount": null,
"aggregation_tx_timestamp": null,
"finalized_timestamp": null,
"partial_refund_tx_hash": null,
"partial_refund_amount": null,
"partial_refund_address": null,
"crypto_price": null,
"target_chain_id": null,
"target_token_address": null,
"bank_account_id": null,
"kya_risk": null,
"large_transaction_risk": null,
"kya_risk_address": null,
"kya_risk_counter_party": null,
"transaction_frequency_risk": null,
"total_weighted_risk_score": null,
"quick_in_out_risk": null,
"dormant_account_risk": null,
"volume_spike_risk": null,
"structuring_risk": null,
"kya_accumulation_risk": null,
"business_pattern_risk": null,
"kya_record": {}
},
"status": "approval_pending",
"recipient_name": "Jane Receiver",
"recipient_email": "receiver@example.com",
"organization_name": "Merchant Ltd.",
"organization_email": "finance@merchant.example",
"exact_out_amount": "100.00"
}
}PayoutIntent may include additional fields as Studio adds workflow metadata. Treat unknown fields as additive.
| Field | Type | Notes |
|---|---|---|
id | string | Payout intent id. |
payout_id | string | Human-readable payout id. |
payment_intent | PaymentIntent | Nested payment intent. |
status | string | Payout workflow status. |
recipient_name | string | Recipient contact name. |
recipient_email | string | Recipient email. |
organization_name | string | Recipient organization name. |
organization_email | string | Recipient organization email. |
exact_out_amount | string | Net amount the recipient should receive. |
PaymentIntent
InvoiceIntent.payment_intent and PayoutIntent.payment_intent share the same nested format.
| Field | Type | Notes |
|---|---|---|
payment_intent_id | string | Payment intent id. |
client_id | string | Studio OAuth client id. |
org_id | integer | Organization id. |
pricing_mode | fiat | crypto | Pricing mode. |
payment_chain_id | string | Payment chain id. |
payment_address | string | Generated payment address. |
payer_address | string | null | Payer address after payment. |
token_address | string | Token contract address. |
symbol | string | Token symbol. |
decimals | integer | Token decimals. |
crypto_amount | string | Crypto amount. |
fiat_amount | string | null | Fiat amount. |
fiat_currency | TWD | USD | null | Fiat currency. |
payment_deadline | integer | Unix timestamp in seconds. |
status | string | Payment status: pending, success, expired, insufficient_not_refunded, insufficient_refunded, cancelled, aml_hold, awaiting_approval, manual_review, or refunded. |
payment_tx_hash | string | null | Payment transaction hash. |
payment_tx_timestamp | integer | null | Payment confirmation timestamp. |
aggregation_tx_hash | string | null | Aggregation transaction hash. |
refund_tx_hash | string | null | Refund transaction hash. |
received_crypto_amount | string | null | Received crypto amount. |
aggregated_crypto_amount | string | null | Aggregated crypto amount. |
refund_crypto_amount | string | null | Refunded crypto amount. |
order_data | object | Merchant metadata. |
callback_url | string | null | Webhook callback URL. |
group_key | string | Merchant grouping key. |
kg_deep_link | string | null | KryptoGO payment deep link. |
payment_method_type | string | Payment method type. |
swap_enabled | boolean | Whether swap is enabled. |
payout_target_address | string | null | EVM payout target address. |
payout_target_sol_address | string | null | Solana payout target address. |
payout_target_tron_address | string | null | Tron payout target address. |
payout_addresses | object | Chain-to-address map. |
exact_out_amount | string | null | Net payout amount. |
kg_fee_amount | string | null | KryptoGO fee amount. |
aggregation_tx_timestamp | integer | null | Aggregation timestamp. |
finalized_timestamp | integer | null | Finalized timestamp. |
partial_refund_tx_hash | string | null | Partial refund transaction hash. |
partial_refund_amount | string | null | Partial refund amount. |
partial_refund_address | string | null | Partial refund address. |
crypto_price | string | null | Crypto price used for conversion. |
target_chain_id | string | null | Target chain id. |
target_token_address | string | null | Target token address. |
bank_account_id | integer | null | Bank account id. |
kya_risk | string | null | KYA risk value. |
large_transaction_risk | string | null | Large transaction risk value. |
kya_risk_address | string | null | Address risk value. |
kya_risk_counter_party | string | null | Counterparty risk value. |
transaction_frequency_risk | string | null | Frequency risk value. |
total_weighted_risk_score | string | null | Total weighted risk score. |
quick_in_out_risk | string | null | Quick in/out risk value. |
dormant_account_risk | string | null | Dormant account risk value. |
volume_spike_risk | string | null | Volume spike risk value. |
structuring_risk | string | null | Structuring risk value. |
kya_accumulation_risk | string | null | Accumulation risk value. |
business_pattern_risk | string | null | Business pattern risk value. |
kya_record | object | KYA record details. |
InvoiceLog
{
"id": 123,
"invoice_id": "inv_abc123",
"from_status": "approval_pending",
"to_status": "approved",
"operator_uid": "user_abc123",
"reason": "Approved by finance",
"created_at": "2026-06-22T12:00:00Z"
}| Field | Type | Notes |
|---|---|---|
id | integer | Log id. |
invoice_id | string | Invoice intent id. |
from_status | string | Previous status. |
to_status | string | New status. |
operator_uid | string | Operator user id. |
reason | string | Status transition reason. |
created_at | string | ISO date-time. |