Use chargeTokenBankTransfer to mark a token as Pending Bank Transfer and obtain the converted amount & currency for the selected bank.
You must supply a BankCode previously obtained via GetBankTransferOptions.
After the customer pays at the bank, the transaction’s final status will update. Confirm via BackURL webhook and/or verifyToken.
Endpoint
POST https://secure.3gdirectpay.com/API/v6/Headers
Content-Type: application/xml; charset=utf-8
Accept: application/xml
Request
Required Fields
| Field | Required | Description |
|---|---|---|
CompanyToken | Yes | Your merchant token |
Request | Yes | Must be chargeTokenBankTransfer |
TransactionToken | Yes | Token returned by createToken |
BankCode | Yes | Bank identifier from GetBankTransferOptions |
Example Request (XML)
<?xml version="1.0" encoding="utf-8"?>
<API3G>
<CompanyToken>YOUR_COMPANY_TOKEN</CompanyToken>
<Request>chargeTokenBankTransfer</Request>
<TransactionToken>72983CAC-5DB1-4C7F-BD88-352066B71592</TransactionToken>
<BankCode>DTB</BankCode>
</API3G>Response
Success
<?xml version="1.0" encoding="utf-8"?>
<API3G>
<Result>000</Result>
<ResultExplanation>Transaction pending for bank transfer DTB</ResultExplanation>
<ConvertedAmount>1.01</ConvertedAmount>
<ConvertedCurrency>USD</ConvertedCurrency>
</API3G>Error (examples)
<API3G>
<Result>804</Result>
<ResultExplanation>Error in XML</ResultExplanation>
</API3G><API3G>
<Result>950</Result>
<ResultExplanation>Request missing transaction level mandatory fields: BankCode</ResultExplanation>
</API3G><API3G>
<Result>999</Result>
<ResultExplanation>Custom error message</ResultExplanation>
</API3G>Field reference
| Field | Meaning |
|---|---|
Result | 000 = accepted / pending bank transfer |
ResultExplanation | Human-readable status (bank included) |
ConvertedAmount | Amount after conversion for the selected bank |
ConvertedCurrency | Currency used for the bank transfer |
Flow (Bank Transfer)
sequenceDiagram participant M as Merchant participant D as DPO API participant B as Bank participant C as Customer M->>D: createToken → TransactionToken M->>D: GetBankTransferOptions (list banks) M->>D: chargeTokenBankTransfer (TransactionToken + BankCode) D-->>M: Result=000 + ConvertedAmount/Currency (pending) M-->>C: Show bank details/instructions C->>B: Pays at bank D-->>M: BackURL callback updates status M->>D: (optional) verifyToken for reconciliation
Usage Notes & Best Practices
- Prerequisite: call GetBankTransferOptions to obtain a valid
BankCodefor the token’s amount/currency. - Display the ConvertedAmount/Currency and bank instructions to the customer.
- Treat BackURL as the source of truth for completion; use verifyToken if webhook is missed.
- Log:
TransactionToken,BankCode,ConvertedAmount,ConvertedCurrency,Result,ResultExplanation.
Troubleshooting
- Wrong request name → ensure
<Request>chargeTokenBankTransfer</Request>(notchargeTokenAuth). 950missing fields → includeBankCodeexactly as returned by GetBankTransferOptions.804XML error → verify tag names/encoding and that you included theTransactionToken.- No final success → payment happens off-gateway; wait for webhook or poll
verifyToken.

