
PayTech
White label gateway, payment orchestration and financial management technologies. Fully customised to your specifications.
Supports in this guide: Payments | Payouts
Provider website: pay.tech
What you need to do for start processing transactions (brief summary)
- Choose account type
- Get your credentials (from PayTech)
- Connect in Dashboard
- Send an API request
Choose account type
PayTech can be connected in different ways (depending on your needs):
- If you do H2H card payments (card data sent directly, server-to-server) -> choose H2H Merchant account
- If you do redirect payments (Apple Pay, Google Pay, PayID, Open Banking - customer is redirected to a hosted payment page) -> choose Provider account
- If you do payouts (card payouts) -> choose Provider account
If you are not sure which one to use, confirm with your Corefy account manager.
Prerequisites: get from PayTech
Get the following values for your PayTech project/account:
- API Key -> Corefy field
api_key-> example:pk_live_9f2c41ab7d6e4f0b-> used as theBearertoken on every request to PayTech -> where to find: PayTech backoffice / issued by PayTech manager - Signing Key -> Corefy field
signing_key-> example:s3cr3tSign1ngK3y-> the secret PayTech uses to sign callbacks; Corefy validates every incoming callback against it -> where to find: PayTech backoffice / issued by PayTech manager - API URL (optional) -> Corefy field
api_url-> example:https://engine.pay.tech-> overrides the default production endpoint if PayTech issued you a dedicated one; leave it empty to use the default. It is ignored in test mode, where the sandbox endpoint is always used -> where to find: PayTech backoffice / issued by PayTech manager
The same three values are used for both account types, but each account type is connected separately in the Dashboard.
Payments processing (connect H2H Merchant account, create payment-invoice)
Connect H2H Merchant account in Corefy Dashboard
Step 1 - Open connection form
Open PayTech in the provider directory and press Connect at PayTech Provider Overview page in the New connection section. Choose H2H Merchant account.
Step 2 - Fill in fields and select settings
- API Key ->
api_key - Signing Key ->
signing_key - API URL ->
api_url(optional, leave empty to use the default endpoint) - Test Mode -> (enable if you are using sandbox credentials)
Choose Currency and Features. You can set these parameters according to available currencies and features for your PayTech account, but it is necessary to check details of the connection with your Corefy account manager.
Success
You have connected PayTech H2H Merchant account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"service": "payment_card_eur_hpp",
"currency": "EUR",
"amount": 10
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "1f2aa3ca-abd8-4741-980d-4017ed30cb8c",
"service": "payment_card_eur_hpp",
"currency": "EUR",
"amount": 10.04,
"customer": {
"reference_id": "85af8385-d00e-4f58-ab1f-3a527fdf2d3b",
"name": "John Doe",
"email": "johndoe@email.com",
"phone": "+441234567890",
"date_of_birth": "2000-02-02",
"address": {
"full_address": "123 Baker street",
"country": "GB",
"region": "England",
"city": "London",
"post_code": "NW16XE"
},
"metadata": {
"locale": "en"
}
},
"test_mode": false
}
}
}
None of the customer fields are mandatory - every one of them is sent to PayTech only when present, and can be replaced by a Constant (see below). The payer IP address is added by Corefy automatically, you do not pass it in the request.
Extended request (MAX)
Why add extra fields (typical reasons):
- Provide additional customer details for compliance/reconciliation
- Positively influence conversion rate
- Include optional fields required by your specific flow
Options
Options are configured on the Corefy side and affect how Corefy builds provider requests or processes responses.
Currently available options (4):
ignore_callback- stops Corefy from finalising transactions by asynchronous callbacks.finalize_by_protocol- treats a PayTech decline as a final status.save_provider_instant_token- asks PayTech to return a recurring token.send_additional_data- sends extra provider-specific data with the payment request.
ignore_callback
What it does: every incoming PayTech callback is rejected, so the transaction status is never changed by a callback. The transaction is finalised only by a status request (Reconciliation).
When to use: enable it for cascading setups, where an early callback would finalise a transaction prematurely and break the cascade.
Default: "false"
Allowed values: true / false
finalize_by_protocol
What it does: when PayTech returns the DECLINED status, Corefy fails the transaction immediately instead of keeping it pending.
When to use: PayTech does not guarantee that a decline is final - in their system it can later change to success. Enable this option if you accept a decline as final; if you do not, leave it disabled and Corefy will stop failing such payments, but you may see status discrepancies with PayTech.
Default: "false"
Allowed values: true / false
save_provider_instant_token
What it does: adds startRecurring to the sale request, so PayTech returns a recurring token that Corefy saves for later instant payments.
When to use: enable it if you plan to use instant/recurring payments.
Default: "false"
Allowed values: true / false
send_additional_data
What it does: adds an additionalParameters object to the payment request, built from metadata [additional_parameters] of your transaction.
When to use: enable it when PayTech asked you to pass extra provider-specific data along with the payment.
Default: "false"
Allowed values: true / false
Constants (fallback fields)
Constants are static values that Corefy can send to the provider instead of dynamic data from your API request, when those fields are missing in the request.
So, if a field is missing in the API request, Corefy can take the value from the configured Constants.
After the successful connection, fill in constants for necessary routes in editing menu.
Priority (predictable rule):
- If a value is present in the request -> Corefy uses the request value
- Else if the constant is set -> Corefy uses the constant
- Else -> provider may reject the request or apply its defaults (depends on provider)
Currently available constants (constant -> Corefy API field)
FIRST_NAME->customer.name(first part of the name)LAST_NAME->customer.name(last part of the name)EMAIL->customer.emailPHONE->customer.phoneDATE_OF_BIRTH->customer.date_of_birthCITIZENSHIP_COUNTRY_CODE->customer.address.countryFULL_ADDRESS->customer.address.full_addressCITY->customer.address.cityCOUNTRY_CODE->customer.address.countryPOSTAL_CODE->customer.address.post_codeSTATE->customer.address.region
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open PayTech in the provider directory and press Connect at PayTech Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields (provider -> Corefy)
- API Key ->
api_key - Signing Key ->
signing_key - API URL ->
api_url(optional, leave empty to use the default endpoint) - Test Mode -> (enable if you are using sandbox credentials)
Success
You have connected PayTech Provider account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice. The customer is redirected to the PayTech hosted payment page.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"service": "openbanking_eur_hpp",
"currency": "EUR",
"amount": 10
}
}
}
Other services available on the Provider account use exactly the same request shape, only the service and currency values change: applepay_eur_hpp (Apple Pay, EUR), googlepay_eur_hpp (Google Pay, EUR) and pay_id_aud_hpp (PayID, AUD).
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "1f2aa3ca-abd8-4741-980d-4017ed30cb8c",
"service": "openbanking_eur_hpp",
"currency": "EUR",
"amount": 10.04,
"customer": {
"reference_id": "85af8385-d00e-4f58-ab1f-3a527fdf2d3b",
"name": "John Doe",
"email": "johndoe@email.com",
"phone": "+441234567890",
"date_of_birth": "2000-02-02",
"address": {
"full_address": "123 Baker street",
"country": "GB",
"region": "England",
"city": "London",
"post_code": "NW16XE"
},
"metadata": {
"ip": "203.0.113.10",
"locale": "en",
"website_url": "https://example.com"
}
},
"test_mode": false
}
}
}
All customer fields are optional and are sent to PayTech only when present. Three of them come from customer [metadata]: ip is forwarded as the payer IP address, locale sets the language of the hosted payment page, and website_url overrides the shop URL sent to PayTech (by default it is taken from your merchant profile).
Extended request (MAX)
Why add extra fields (typical reasons):
- Provide additional customer details for compliance/reconciliation
- Positively influence conversion rate
- Include optional fields required by your specific flow
Options
Options are configured on the Corefy side and affect how Corefy builds provider requests or processes responses.
Currently available options (1):
finalize_by_protocol- treats a PayTech decline as a final status.
finalize_by_protocol
What it does: when PayTech returns the DECLINED status, Corefy fails the payment immediately instead of keeping it pending.
When to use: PayTech does not guarantee that a decline is final - in their system it can later change to success. Enable this option if you accept a decline as final.
Default: "false"
Allowed values: true / false
Constants (fallback fields)
Constants are static values that Corefy can send to the provider instead of dynamic data from your API request, when those fields are missing in the request.
If a field is missing in the API request, Corefy can take the value from the configured Constants.
Priority (predictable rule):
- If a value is present in the request -> Corefy uses the request value
- Else if the constant is set -> Corefy uses the constant
- Else -> provider may reject the request or apply its defaults (depends on provider)
Currently available constants (constant -> Corefy API field)
FIRST_NAME->customer.name(first part of the name)LAST_NAME->customer.name(last part of the name)EMAIL->customer.emailPHONE->customer.phoneDATE_OF_BIRTH->customer.date_of_birthCITIZENSHIP_COUNTRY_CODE->customer.address.countryFULL_ADDRESS->customer.address.full_addressCITY->customer.address.cityCOUNTRY_CODE->customer.address.countryPOSTAL_CODE->customer.address.post_codeSTATE->customer.address.regionLOCALE->customer.metadata.locale
Note
Constants are available for the applepay_eur_hpp, googlepay_eur_hpp and openbanking_eur_hpp routes. The pay_id_aud_hpp route has no constants - pass the customer data in the request.
Payouts processing (connect Provider account, create payout-invoice)
Connect Provider account in Corefy Dashboard
Payouts use the same Provider account as redirect payments. If you already connected one, no separate connection is required.
Step 1 - Open connection form
Open PayTech in the provider directory and press Connect at PayTech Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields (provider -> Corefy)
- API Key ->
api_key - Signing Key ->
signing_key - API URL ->
api_url(optional, leave empty to use the default endpoint) - Test Mode -> (enable if you are using sandbox credentials)
Success
You have connected PayTech Provider account!
First request to Corefy API (MIN)
What it does: creates a payout-invoice. One payout route is available: service payment_card_eur, method Card payout, currency EUR.
Payout - MIN
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"service": "payment_card_eur",
"currency": "EUR",
"amount": 10,
"fields": {
"card_number": "411111******1111"
},
"context": {
"card": {
"card_holder": "John Doe",
"exp_month": "01",
"exp_year": "27"
}
}
}
}
}
The destination card number goes to fields, and the cardholder name and expiry date to context [card]. fields [card_number] is mandatory; without context [card] the cardholder name and expiry date are sent to PayTech empty, and the payout is declined.
Payout - MAX
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "3b1c9d52-0f41-47a0-9a1e-6c2f8b5d7e10",
"service": "payment_card_eur",
"currency": "EUR",
"amount": 10,
"fields": {
"card_number": "411111******1111"
},
"context": {
"card": {
"card_holder": "John Doe",
"exp_month": "01",
"exp_year": "27"
}
},
"customer": {
"reference_id": "85af8385-d00e-4f58-ab1f-3a527fdf2d3b",
"name": "John Doe",
"email": "johndoe@email.com",
"phone": "+441234567890",
"date_of_birth": "2000-02-02",
"address": {
"full_address": "123 Baker street",
"country": "GB",
"region": "England",
"city": "London",
"post_code": "NW16XE"
},
"metadata": {
"ip": "203.0.113.10",
"locale": "en"
}
},
"test_mode": false
}
}
}
customer [metadata] [ip] is forwarded to PayTech as the payer IP address. PayTech asks for it to be sent on card payouts, so include it whenever you have it.
Extended request (MAX)
Why add extra fields (typical reasons):
- Provide additional customer details for compliance/reconciliation
- Positively influence conversion rate
- Include optional fields required by your specific flow
Constants (fallback fields)
Constants are static values that Corefy can send to the provider instead of dynamic data from your API request, when those fields are missing in the request.
If a field is missing in the API request, Corefy can take the value from the configured Constants.
Priority (predictable rule):
- If a value is present in the request -> Corefy uses the request value
- Else if the constant is set -> Corefy uses the constant
- Else -> provider may reject the request or apply its defaults (depends on provider)
Currently available constants (constant -> Corefy API field)
FIRST_NAME->customer.name(first part of the name)LAST_NAME->customer.name(last part of the name)EMAIL->customer.emailPHONE->customer.phoneDATE_OF_BIRTH->customer.date_of_birthCITIZENSHIP_COUNTRY_CODE->customer.address.countryFULL_ADDRESS->customer.address.full_addressCITY->customer.address.cityCOUNTRY_CODE->customer.address.countryPOSTAL_CODE->customer.address.post_codeSTATE->customer.address.region
Note
There are no provider options for the payout flow.
Additional info
-
Callback routing is handled automatically - Corefy generates the callback URL and sends it to PayTech with every request, so nothing has to be set up in the PayTech backoffice.
-
Every incoming callback is validated against the
Signatureheader, which PayTech calculates from the raw request body using your Signing Key. A wrong or rotated Signing Key makes all callbacks fail validation. -
Transaction and payout statuses are additionally pulled from PayTech by reconciliation, so an operation is finalised even if a callback is not delivered.
-
The H2H Merchant account supports refunds, including partial and multiple refunds of the same transaction.
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify the API Key issued for the selected environment; in test mode Corefy always calls the PayTech sandbox, and the
api_urlvalue is ignored - Callback signature errors -> check that the Signing Key in Corefy matches the one issued by PayTech, and that the key was not rotated on the PayTech side
- Currency or service is not supported -> confirm allowed currencies and features in your PayTech account and in Corefy
- Missing customer data fields -> set constants (see "Constants") or provide the fields in the API request
- Payout declined right after creation -> check that
fields [card_number]andcontext [card]are both present and that the card is eligible for payouts - Not sure which account type to use? -> ask your Corefy account manager
Question
Still looking for help connecting your PayTech account? Please contact our support team!