Hosted Payment Page

Hosted Payment Page

Overview

Now you can easily receive payments and increase your revenue in a few clicks. This guide will cover some of the basics of setting up your account, receiving payments, and using your account.

HPP integration flow

To get started with receiving the payments using Genome hosted payment pages, you need to:

  • Sign up at genome.eu;

  • Start a business wallet;

  • Start a merchant account;

  • Create a payment page;

  • Create payment method(s);

  • Make an integration using the following document;

  • Test your payment page using test payment methods;

  • Check that redirect URLs work correctly and callback data is received;

  • Switch off the test payment method(s) and run in production.

Payment Page

Parameters of request

Parameter nameValidationRequiredDescription
api_keyStringYESYour personal API key from genome portal.
signatureStringYESDigital signature. The generation is explained below.
amountStringYESAmount of the transaction.
currency_isoStringYESISO 4217 code of the transaction currency. Use "XTS" test currency for test mode.
allow_edit_presetBooleanOPTIONALIf true all data passed from merchant website to Genome Hosted Payment Page (for example, email, first&last names) will be editable. Otherwise, the fields will be non-editable or not rendered at all.
show_first_last_nameBooleanOPTIONALOption to display 'first_name' and 'last_name' fields.
show_addressBooleanOPTIONALOption to display 'address' field or not.
show_cityBooleanOPTIONALOption to display 'city' field or not.
show_countryBooleanOPTIONALOption to display 'country' field or not.
show_emailBooleanOPTIONALOption to display 'email' field or not.
show_phoneBooleanOPTIONALOption to display 'phone' field or not.
show_zipBooleanOPTIONALOption to display 'zip/postal code' field or not.
ts_nonceStringOPTIONALTimestamp for signature calculation.
order_idStringOPTIONALMerchant's order (transaction) identifier.
mccStringOPTIONALMCC of operation, used in payment method routing.
descriptionStringOPTIONALDescription of operation.
first_nameStringOPTIONALPayer's first name.
last_nameStringOPTIONALPayer's last name.
phoneStringOPTIONALPayer's phone number.
emailStringOPTIONALPayer's email.
user_idStringOPTIONALUser identifier on merchant's site.
countryISO3 StringOPTIONALPayer's country ISO 3166-1 alpha-3 code.
cityStringOPTIONALPayer's city.
addressStringOPTIONALPayer's address.
zipStringOPTIONALPayer's zip.
payment_methodStringOPTIONALA parameter that will overwrite the payment methods configured on the Payment Page if provided.
Possible values are:
1 - card, 2-9 reserved for card types
10 - Bank Transfer
customer_typeStringOPTIONALPossible values: new, trusted, VIP, which can be used in improving routing and pricing logic.
langStringOPTIONALDefault - English. It's possible to provide a pre-selected payment page language. Possible values are “EN, UA, LT“
success_urlStringOPTIONALRedirect URL value in case of a successful transaction.
failure_urlStringOPTIONALRedirect URL value in case of an unsuccessful transaction.
routing_codeStringOPTIONALValue for payment method routing.
session_lifetimeStringOPTIONALSession lifetime in seconds. If no value is provided, then standard duration (30m) will be applied.
custom_<any_value>StringOPTIONALAny custom parameters should start with 'custom_' prefix.

Code example:

<form action="https://pay.genome.eu/" target="_blank">
<input type="hidden" name="api_key" value="nBE7sEDJA0xz0xo0aH99JmCgXH6flFASWXjPwgsYBC7rKaLwNwcTe3dvMRW6VtRl" />
<input type="hidden" name="signature" value="1ad88f89b0bc9ae64da2f3fda68bbe076d3a2c5b82e56cb087c064deb4ef67b5" />
<input type="hidden" name="amount" value="5" />
<input type="hidden" name="currency_iso" value="xts" />
<input type="hidden" name="allow_edit_preset" value="true" />
<input type="hidden" name="show_first_last_name" value="true" />
<input type="hidden" name="show_address" value="true" />
<input type="hidden" name="show_city" value="true" />
<input type="hidden" name="show_country" value="true" />
<input type="hidden" name="show_email" value="true" />
<input type="hidden" name="show_phone" value="true" />
<input type="hidden" name="show_zip" value="true" />
<input type="hidden" name="ts_nonce" value="1645000903012" />
<input type="hidden" name="order_id" value="124334" />
<input type="hidden" name="mcc" value="666" />
<input type="hidden" name="description" value="test description" />
<input type="hidden" name="first_name" value="John" />
<input type="hidden" name="last_name" value="Doe" />
<input type="hidden" name="phone" value="+37052141409" />
<input type="hidden" name="email" value="john.doe@gmail.com" />
<input type="hidden" name="user_id" value="u-id-12345" />
<input type="hidden" name="country" value="USA" />
<input type="hidden" name="city" value="New York" />
<input type="hidden" name="address" value="350 5th Avenue" />
<input type="hidden" name="zip" value="10118" />
<input type="hidden" name="payment_method" value="1" />
<input type="hidden" name="customer_type" value="new" />
<input type="hidden" name="lang" value="EN" />
<input type="hidden" name="success_url" value="https://merchant-site.com/success" />
<input type="hidden" name="failure_url" value="https://merchant-site.com/failure" />
<input type="hidden" name="routing_code" value="103" />
<input type="hidden" name="session_lifetime" value="1642596566170" />
<input type="hidden" name="custom_product" value='id-01' />
<input type="hidden" name="custom_user_id" value="custom-user-id" />
<button type="submit">
Pay
</button>
</form>

Url of the request: https://pay.genome.eu

HPP signature calculation

The algorithm of signature calculation is explained below.

The SHA256 hash function should be applied to the string with the following format:

Parameter nameRequiredDescription
api_secretYESYour personal secret key, which you created within the Genome portal.
signature_modeYESSignature mode, right now 'MODE_A_TS' is only available for merchants. Amount with the timestamp.
timestampYESUnix timestamp in seconds
amountYESAmount of the transaction.
currency_isoYESCurrency of the transaction in ISO 4217 format.
order_idOPTIONALMerchant's order id.
user_idOPTIONALMerchant's user id.
mccOPTIONALMCC code.

Code example:

STRING: myAwesomeSecret|MODE_A_TS|1647606194|1.00|EUR|order_100500|USER12345|666
SHA256: b743b9408dea1ec1c5385f79981cad6a4db4dc8e8318abf97c8508df9b4bd9bd
STRING: myAwesomeSecret|MODE_A_TS|1647607015|5.00|USD|||
SHA256: b548478c7afec5e600d3fdc1cc5de5b0ef0c3e322a00aed657e440d5a0d45e4b
STRING: myAwesomeSecret|MODE_A_TS|1647607116|100.52|EUR||USER12345|666
SHA256: 99341a76a53311c43c7a28bf422027122d6b85cc05b0d693b4a52d6152c20cfa
STRING: myAwesomeSecret|MODE_A_TS|1647607116|1234.56|USD|||616
SHA256: aa87dfdd63b6902b451e26d1a74f360bdc1655cb90bc5945d21c04a479cac5b3

String should be formated using | separator in this way:

api_secretsignature_modetimestampamountcurrency_isoorder_idmcc

Callback

Callback purpose: callback is a final response by Genome regarding a transaction status. It is recommended to use HTTPS protocol for the callback URL.

Description of the callback parameters:

ParameterFormat and ruleData typeDescription
eventmandatorystring enumeration (INCOMING_PLEDGE, INCOMING_SUCCESS, PAYOUT_SUCCESS, PAYOUT_DECLINE)Type of callback.
merchant_account_idmandatory everywhere except payoutsuint64Merchant account ID inside Genome.
is_testmandatorybooleanIndicates if a test payment method is used.
sessionconditionalobjectHPP session data. Filled only if the HPP session is present.
  idmandatorystringThe unique session ID.
  statusmandatorystring enumerationSession status.
  created_atmandatoryISO RFC 3339 time format "yyyy-MM-dd'T'HH:mm:ss'Z'"Time when the HPP session was created.
ordermandatoryobjectOrder data.
  idmandatory, if provided by merchantstringOrder_id in HPP integration; transaction_unique_id in Host-2-Host integration.
  user_idmandatory, if provided by merchantstringUser ID.
  descriptionoptionalstringDescription.
  amountmandatoryamount objectAmount data.
    amountmandatorydecimalTransaction amount.
    currencymandatorystring ISO 4217 currency codeTransaction currency.
    payment_method_typemandatorystring enumeration (CC, OPEN_BANKING)Type of payment method.
  idempotency_idoptionalstringUnique payment ID. EndToEndID in the SEPA type bank transfer.
  userdataoptionalobjectCustomer's data.
    first_nameoptionalstringThe first name of the customer.
    last_nameoptionalstringThe last name of the customer.
    emailoptionalstringCustomer’s email.
    phoneoptionalstringCustomer’s phone.
    addressoptionaladdress objectCustomer's address.
      countryoptionalstringCustomer's country.
      stateoptionalstringCustomer's state.
      cityoptionalstringCustomer's city.
      addressoptionalstringCustomer's address line.
      zipoptionalstringCustomer's zip.
    shipping_addressoptionaladdress objectShipping address.
      countryoptionalstringShipping address.
      stateoptionalstringShipping state.
      cityoptionalstringShipping city.
      addressoptionalstringShipping address line.
      zipoptionalstringShipping zip.
  errorconditionalerror objectError data. Filled only if an error is present.
    codemandatorystringError code.
    messagemandatorystringError message.
transactionconditionalobjectTransaction data. Filled only if a transaction is present.
  idmandatoryuint64The unique transaction ID.
  typemandatorystring enumerationTransaction type.
  statusmandatorystring enumerationTransaction status.
  created_atmandatoryISO RFC 3339 time format "yyyy-MM-dd'T'HH:mm:ss'Z'"Time when transaction was created.
  processed_atoptionalISO RFC 3339 time format "yyyy-MM-dd'T'HH:mm:ss'Z'"Time when transaction was processed.
  amountmandatoryamount objectAmount data.
    amountmandatorydecimalTransaction amount.
    currencymandatorystring ISO 4217 currency codeTransaction currency.
  descriptionmandatorystringPayment description.
  idempotency_idoptionalstringUnique payment ID. EndToEndID in SEPA type bank transfer.
  bank_transferconditionalobjectPresent for Bank Transfer payments.
    sender_ibanmandatorystringSender’s IBAN number.
    sender_bicmandatorystringSender bank’s BIC.
    sender_namemandatorystringSender’s name.
  credit_cardconditionalobjectPresent for CC payments.
    card_holdermandatorystringCardholder name.
    card_tokenoptionalstringCard token.
    bill_tokenoptionalstringBill token.
  errorconditionalerror objectError data. Filled only if an error is present.
    codemandatorystringError code.
    messagemandatorystringError message.
customoptionalobjectKey-value pairs, originally sent by the merchant during the HPP session initialization (redirect) or a Host-2-Host request.

Code example JSON:

{
"event" : "INCOMING_SUCCESS",
"merchant_account_id" : 123456,
"is_test" : false,
"session" : {
"id" : "one-two",
"status" : "TODO",
"created_at" : "2025-12-30T11:22:33Z"
},
"order" : {
"id" : "ordero-numero-uno",
"user_id" : "this-is-user-id",
"description" : "This is for testing purposes",
"amount" : {
"amount" : 75.88,
"currency" : "EUR"
},
"payment_method_type" : "OPEN_BANKING",
"idempotency_id" : "aslkdS8ahsdad",
"userdata" : {
"first_name" : "Jon",
"last_name" : "Axelrod",
"email" : "jon.axelrod@example.com",
"phone" : "+123456789",
"address" : {
"country" : "Ukraine",
"city" : "Kyiv",
"address" : "Dripro 1",
"zip" : "11111"
},
"shipping_address" : {
"country" : "Ukraine",
"city" : "Kyiv",
"address" : "Dripro 2",
"zip" : "22222"
}
},
"error" : {
"code" : "43",
"message" : "No error description"
}
},
"transaction" : {
"id" : 9988,
"type" : "SEPA_INSTANT_INCOMING",
"status" : "SUCCESS",
"created_at" : "2025-12-30T11:30:55Z",
"processed_at" : "2025-12-30T11:30:58Z",
"amount" : {
"amount" : 75.88,
"currency" : "EUR"
},
"description" : "Something",
"idempotency_id" : "aslkdS8ahsdad",
"bank_transfer" : {
"sender_iban" : "UAxxxxxx",
"sender_bic" : "UAxx",
"sender_name" : "Jon Axelrod"
},
"credit_card" : {
"card_holder" : "Jon Axelrod",
"card_token" : "xxx",
"bill_token" : "yyy"
},
"error" : {
"code" : "43",
"message" : "No error description"
}
},
"custom" : {
"custom_uno" : "uno",
"custom_dos" : 333332
}
}

Callback headers

ParameterTypeDescription
Content-Typeapplication/json
X-Request-IDstringUnique identifier of request. (On any issue provide this identifier to support.)
X-Signaturehexadecimal stringHMACSHA256 of request body
X-Signature-AlgorithmconstantHmacSHA256
X-API-KeystringYour personal API Key from Genome portal HPP settings.