What's New
New updates for a better experience. Review these before your next integration update.
Deposit V2 (Auto)
The gateway selects the payment channel for you — QR Payment or Bank Transfer — automatically. G2Wallet picks the most suitable channel.
- A single POST /v2/payins — no need to specify a receiving method
- Optional payment_theme for a branded pay page
- Backward compatible: omit receiving_type and the gateway decides
Payin cancellation & duplicate order_ref
Cancel a pending payin with POST /v1/payins/{id}/cancel — a reused order_ref returns 409 RESOURCE_EXISTS.
Example response
{
"success": false,
"data": null,
"error": "this resource already exists",
"code": "RESOURCE_EXISTS",
"meta": {
"request_id": "019f2d27-1a02-7b31-9c44-2f61c0d8a9e1",
"timestamp": 1783168980
}
}
New Amount Rules
Send amounts as integer minor units of an active currency, divisible by its server-owned unit_step. The divisible-by-100 rule from the SMK example is not a general rule for this API.
Smart Withdraw Execution
The gateway can split a withdrawal into multiple steps automatically to raise the success rate, and reports the details via callback when complete (the total amount the customer receives is unchanged).
Example callback (withdraw 1,000)
{
"status": "success",
"request_amount": 1000,
"execution_steps": [
{ "step": 1, "amount": 500, "status": "success" },
{ "step": 2, "amount": 500, "status": "success" }
]
}
Simulate Statuses on UAT
The SMK amount bands are reference only. An amount does not automatically change a payin or payout status. Use POST /v1/payins/:id/test-confirm or POST /v1/payouts/:id/test-confirm while the test transaction is in the supported state.
- 100 – 1,000 → processing · no callback
- 1,100 – 2,000 → success · callback ~2s
- 2,100 – 3,000 → failed · callback ~2s
- 3,100 and above → refunded · callback ~2s
G2Wallet is committed to continuous improvement — delivering a secure, reliable, and high-performance experience.