Tapaya

API pro onboarding obchodníků

Vytvářejte obchodníky a odesílejte jejich onboarding nebo je k onboardingu zvěte přes Tapaya Platform API.

Všechny požadavky na této stránce používají váš Server Secret Token. Viz Autentizace.

Jeden onboarding pro platby v prodejně i online

Obchodník může v jedné žádosti o onboarding požádat o Přijímání plateb v prodejně, online platby nebo o obojí. Tato stránka platí pro každou integraci: Accept SDK, aplikaci Tapaya Terminal i Checkout. Použijte ji k vytváření a správě obchodníků přes API místo Tapaya Platform UI. Požádejte o platební funkce, které obchodník potřebuje. Samotné schválení pro platby v prodejně online platby nepovoluje.

Vytvořením obchodníka pomocí POST /integrator/merchant nebo pomocí POST /merchant/auth/register v integraci Accept SDK se vytvoří jeho účet, ale obchodník nemůže přijímat ostré platby v prodejně ani online, dokud není onboarding dokončen. Pro online platby požádejte o funkci Checkout a počkejte na schválení online zpracovatelem a na nastavení brány. Obchodníci se automaticky zobrazí v nastavení Checkoutu, kde můžete ověřit jejich připravenost a nastavit klíče a peněženky. Tapaya podporuje několik způsobů onboardingu; všechny lze spravovat z Tapaya Platform UI a tam, kde je to vhodné, automatizovat.

PostupKdy jej použítVstupní bod API
Tapaya Platform UIOnboarding za obchodníka dokončí váš provozní tým.Vytvořte nebo vyberte obchodníka v Tapaya Platform UI a otevřete tam hostovaný onboarding.
Vlastní UIÚdaje pro onboarding shromažďujete a ověřujete ve svém produktu.Ověřte jednotlivé části pomocí POST /integrator/merchant/onboarding/validate/* a poté je odešlete pomocí POST /integrator/merchant/onboarding. Podrobnosti níže.
E-mailová pozvánkaZnámý obchodník obdrží jednorázovou pozvánku k samostatnému onboardingu.Pozvánku odešlete pomocí POST /integrator/merchant/send-registration-invite; uveďte merchantToken, chcete-li pozvánku svázat s existujícím základním záznamem obchodníka, a poté ji vypište nebo zrušte přes /integrator/merchant/invites.
Odkaz kampaněVíce obchodníků nebo dosud neznámí obchodníci používají opakovaně použitelný odkaz pro samostatnou registraci.Odkaz vytvořte pomocí POST /integrator/merchant/reusable-registration-invites; odkazy vypíšete nebo zrušíte přes tentýž endpoint.

Podrobné srovnání těchto postupů najdete v průvodci onboardingem obchodníků.

Žádost o funkce online plateb

POST /integrator/merchant/onboarding vyžaduje capability. Stejnou hodnotu funkce použijte při ověřování obchodního profilu:

HodnotaFunkceÚdaje o kanálu
1ObojíUveďte terminal i online. Každý kanál vyžaduje vlastní schválení.
2TerminályUveďte terminal pro platby v prodejně.
3CheckoutUveďte online pro online platby. Terminál není potřeba.

Pro Checkout přidejte vedle identity obchodníka, adresy, sdíleného objektu business a údajů KYB následující pole nejvyšší úrovně. Stejná pole kanálu platí i pro POST /integrator/merchant/onboarding/validate/business:

{
	"capability": 3,
	"online": {
		"mcc": "5411",
		"statementDescriptor": "ACME CORP",
		"productDescription": "Groceries sold online",
		"averageItemValue": 2500,
		"expectedMonthlyTurnover": 500000,
		"url": "https://www.acme.example.com",
		"purchaseChargeTiming": 1,
		"averageDeliveryDays": 2,
		"topCountries": [{ "countryId": 1, "percentage": 100 }]
	}
}

Částky jsou v nejmenších jednotkách měny. Web pro online prodej musí používat HTTP nebo HTTPS a jeho název hostitele musí obsahovat www. statementDescriptor má 5 až 22 znaků. purchaseChargeTiming je 1 pro zadání objednávky, 2 pro odeslání nebo 3 pro doručení. averageDeliveryDays je 0 až 999. Uveďte jednu až čtyři jedinečné topCountries, jejichž procentní podíly dávají v součtu 100.

Sdílené údaje o podpoře a finanční údaje ponechte v business. V režimu oddílů kanálů uveďte MCC, popis na výpisu (statement descriptor), popis produktu a odhady transakcí v příslušném objektu terminal nebo online. Před odesláním onboardingu payload ověřte a opravte vrácené chyby polí specifické pro daný kanál.

Pozvání obchodníka k dokončení hostovaného onboardingu

Tento postup použijte, když má formulář KYB hostovat Tapaya, ale vytváření obchodníků chcete i nadále řídit ze svého backendu.

Doporučeno, pokud merchantToken spravujete vy

Pokud identifikátor obchodníka, který později používá SDK nebo váš back office, spravuje váš systém, nejprve vytvořte základní záznam obchodníka pomocí POST /merchant/auth/register nebo POST /integrator/merchant a poté zavolejte POST /integrator/merchant/send-registration-invite se stejným merchantToken. Hostovaný onboarding tak zůstane připojený k tomuto obchodníkovi a nevytvoří se druhý.

Doporučený postup je:

  1. Vytvořte základní záznam obchodníka:
    • POST /merchant/auth/register, nebo
    • POST /integrator/merchant
  2. Odešlete pozvánku k hostovanému onboardingu pomocí POST /integrator/merchant/send-registration-invite
  3. V případě potřeby sdílejte vrácenou adresu registrationUrl s obchodníkem a nechte jej vyplnit formulář hostovaný společností Tapaya
  4. Připravenost obchodníka zjišťujte dotazováním přes GET /integrator/merchant/{merchantId}/status

Endpoint: POST /integrator/merchant/send-registration-invite

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/send-registration-invite' \
-H 'Content-Type: application/json' \
-H 'Authorization: REPLACE_ME' \
-d '{
        "email": "admin@acme.com",
        "merchantToken": "unique_merchant_id_from_your_db"
    }'

Parametry:

PoleTypPovinnéPopis
emailstring✓E-mailová adresa, na kterou má přijít odkaz na hostovaný onboarding.
merchantTokenstringExistující token obchodníka, se kterým se má pozvánka svázat. Použijte jej, pokud jste již základní záznam obchodníka vytvořili a chcete, aby hostovaný onboarding vyplnil právě tohoto obchodníka. Pokud jej vynecháte, dokončením pozvánky se vytvoří nový obchodník.

Odpovědi:

KódPopis
200Pozvánka vytvořena. Odpověď obsahuje registrationUrl
400Chyba ověření požadavku
401Neautorizováno
404Organizace nebo obchodník nenalezen
409Konflikt

Tělo odpovědi:

{
    "registrationUrl": "https://platform.tapaya.com/invite-merchant?token=...&merchantToken=unique_merchant_id_from_your_db"
}

Tapaya se také pokusí tento odkaz odeslat e-mailem. Doručení e-mailu však není zaručeno, proto vrácenou adresu registrationUrl vždy považujte za rozhodující zdroj pro své UI a nástroje podpory.

Nezaměňujte s pozvánkou uživatele obchodníka

POST /integrator/merchant/{merchantId}/invite je jiný postup. Zve uživatele platformy k přístupu k již existujícímu účtu obchodníka. Nezahajuje onboarding KYB a nevytváří ani neaktualizuje profil obchodníka.

Odeslání onboardingu přes API

Pokud chcete údaje pro onboarding shromažďovat ve vlastním produktu místo přesměrování obchodníků na Tapaya Platform, odešlete je přímo. Každou část ověřujte průběžně, jak ji obchodník vyplňuje, pomocí níže uvedených endpointů validate/* a poté vše odešlete jedním voláním, které vytvoří obchodníka spolu s jeho onboardingovým profilem a zaregistruje jej u preferovaného zpracovatele plateb vaší organizace.

Souhlas obchodníka a informace o ochraně osobních údajů

Před odesláním údajů pro onboarding přes API musíte získat souhlas obchodníka s obchodními podmínkami Tapaya pro integrátory a zásadami ochrany osobních údajů Tapaya. Přidejte do svého onboardingového formuláře zaškrtávací políčko s odkazy na oba dokumenty, nebo na dokumenty Tapaya odkažte z textu podmínek, se kterými obchodník souhlasí. Tapaya musíte také uvést jako zpracovatele osobních údajů ve svých vlastních zásadách ochrany osobních údajů.

Při selhání se obchodník nevytvoří

POST /integrator/merchant/onboarding vytvoří obchodníka a zároveň odešle onboarding jediným voláním. Pokud jsou údaje pro onboarding neplatné, vrátí 422 s chybami na úrovni polí a žádný obchodník se nevytvoří; neexistuje tedy žádný obchodník s rozpracovaným onboardingem, kterého by bylo nutné odstranit nebo u něhož by bylo nutné pokračovat.

Ověření identity

Endpoint: POST /integrator/merchant/onboarding/validate/identity

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/onboarding/validate/identity' \
-H 'Content-Type: application/json' \
-H 'Authorization: REPLACE_ME' \
-d '{
        "legalName": "Acme Corp s.r.o.",
        "businessTypeId": 2,
        "email": "admin@acme.com",
        "registrationNumber": "12345678",
        "vatNumber": "CZ12345678",
        "incorporationDate": "2018-04-01"
    }'

Parametry:

PoleTypPovinnéPopis
legalNamestring✓Oficiální název firmy nebo jméno fyzické osoby, která je držitelem účtu.
businessTypeIdint✓Typ podnikatelského subjektu (BusinessTypeEnum).
emailstring✓Kontaktní e-mailová adresa.
registrationNumberstring✓Oficiální registrační číslo firmy. Kontroluje se na duplicity v rámci vaší
organizace.
vatNumberstringDIČ (registrační číslo pro DPH), pokud existuje.
incorporationDatedateDatum právního vzniku firmy (YYYY-MM-DD).

Tělo odpovědi:

{
    "valid": true,
    "errors": []
}

Hodnota registrationNumber, kterou již používá jiný obchodník ve vaší organizaci, se vrátí jako chyba valid: false s code: "DUPLICATE_REGISTRATION_NUMBER", nikoli jako 409; tento endpoint vždy vrací 200.

Ověření adresy

Endpoint: POST /integrator/merchant/onboarding/validate/address

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/onboarding/validate/address' \
-H 'Content-Type: application/json' \
-H 'Authorization: REPLACE_ME' \
-d '{
        "line1": "Wenceslas Square 1",
        "city": "Prague",
        "postalCode": "11000",
        "countryId": 1
    }'

Parametry:

PoleTypPovinnéPopis
line1string✓První řádek adresy.
line2stringDruhý řádek adresy, je-li potřeba.
citystring✓Název města.
postalCodestring✓PSČ.
statestringSpolkový stát nebo region, je-li potřeba.
countryIdint✓Země (CountryEnum).

Tělo odpovědi: stejný tvar {valid, errors} jako u Ověření identity.

Ověření obchodního profilu

Endpoint: POST /integrator/merchant/onboarding/validate/business

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/onboarding/validate/business' \
-H 'Content-Type: application/json' \
-H 'Authorization: REPLACE_ME' \
-d '{
        "capability": 2,
        "mcc": "5411",
        "url": "https://acme.example.com",
        "supportPhone": "+420123456789",
        "statementDescriptor": "ACME CORP"
    }'

Parametry:

PoleTypPovinnéPopis
capabilityint✓Použijte funkci, kterou odešlete v onboardingu. Pro Checkout nebo Obojí uveďte údaje o kanálu.
mccstring✓Čtyřmístný kód kategorie obchodníka (Merchant Category Code). V režimu oddílů kanálů použijte terminal.mcc nebo online.mcc.
urlstringURL webu firmy. Povinné je buď url, nebo productDescription.
productDescriptionstringPopis produktů nebo služeb. Povinné je buď url, nebo
productDescription.
supportPhonestring✓Telefonní číslo zákaznické podpory ve formátu E.164.
statementDescriptorstring✓Text zobrazený na bankovních výpisech zákazníků (1–22 znaků).
averageItemValuelongPrůměrná hodnota transakce v nejmenších jednotkách měny.
expectedMonthlyTurnoverlongOčekávaný měsíční obrat v nejmenších jednotkách měny.
numberOfEmployeesintPočet zaměstnanců firmy.
annualTurnoverlongRoční obrat v nejmenších jednotkách měny.
balanceSheetTotallongBilanční suma v nejmenších jednotkách měny.

Tělo odpovědi: stejný tvar {valid, errors} jako u Ověření identity.

Ověření KYB

Endpoint: POST /integrator/merchant/onboarding/validate/kyb

Uveďte právě jedno z polí individual (OSVČ / živnostník) nebo company. U company uveďte v people každého vlastníka, ředitele a oprávněnou podepisující osobu.

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/onboarding/validate/kyb' \
-H 'Content-Type: application/json' \
-H 'Authorization: REPLACE_ME' \
-d '{
        "businessTypeId": 2,
        "bankAccount": {
            "iban": "CZ6508000000192000145399",
            "bic": "GIBACZPX",
            "currencyId": 1,
            "beneficiaryName": "Acme Corp s.r.o."
        },
        "company": {
            "name": "Acme Corp s.r.o.",
            "registrationNumber": "12345678",
            "people": [
                {
                    "email": "jane@acme.com",
                    "firstName": "Jane",
                    "lastName": "Doe",
                    "role": {
                        "isOwner": true,
                        "isAuthorizedSignatory": true
                    }
                }
            ]
        }
    }'

Parametry:

PoleTypPovinnéPopis
businessTypeIdintTyp podnikatelského subjektu (BusinessTypeEnum); určuje, zda jsou povinná pole individual, nebo
company.
bankAccountobjectBankovní účet pro výplaty (číslo účtu/IBAN + BIC, měna, příjemce a adresa
banky).
individualobjectÚdaje o vlastníkovi, který je fyzickou osobou, pro OSVČ. Vzájemně se vylučuje s company.
companyobjectÚdaje o společnosti, včetně pole people s vlastníky, řediteli a oprávněnými
podepisujícími osobami a volitelného verificationDocument. Vzájemně se vylučuje s individual.

Každá osoba v people (a individual) nese příznaky role.isOwner / isDirector / isRepresentative / isAuthorizedSignatory a volitelná identifikační pole (dateOfBirth, nationalityCountryId, officialIdType/officialIdNumber, address, ownershipPercentage, verificationDocuments). Záznam osoby musí být buď typu „jen pozvánka“, nebo plně vyplněný; částečně vyplněné záznamy osob jsou odmítnuty. Osobu lze odeslat dvěma způsoby:

  • Jen pozvánka: odešlete jen email a role. Osoba obdrží e-mail s pokyny, jak sama a přímo doplnit své osobní údaje a provést ověření identity, včetně nahrání vlastního dokladu totožnosti; nemusíte za ni shromažďovat nic dalšího a na vaší straně není nutné nahrávat žádný dokument.
  • Plně vyplněná: všechny osobní údaje osoby (jméno, datum narození, úřední doklad, adresu atd.) odešlete sami. V takovém případě musíte za tuto osobu také nahrát doklad totožnosti; pro každou plně vyplněnou osobu je to povinné, nikoli volitelné.

Dokumenty se nahrávají až poté, co obchodník existuje, protože endpoint pro nahrání dokumentu potřebuje merchantId vrácené voláním Vytvoření obchodníka s onboardingem. Nahraný dokument každé osoby se k ní přiřadí podle relatedOfficialIdNumber. Volitelná pole verificationDocuments.identityDocument, verificationDocuments.additionalDocument a company.verificationDocument přijímají objekt {frontFileId, backFileId} a mohou odkazovat jen na již nahrané soubory, proto je při vytváření nového obchodníka vynechte.

Bez ohledu na to, kolik osob je zadaných jen pozvánkou a kolik plně vyplněných, musíte vždy nahrát registrační či zakládací dokument společnosti, než bude možné obchodníka odeslat ke kontrole KYC.

Tělo odpovědi: stejný tvar {valid, errors} jako u Ověření identity.

Vytvoření obchodníka s onboardingem

Odešle vše z předchozích čtyř kroků jedním voláním, vytvoří obchodníka a zaregistruje jej u preferovaného zpracovatele plateb vaší organizace.

Endpoint: POST /integrator/merchant/onboarding

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/onboarding' \
-H 'Content-Type: application/json' \
-H 'Authorization: REPLACE_ME' \
-d '{
        "name": "Acme Corp",
        "capability": 2,
        "merchantToken": "unique_merchant_id_from_your_db",
        "identity": {
            "legalName": "Acme Corp s.r.o.",
            "businessTypeId": 2,
            "email": "admin@acme.com",
            "registrationNumber": "12345678",
            "vatNumber": "CZ12345678"
        },
        "address": {
            "line1": "Wenceslas Square 1",
            "city": "Prague",
            "postalCode": "11000",
            "countryId": 1
        },
        "business": {
            "mcc": "5411",
            "url": "https://acme.example.com",
            "supportPhone": "+420123456789",
            "statementDescriptor": "ACME CORP"
        },
        "kyb": {
            "bankAccount": {
                "iban": "CZ6508000000192000145399",
                "bic": "GIBACZPX",
                "currencyId": 1,
                "beneficiaryName": "Acme Corp s.r.o."
            },
            "company": {
                "people": [
                    {
                        "email": "jane@acme.com",
                        "firstName": "Jane",
                        "lastName": "Doe",
                        "role": {
                            "isOwner": true,
                            "isAuthorizedSignatory": true
                        }
                    }
                ]
            }
        }
    }'

Parametry:

PoleTypPovinnéPopis
capabilityint✓1 pro Obojí, 2 pro Terminály nebo 3 pro Checkout. Viz funkce online plateb.
terminalobjectPodle funkceÚdaje o terminálovém kanálu pro Terminály nebo Obojí.
onlineobjectPodle funkceÚdaje o online kanálu pro Checkout nebo Obojí.
namestring✓Název obchodníka.
merchantTokenstringJedinečný stabilní identifikátor z vašeho systému. Pokud jej neuvedete, vygeneruje se
náhodný token.
identityobject✓Stejný tvar jako u Ověření identity.
addressobject✓Stejný tvar jako u Ověření adresy.
businessobject✓Stejný tvar jako u Ověření obchodního profilu.
kybobject✓Stejný tvar jako u Ověření KYB.

Odpovědi:

KódPopis
201Obchodník vytvořen a onboarding odeslán
422Neplatné údaje pro onboarding, viz errors; obchodník se nevytvoří

Tělo odpovědi (201):

{
    "merchantId": "018f8f2a-3b1e-7c2a-9f1a-2e6a1b7c4d3e",
    "merchantToken": "unique_merchant_id_from_your_db",
    "name": "Acme Corp",
    "email": "admin@acme.com",
    "processors": [
        {
            "processorId": 5,
            "registered": true,
            "onboardingUrl": null
        }
    ]
}

onboardingUrl je vyplněné, když zpracovatel vyžaduje, aby obchodník dokončil další hostovaný onboarding (např. ověření identity), než bude moci přijímat ostré platby.

Tělo odpovědi (422):

{
    "errors": [
        {
            "step": "identity",
            "field": "registrationNumber",
            "message": "A merchant with this registration number is already onboarded under this integrator (merchantId: 018f8f2a-3b1e-7c2a-9f1a-2e6a1b7c4d3e).",
            "code": "DUPLICATE_REGISTRATION_NUMBER"
        }
    ]
}

Nahrání dokladu totožnosti osoby

Povinné pro každou plně vyplněnou osobu v kyb.company.people / kyb.individual (viz Ověření KYB); osoby zadané jen pozvánkou nahrávají svůj doklad samy přes odkaz z e-mailu.

Endpoint: POST /integrator/merchant/{merchantId}/document

Tělo požadavku je multipart/form-data, nikoli JSON.

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/018f8f2a-3b1e-7c2a-9f1a-2e6a1b7c4d3e/document' \
-H 'Authorization: REPLACE_ME' \
-F 'paymentProcessorId=5' \
-F 'documentType=2' \
-F 'relatedOfficialIdNumber=123456789' \
-F 'frontFile=@./jane-doe-id-front.jpg' \
-F 'backFile=@./jane-doe-id-back.jpg'

Parametry:

PoleTypPovinnéPopis
paymentProcessorIdint✓Vždy 5.
documentTypeint✓Typ dokumentu (DocumentTypeEnum: 1 Other, 2 Id, 3 Address, 4 Company,
5 BankStatement, 6 Passport, 7 RecentFinancials).
frontFilefile✓Snímek přední strany dokumentu.
backFilefileSnímek zadní strany dokumentu, pokud ji dokument má.
relatedOfficialIdNumberstringofficialIdNumber osoby z Ověření KYB.
Povinné jen tehdy, když je documentType vázaný na osobu (např. Id, Passport, Address); jinak se ignoruje.
submitMerchantbooleanZde ponechte nenastavené/false: doklad totožnosti osoby není posledním nahraným souborem dávky.
Na true jej nastavte jen při nahrání dokumentu společnosti, jakmile budou nahrány dokumenty všech
osob.

Tělo odpovědi (200):

{
    "frontFileId": "file_1NqtHo2eZvKYlo2CZPg8Xt5h",
    "backFileId": "file_1NqtHp2eZvKYlo2CRTg9Xm3k",
    "uploadedAt": "2026-07-17T12:00:00Z"
}

Nahrání dokumentu společnosti

Povinné právě jednou pro každého obchodníka. Pokud údaje o osobách nebyly vyplněny, oprávněná podepisující osoba bude moci tento dokument nahrát přes odkaz z onboardingového e-mailu a tento endpoint není nutné volat.

Endpoint: POST /integrator/merchant/{merchantId}/document

Tělo požadavku je multipart/form-data, nikoli JSON.

curl -X 'POST' 'https://api.tapaya.com/integrator/merchant/018f8f2a-3b1e-7c2a-9f1a-2e6a1b7c4d3e/document' \
-H 'Authorization: REPLACE_ME' \
-F 'paymentProcessorId=5' \
-F 'documentType=4' \
-F 'frontFile=@./acme-corp-register-extract.pdf' \
-F 'submitMerchant=true'

Parametry:

PoleTypPovinnéPopis
paymentProcessorIdint✓Vždy 5.
documentTypeint✓V tomto kroku vždy 4 (Company).
frontFilefile✓Registrační či zakládací dokument společnosti.
submitMerchantbooleanNastavte na true, aby se po nahrání všech povinných
dokumentů spustila kontrola KYC u zpracovatele. Výchozí hodnota je false.

Tělo odpovědi (200):

{
    "frontFileId": "file_1NqtHo2eZvKYlo2CZPg8Xt5h",
    "backFileId": null,
    "uploadedAt": "2026-07-17T12:00:00Z"
}
Chybí vám něco na této stránce?Navrhněte funkci. Připojíme tuto stránku, aby tým viděl souvislosti.