
Payok
Seamless Payments. Settled Instantly
Supports in this guide: Payments, Payouts
Provider website: payok.com
What you need to do for start processing transactions (brief summary)
- Choose account type
- Get your credentials (from Payok)
- Connect in Dashboard
- Send an API request
Choose account type
Payok has a single account type that covers both directions:
- Provider account -> used for both payments and payouts across its local methods in Indonesia, Vietnam, Thailand, Turkey, India, Colombia, and Brazil
If you're not sure whether Payok fits your use case, confirm with your Corefy account manager.
Prerequisites: get from Payok
Submit a connection request at payok.com or contact your Payok account manager directly to get your account verified and receive the following credentials.
- Merchant ID -> Corefy field
merchant_id. - Public Key (optional, file upload) -> Corefy field
public_key. - Private Key (file upload) -> Corefy field
private_key-> used to sign every request.
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open Payok in the provider directory and press Connect at Payok Provider Overview page in the New connection section.
Step 2 - Fill in fields and select settings
- Merchant ID
- Public Key (optional)
- Private Key
- Currency -> choose from
IDR,VND,THB,TRY,INR,COP,BRL - Test Mode -> (enable if you are using sandbox credentials)
Success
You have connected Payok Provider account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice and returns a redirect link to the chosen local method's payment page.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "8e3dbbb0-17af-4c9a-bedb-93bdac6900a2",
"service": "ovo_idr_hpp",
"currency": "IDR",
"amount": 10000
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "6795502c-e27d-4d07-85e0-93245aab9a3f",
"service": "ovo_idr_hpp",
"currency": "IDR",
"amount": 10000,
"customer": {
"reference_id": "cus_123",
"name": "John Doe",
"email": "johndoe@gmail.com",
"phone": "+6281234567890",
"address": {
"country": "ID",
"city": "Jakarta",
"full_address": "1 Main street",
"post_code": "12345"
}
}
}
}
}
customer is optional - anything you omit falls back to the Constants below. For bank-transfer/virtual-account style methods specifically, you may also need fields.account/fields.bank_code (or fields.document_number for some) - ask your account manager which fields apply to your chosen method. This connector covers a very wide range of local methods across 7 countries - see Additional info for the full breakdown.
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 (2)
use_english_language- controls which language is sent to Payok for the checkout page.finalize_after_minutes- automatically fails a payment that's still pending after the given number of minutes. (Available only on a specific subset of services - see Additional info.)
use_english_language
What it does: No sends the checkout page language based on the transaction's currency; Yes always sends English regardless of currency.
When to use: enable it if you want an English checkout page for every customer regardless of the currency used.
Default: not set (language follows currency)
Allowed values: true / false
finalize_after_minutes
What it does: if the payment is still pending after this many minutes, Corefy marks it as failed instead of leaving it open indefinitely.
When to use: set it if you want a predictable cutoff for stale pending payments rather than waiting on Payok's own expiry.
Default: not set (payment stays pending until Payok itself reports a final status)
Allowed values: any whole number of minutes
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. Available on every Payment service.
Priority (predictable rule): 1. If a value is present in the request -> Corefy uses the request value 2. Else if the constant is set -> Corefy uses the constant 3. Else -> provider may reject the request or apply its defaults (depends on provider)
Currently available constants (constant -> Corefy API field)
FULL_NAME->customer.nameEMAIL->customer.emailPHONE->customer.phoneDEVICE_ID-> no direct request field - falls back tocustomer.reference_idif this constant isn't set either.
Payouts processing (connect Provider account, create payout-invoice)
Connect Provider account in Corefy Dashboard
Uses the same Provider account connection as Payments above - one connection covers both directions, there's nothing extra to fill in for payouts specifically.
First request to Corefy API (MIN)
What it does: creates a payout-invoice and sends funds to a bank account or local wallet.
Payout - MIN (UPI, India)
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "0dde9e79-2c64-4703-adaf-93d710633401",
"service": "upi_inr",
"currency": "INR",
"amount": 100,
"customer": {
"reference_id": "cus_123"
},
"fields": {
"account_number": "110147429820",
"beneficiary_full_name": "John Doe",
"ifsc_bank_code": "CNRB0004425"
}
}
}
}
This request only succeeds if the Constants below are configured for this service (customer.email/customer.phone aren't sent in this example, so Payok needs them from the Constants instead).
Payout - MAX (UPI, India)
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "7976b4ce-fadd-4585-baa0-6b02c65351dc",
"service": "upi_inr",
"currency": "INR",
"amount": 100,
"customer": {
"reference_id": "cus_123",
"name": "John Doe",
"email": "johndoe@gmail.com",
"phone": "+919876543210"
},
"fields": {
"account_number": "110147429820",
"beneficiary_full_name": "John Doe",
"ifsc_bank_code": "CNRB0004425"
}
}
}
}
This connector covers a very wide range of local payout methods across 7 countries - most need some combination of fields.account_number/bank_account_number, fields.beneficiary_full_name (or beneficiary_first_name/beneficiary_last_name), and a local identifier (fields.ifsc/ifsc_bank_code for India, fields.cpf_number/identity_id/document_type for others) - ask your account manager for the exact field list for your chosen method.
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 (2)
use_english_language- same behavior as on the Payments flow, applied to payout-side correspondence.ignore_callback- tells Corefy to disregard Payok's own callback notifications entirely.
ignore_callback
What it does: when enabled, Corefy ignores callback notifications sent by Payok for this connection, relying on status checks/reconciliation instead.
When to use: enable only if instructed by Payok or your Corefy account manager.
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. Available on every Payout service.
Priority (predictable rule): 1. If a value is present in the request -> Corefy uses the request value 2. Else if the constant is set -> Corefy uses the constant 3. Else -> provider may reject the request or apply its defaults (depends on provider)
Currently available constants (constant -> Corefy API field)
EMAIL->customer.emailPHONE->customer.phone
Additional info
- Callback routing is automatic - Corefy generates the callback URL per transaction, nothing to configure in Payok's own back-office.
-
Local payment methods available on the Payments (Provider account) flow (actual availability depends on what's enabled for your account) - Payok covers over 40 service codes across:
Country Currency Examples Indonesia IDR OVO, DANA, ShopeePay, LinkAja, QRIS, Alfamart, several bank virtual accounts (BCA, BNI, BRI, Mandiri, Permata, BSI, BNC, CIMB) Vietnam VND MoMo, ViettelPay, ZaloPay, several bank transfers/QR codes (Techcombank, ACB, Vietinbank, BIDV, VPBank, TPBank, VIB, PVcomBank) Thailand THB PromptPay, TrueMoney, bank transfer Turkey TRY Papara, bank transfer India INR UPI Colombia COP PSE, Nequi, Efecty Brazil BRL PIX (redirect and requisites/ _invoicevariants) -
Local payout methods follow the same country/currency coverage as Payments, with roughly 74 service codes total (Colombia and Indonesia have the most bank-specific routes).
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify credentials for the selected environment
- Payout fails with missing details -> confirm the Constants (
EMAIL/PHONE) are configured for the service, or sendcustomer.email/customer.phonedirectly, along with the method-specificfields.* - Currency or service is not supported -> confirm allowed currencies/features in your Payok account and in Corefy
Question
Still looking for help connecting your Payok account? Please contact our support team!