Banking payments and orders
Orchestrate account payments and financial-service orders with customer, channel, statement, and reconciliation context.
Use DEUNA to orchestrate payment experiences inside digital banking journeys while keeping the financial product and customer context attached to every attempt. The order provides a stable business reference across providers, retries, statuses, and operations.
Complete banking order payload#
The example models a customer-directed credit account payment. Product and account references are merchant-defined metadata; avoid placing raw secrets or complete account numbers in the payload.
Banking
Financial product, masked account reference, customer, channel, and statement context for an account payment.
descriptionstatement_descriptorinitiator_typemetadata{
"order_type": "DEUNA_CHECKOUT",
"order": {
"order_id": "bank-payment-883104",
"store_code": "digital-banking",
"currency": "USD",
"items_total_amount": 12500,
"sub_total": 12500,
"total_tax_amount": 0,
"total_amount": 12500,
"items": [
{
"id": "credit-account-payment",
"sku": "CARD-PAYMENT",
"name": "Credit account payment",
"description": "Customer-directed account payment",
"quantity": 1,
"category": "financial_services",
"type": "service",
"taxable": false,
"unit_price": {
"amount": 12500,
"currency": "USD",
"currency_symbol": "$"
},
"total_amount": {
"amount": 12500,
"original_amount": 12500,
"currency": "USD",
"currency_symbol": "$",
"total_discount": 0
},
"tax_amount": {
"amount": 0,
"currency": "USD",
"currency_symbol": "$"
}
}
],
"payer_info": {
"email": "alex@example.com",
"external_registration_date": "2022-08-14T10:30:00Z"
},
"description": "Payment to account ending in 8842",
"statement_descriptor": "BANK ACCOUNT PMT",
"initiator_type": "customer",
"channel_type": "mobile_app_android",
"metadata": {
"vertical": "banking",
"account_reference": "acct_••••8842",
"product": "credit_card",
"customer_segment": "premium"
},
"callback_urls": {
"on_success": "https://merchant.example.com/payments/success",
"on_pending": "https://merchant.example.com/payments/pending",
"on_reject": "https://merchant.example.com/payments/rejected",
"on_canceled": "https://merchant.example.com/payments/canceled",
"on_failed": "https://merchant.example.com/payments/failed"
}
}
}Model the business context#
| Requirement | Order fields |
|---|---|
| Bank transaction reference | Stable order_id plus a masked or tokenized metadata reference |
| Financial product | Service item category, type, and namespaced metadata.product |
| Customer and channel | payer_info, initiator_type, and channel_type |
| Customer statement | description and provider-compatible statement_descriptor |
| Final outcome | DEUNA order_token, payment status, and verified webhook events |
Production checklist#
- Define which banking identifier becomes the immutable merchant
order_id. - Keep account references masked or tokenized and exclude credentials from metadata.
- Apply idempotency to every business attempt and reconcile timeouts against the original order.
- Validate statement descriptors and supported payment methods with the selected providers.
- Test authentication, limit, pending, decline, reversal, refund, and duplicate-submission scenarios.
Continue with Authentication and API keys, Idempotency, and Webhooks.