Use customerChargeToken to charge a customer’s stored card using their existing Super Wallet tokens.
This request completes a payment by referencing both the customerToken and subscriptionToken (paymentToken).
Common use: perform payments for returning customers without collecting card details again.
Endpoint
POST https://secure.3gdirectpay.com/API/v6/Headers
Content-Type: application/xml; charset=utf-8
Accept: application/xml
Request
Required Fields
| Field | Type | Req | Description |
|---|---|---|---|
Request | string | Yes | Must be customerChargeToken |
CompanyToken | string | Yes | Token provided by DPO to authorize API operations |
TransactionToken | string | Yes | Token of the transaction to be charged |
customerToken | string | Yes | Customer’s Super Wallet token |
paymentToken | string | Yes | Tokenized card reference (subscriptionToken) |
paymentTokenCVV | integer | No | Card CVV — if mandatory, the API will respond instructing to resend with CVV |
Example Request (XML)
<?xml version="1.0" encoding="utf-8"?>
<API3G>
<CompanyToken>68B90B5E-25F6-4146-8AB1-C7A3A0C41A7F</CompanyToken>
<Request>customerChargeToken</Request>
<TransactionToken>3AB58C3C-796F-4FA9-A333-72E75250778E</TransactionToken>
<customerToken>9C6BB1D2-B2DE-46B3-8AD7-409168936DDA</customerToken>
<paymentToken>977E056D-3AD2-4DC5-AE8A-3B8CFF00741A</paymentToken>
<paymentTokenCVV>111</paymentTokenCVV>
</API3G>Note:
If the response indicates that CVV is required, re-submit the same request includingpaymentTokenCVV.
Response
Example Success Response (XML)
<?xml version="1.0" encoding="utf-8"?>
<API3G>
<Result>000</Result>
<ResultExplanation>Transaction successful</ResultExplanation>
</API3G>Field Reference
| Field | Type | Description |
|---|---|---|
Result | integer | Response code returned by the API |
ResultExplanation | string | Free-text explanation of the result |
Result Codes
| Code | ResultExplanation | Meaning / Action |
|---|---|---|
000 | Transaction successful | Payment processed successfully |
888 | System error | Retry or contact support |
999 | Customer not found / Account verification required | Ensure customer account is verified |
902 | Data mismatch | Verify transaction and token fields |
950 | Missing mandatory fields | Check XML structure and required tags |
803 | No or invalid request name | Confirm Request=customerChargeToken |
991 | Encrypted string is empty | Check encryption and formatting |
Typical Usage Flow
sequenceDiagram
participant M as Merchant
participant D as DPO API
M->>D: customerChargeToken<br/>(customerToken + paymentToken + TransactionToken)
D-->>M: Result 000 + Transaction successful
alt CVV required
D-->>M: Response indicates CVV mandatory
M->>D: Resubmit request with paymentTokenCVV
D-->>M: Result 000 + Transaction successful
end
Note over M->>M: Mark transaction as paid in system
Notes & Best Practices
- Tokenized payments: Use this endpoint for returning customers; no card data should ever be re-entered.
- CVV handling: Some issuers require CVV for stored card transactions — always respect the API’s response and re-submit only if prompted.
- Security: Never store or log the CVV. Only keep
customerTokenandsubscriptionTokenfor future use. - Idempotency: Avoid duplicate charges by tracking
TransactionTokenat your application level. - Response validation: Always verify both
ResultandResultExplanationbefore updating payment status. - Error recovery: Retry only when safe (e.g., for transient 888 errors). Avoid retrying on verification or data mismatch errors.

