Support for POLi, PayID, bank transfer and AUD
Introduction
Australian players prefer local payment methods: instant bank transfers via POLi, PayID/Osko under NPP and a traditional transfer bank, all in AUD. It is important for the operator to ensure seamless integration, instant processing, compliance with regulations and a reliable architecture.
1. Overview of payment methods
1. POLi Payments
OAuth-user authorization through the bank interface, without cards and additionally SMS codes.
Instant deposit, suitable for deposits.
2. PayID/Osko (NPP)
Translation by identifier (email, phone), the NPP network standard provides calculation within seconds.
Requires integration with PSP supporting Australia's New Payments Platform.
3. Bank transfer (BPAY/direct transfer)
BPAY: generation of Biller Code and Customer Reference, payment is made by the user in the Internet bank; enrollment up to 24 hours.
Direct AUD-transfer: SWIFT/IBAN transfer, suitable for large amounts, processing time 1-3 working days.
4. AUD currency
All operations in AUD: correct display, storage in the database, rounding to cents ('DECIMAL (12.2)').
2. Integration architecture
mermaid
flowchart LR
Player -->|initiate deposit| API-Gateway
API-Gateway --> PaymentService
PaymentService -->|init POLi| POLi-API
PaymentService -->|init PayID| PSP-API
PaymentService -->|generate BPAY| BillingService
POLi-API -->|webhook| PaymentService
PSP-API -->|webhook| PaymentService
BillingService -->|polling / webhook| PaymentService
PaymentService --> TransactionService
TransactionService --> AuditDB
API-Gateway: validation, rate-limiting, routing to PaymentService.
PaymentService: unified point for all AUD methods, stores' paymentId ',' method ',' status', 'metadata'.
BillingService: module for BPAY accounts and polling status.
TransactionService: ACID transactions update the balance and log operations.
AuditDB: immutable store of request and response logs.
3. Implementation of POLi
1. Initiation:http
POST /api/payments/poli/init
{
"amount": 100. 00,
"currency": "AUD",
"returnUrl": "https: //casino. com/poli/callback"
}
→ `{ paymentId, poliUrl }`
2. Player Redirection:- The player is redirected to 'poliUrl', logs in to the bank, confirms the payment.
http
POST /api/payments/poli/callback
Headers: X-Signature
Body: { paymentId, status, bankTransactionId }
Checking HMAC by'X-Signature '.
Update 'status': 'pending' → 'approved '/' declined'.
When'approved '- start'TransactionService. credit(playerId, amount)`.
4. PayID/Osko Implementation
1. Initiation:http
POST /api/payments/payid/init
{
"payId": "user@example. com",
"amount": 250. 00,
"currency": "AUD",
"Description": "Casino deposit"
}
→ `{ paymentId, transactionRef }`
2. Webhook notification:- PSP шлёт `POST /api/payments/payid/callback { paymentId, status }`.
Similar signature verification.
Statuses: 'pending', 'settled', 'failed'.
5. Implementation of BPAY and bank transfer
1. BPAY account generation:http
POST /api/payments/bpay/generate
{ "amount": 500. 00 }
→ `{ billerCode, customerRef, expiryDate }`
2. Polling statuses:- `GET /api/payments/bpay/status? billerCode = & customerRef = 'every 15 minutes.
- При `PAID` — update `approved`, credit funds.
- Mapping of account details (SWIFT, BSB, Account) in UI.
- Transactions are reconciled manually or automatically by incoming bank statements via SFTP.
6. Localization and UX
Formatting:js
new Intl. NumberFormat('en-AU', { style: 'currency', currency: 'AUD' }). format(1000)
// "A$1,000. 00"
UI:
- Selection of the method in the deposit: POLi, PayID, BPAY, Bank Transfer icons.
- Description of terms and commissions under each method.
- Verification before the first input: KYC/AML.
7. Security and fault tolerance
TLS 1. 2 + for all APIs and Webhooks.
Circuit Breaker (Resilience4j) for PSP calls, disabling the method when error-rate is> 5%.
Retry-logic with exponential backoff in case of temporary failures.
Audit Trail: all webhook events and transactions are stored for at least 7 years according to regulations.
8. Testing
Sandbox modes:- POLi: `poli. sandbox. domain 'with fake' test _ user 'tokens.
- PSP: test credits from PayID providers.
- E2E tests (Cypress): scripts: initiate → emulate callback → check balance.
- Load Testing (k6): simulation of 1000 concurrent deposits by POLi and PayID.
Conclusion
Integration of POLi, PayID/Osko and traditional bank transfers into AUD requires a single PaymentService, reliable webhook processing, format localization and fault-tolerant architecture with circuit breaker and retry mechanisms. This approach ensures fast deposits, high CR and Australian compliance.