Tazapay’s Checkout On Behalf Of (OBO) capability allows platforms, marketplaces, and financial institutions to collect payments on behalf of their entities: sellers, businesses, or individuals registered under your merchant account.
OBO is supported across both Tazapay payment acceptance products:
- Checkout — a hosted payment link that produces a
checkout object
- Payin — whitelabelled payment methods embedded in your own UI that produce a
payin object
In both cases, passing on_behalf_of ensures funds are correctly attributed and traceable to the intended recipient.
Use Cases
- Marketplace Platform — A marketplace creates checkout sessions on behalf of individual sellers, ensuring payments are correctly attributed to each seller’s entity.
- Payment Aggregator — A licensed payment aggregator processes payments on behalf of multiple merchants under a single parent account.
- Bill Payment Platform — A bill payment aggregator collects payments on behalf of utility companies, telecom providers, or other service entities.
- Digital Wallet Recharge — A financial institution allows users to recharge prepaid wallets or accounts belonging to third-party entities.
How It Works
- Create and submit an entity — Register the seller, business, or individual under your merchant account and submit them for review.
- Wait for approval — The entity must reach
submitted status (or approved, if mandatory approval is enabled on your account) before it can be used in OBO sessions.
- Create a Checkout or Payin — Pass the approved entity ID in the
on_behalf_of field.
- Customer completes payment — Tazapay creates a
checkout or payin object attributed to the entity.
- Handle webhooks — Listen for
checkout.paid or payin.succeeded to confirm payment.
- Manage settlements / Create Payouts — Settled funds are received in aggregate to your account. You can either receive them as a bulk settlement to your bank account, or use the balance to fund onward payouts via Tazapay. See Settlement for details.
Step 1: Create an Entity
An entity represents the business or individual on whose behalf you’re collecting payment — a seller, agent, or service provider registered under your platform’s merchant account.
Tazapay supports two entity types:
- Business Entity — for registered companies and legal entities
- Individual Entity — for sellers, agents, freelancers, or sole proprietors
Before an entity can be used in an OBO session, it must be in approved status.
Think of entities as the sub-accounts sitting under your platform. Every payment you collect on their behalf is fully attributed and traceable back to them.
Relevant Links
- Business Entity Requirements — Full Onboarding
- Individual Entity Requirements — Full Onboarding
- Entity Requirements — Simplified Onboarding
- Create Entity API
- Submit Entity API
Step 2: Create a Checkout or Payin
Once you have an approved entity, include its ID in the on_behalf_of field when creating a Checkout or Payin. This is the only step needed to attribute the payment to the correct entity.
Request
POST /v3/checkout
{
"invoice_currency": "USD",
"amount": 100000,
"on_behalf_of": "ent_d3inm6ami8u10oqfm",
"customer_details": {
"name": "Andrea Lark",
"country": "SG",
"email": "andrea@example.com",
"phone": {
"calling_code": "65",
"number": "87654321"
}
},
"success_url": "https://mystore.com/success_page",
"cancel_url": "https://mystore.com/try_again",
"webhook_url": "https://mystore.com/internal/webhook",
"transaction_description": "Payment to seller",
"reference_id": "mystore_order_00001"
}
Key fields
| Field | Type | Required | Description |
|---|
on_behalf_of | string | Optional* | ID of the entity on whose behalf the checkout is created. Must be an entity belonging to your merchant account. Format: ent_* |
*Required if your account has the Mandatory OBO information for checkout configuration enabled.
Response
The response includes the hosted checkout url and echoes back on_behalf_of:
{
"id": "chk_cirsp2sl4ar024j0akj0",
"object": "checkout",
"on_behalf_of": "ent_d3inm6ami8u10oqfm",
"url": "https://checkout.tazapay.com/transaction=...",
"payment_status": "pending",
"status": "active",
...
}
Relevant Links
Step 3: Handle the Resulting Payin
When the customer completes payment on the hosted checkout page, Tazapay creates a linked Payin. The Payin automatically inherits the on_behalf_of value from the checkout session — no additional steps are required.
You can retrieve the Payin using the payin field in the Checkout response or via the Get Checkout API.
Step 4: Handle Checkout & Payin Events / Webhooks
Tazapay sends webhooks for all checkout and payin status changes. When OBO is used, all webhook payloads include on_behalf_of in the data object.
Example: checkout.paid webhook (OBO)
{
"type": "checkout.paid",
"created_at": 958793503,
"data": {
"id": "chk_ahfafooi7ibakbfahoan",
"object": "checkout",
"payin": "pay_bfiuafuiafianifnao",
"payment_status": "paid",
"on_behalf_of": "ent_d3inm6ami8u10oqfm",
...
},
"id": "evt_auigfianfoangohuehg",
"object": "event"
}
Best Practices
- Always verify webhook signatures
- Rely on webhooks (not polling) for final payment outcomes
- Store the
on_behalf_of value from webhook payloads for reconciliation
Relevant Links
- Checkout Webhook Events
- Payin Webhook Events
- Checkout States
- Payin States
Account Configurations
Two merchant-level configurations control Checkout OBO behaviour. These are set by Tazapay on your account:
| Configuration | Description |
|---|
| Mandatory OBO information for checkout | When enabled, all checkout creation requests must include on_behalf_of. Requests without it will be rejected with on_behalf_of_required. |
| Mandatory entity approval for checkout | When enabled, the entity specified in on_behalf_of must have approval_status: approved. Submitted but unapproved entities will be rejected with entity_not_approved. |
Contact your Tazapay account manager to enable these configurations.
Error Reference
| Error Code | HTTP Status | Message |
|---|
on_behalf_of_required | 400 | on_behalf_of field is required for this merchant account |
entity_not_approved | 400 | The entity must be approved before creating a checkout on their behalf |
entity_rejected | 400 | Checkout cannot be created for a rejected entity |
entity_id_mismatch | 400 | The entity does not belong to the authenticated merchant account |