HAVALE_HPP Payload
Use the fieldless HAVALE_HPP payload for hosted TRY bank-transfer payments in Turkey.
HAVALE_HPP is a hosted bank-transfer pay-in method. It is available only for BANK_TRANSFER payments in TRY for customers in Turkey.
#Request Payload
The method payload has only the common method identifiers:
| Field | Type | Required | Value |
|---|---|---|---|
paymentMethod | Enum | Yes | HAVALE_HPP |
paymentType | Enum | Yes | BANK_TRANSFER |
{
"paymentMethod": "HAVALE_HPP",
"paymentType": "BANK_TRANSFER"
}Set the top-level payment currency to TRY. Do not add provider-specific fields to apmPayload.
#Full Payment Request Example
Use dummy values only. The hosted payment request contains the fieldless HAVALE_HPP payload and normal payment data:
{
"accountId": "123456789012345678",
"requestId": "00000000-0000-4000-8000-000000000001",
"amount": "5000",
"currency": "TRY",
"checksum": "YOUR_CHECKSUM",
"callbackUrl": "https://merchant.example/webhooks/apm",
"successRedirectUrl": "https://merchant.example/payment/success",
"failureRedirectUrl": "https://merchant.example/payment/failure",
"order": {
"title": "Deposit to demo account",
"orderId": "demo-order-0001"
},
"device": {
"ip": "203.0.113.10"
},
"billingDetails": {
"firstName": "Demo",
"lastName": "Customer",
"email": "customer@example.com",
"phone": "+15550101000",
"city": "Istanbul",
"country": "TR",
"address1": "123 Demo Street",
"postalCode": "10001",
"dateOfBirth": "2000-01-01",
"externalUserId": "demo-user-001"
},
"apmPayload": {
"paymentMethod": "HAVALE_HPP",
"paymentType": "BANK_TRANSFER"
}
}#Hosted Redirect Response
When the hosted session is created, the response has actionType set to REDIRECTION and redirectUrl.
{
"requestId": "00000000-0000-4000-8000-000000000001",
"transactionId": "900000000000000001",
"paymentType": "APM",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "HAVALE_HPP",
"paymentType": "BANK_TRANSFER",
"actionType": "REDIRECTION",
"redirectUrl": "https://checkout.example/hosted-session"
}
}Redirect the customer to apmResponseData.redirectUrl. Use the callback as the final result; the browser return does not confirm payment success.
If the response has actionType: NONE, do not redirect. Follow the transaction status and callback instead.
#Callback After Completion
After the hosted payment is completed, Exirom sends this final result to callbackUrl. The callback can still include the original hosted redirect URL:
{
"order": {
"date": null,
"name": null,
"title": "Deposit to demo account",
"siteId": null,
"orderId": "demo-order-0001",
"domainName": null
},
"accountId": "123456789012345678",
"createdAt": "2026-08-31T12:00:00Z",
"requestId": "00000000-0000-4000-8000-000000000001",
"transactionId": "900000000000000001",
"callbackUrl": "https://merchant.example/webhooks/apm",
"declineCode": null,
"orderAmount": "5000.0",
"orderCurrency": "TRY",
"billingDetails": {
"ssn": null,
"city": "Istanbul",
"email": "customer@example.com",
"phone": "+15550101000",
"state": null,
"country": "TR",
"address1": "123 Demo Street",
"lastName": "Customer",
"firstName": "Demo",
"postalCode": "10001",
"dateOfBirth": "2000-01-01",
"identityCode": null,
"externalUserId": "demo-user-001"
},
"processedAmount": "5000.0",
"processedCurrency": "TRY",
"conversionRate": "1.0",
"transactionStatus": "SUCCEED",
"apmRequestPayload": {
"paymentMethod": "HAVALE_HPP",
"paymentType": "BANK_TRANSFER"
},
"apmResponseData": {
"paymentMethod": "HAVALE_HPP",
"paymentType": "BANK_TRANSFER",
"actionType": "REDIRECTION",
"redirectUrl": "https://checkout.example/hosted-session"
},
"declineSubReason": null
}On transactionStatus: "SUCCEED", credit the customer using processedAmount and processedCurrency. Verify the callback checksum before processing it. See Handling the Callback.