Operations 2
Documentation
Specifications
OpenAPI
https://artifacts.apis.io/fave/openapi/fave-payments-api-openapi.yml
AsyncAPI
https://artifacts.apis.io/fave/asyncapi/fave-favepay-omni-asyncapi.yml
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/fave:fave-payments-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: FavePay Omni (FPO) Payments API
version: v1
description: FavePay Omni is Fave's partner payment API for accepting payments online or in-store.
contact:
name: Fave Partner Support
url: https://developers.myfave.com/
x-apievangelist:
generated: '2026-07-19'
method: generated
source: https://developers.myfave.com/fpo-guide.html
note: Faithfully generated from Fave's published partner documentation (FavePay Omni guide). No provider-published OpenAPI was found; this captures the documented endpoints, fields, auth and webhooks verbatim.
servers:
- url: https://omni.myfave.com
description: Production
- url: https://omni.dino.fave.ninja
description: Sandbox (test)
security:
- hmacSignature: []
tags:
- name: Payments
description: Create charges via QR code or merchant scan.
paths:
/api/fpo/v1/{country_code}/qr_codes:
post:
operationId: createQrCode
tags:
- Payments
summary: Create a single-use QR code or payment URL
description: Creates a single-use QR code or payment URL the customer scans/opens to pay. Returns the payment payload in the requested format.
parameters:
- $ref: '#/components/parameters/CountryCode'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateQrCodeRequest'
responses:
'200':
description: QR code / payment payload created.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateQrCodeResponse'
'400':
$ref: '#/components/responses/ValidationError'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/InternalError'
/api/fpo/v1/{country_code}/merchant_scan:
post:
operationId: merchantScan
tags:
- Payments
summary: Process a customer-presented QR / barcode (merchant scan)
description: Charges a customer by processing the QR or barcode payload the merchant scanned from the customer's Fave app.
parameters:
- $ref: '#/components/parameters/CountryCode'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantScanRequest'
responses:
'200':
description: Charge processed.
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
'400':
$ref: '#/components/responses/ValidationError'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/InternalError'
components:
responses:
UnprocessableEntity:
description: Unsupported format or provider rejection.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Unknown app_id, missing transaction, or empty transaction history.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InternalError:
description: Server failure (internal_error / unexpected_error).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ValidationError:
description: Invalid parameters (validation) or refund outside window (stale_transaction).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Invalid signature or outlet not linked to the integration.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
MerchantScanRequest:
type: object
required:
- omni_reference
- total_amount_cents
- app_id
- outlet_id
- code
- sign
properties:
omni_reference:
type: string
maxLength: 28
total_amount_cents:
type: integer
app_id:
type: string
outlet_id:
type: integer
code:
type: string
description: Customer QR or barcode payload.
callback_url:
type: string
details:
type: object
description: Arbitrary JSON metadata (excluded from signature).
sign:
type: string
CreateQrCodeRequest:
type: object
required:
- omni_reference
- total_amount_cents
- app_id
- outlet_id
- sign
properties:
omni_reference:
type: string
maxLength: 28
description: Partner reference, format "[prefix]-[id]".
total_amount_cents:
type: integer
description: Positive amount in cents. SG max 1999900.
app_id:
type: string
outlet_id:
type: integer
format:
type: string
default: base64
enum:
- txt
- base64
- web_url
- grab
- paynow
- alipay
- wcp
- shopeepay
- atome
redirect_url:
type: string
description: Customer return URL for web_url format.
callback_url:
type: string
description: Per-payment webhook override.
payment_option:
type: string
default: both
enum:
- both
- app
- pwa
expiry_time:
type: integer
description: Unix timestamp when the code expires.
shopper_details:
type: object
properties:
email:
type: string
phone:
type: string
location:
type: string
test:
type: boolean
description: Enable test payments when supported.
sign:
type: string
CreateQrCodeResponse:
type: object
properties:
code:
type: string
description: Payment URL or QR payload.
format:
type: string
expires_in:
type: integer
description: Seconds until expiry.
Transaction:
type: object
properties:
id:
type: string
receipt_id:
type: string
outlet_name:
type: string
total_amount_cents:
type: integer
payment_type:
type: string
payment_type_variant:
type: string
currency:
type: string
outlet_id:
type: integer
mid:
type: string
omni_reference:
type: string
status:
type: string
enum:
- pending_payment
- payment_processing
- successful
- disputed
- rejected
- refunded
status_code:
type: integer
description: 0 pending_payment, 1 payment_processing, 2 successful, 3 disputed, 4 rejected, 5 refunded.
created_at:
type: string
charged_amount_cents:
type: integer
campaign_credit_amount_cents:
type: integer
campaign_funded_by:
type: string
aabig_points_used_amount_cents:
type: integer
merchant_cashback_amount_cents:
type: integer
fave_credits_amount_cents:
type: integer
promo_code_value_cents:
type: integer
e_card_credits_used_cents:
type: integer
cashback_rate:
type: number
merchant_cashback_issued_cents:
type: integer
promo_code:
type: string
promo_code_cashback_value:
type: number
promo_code_cashback_type:
type: string
promo_code_cashback_issued_cents:
type: integer
promo_code_cashback_funded_by:
type: string
fave_fees_percentage:
type: number
fave_fees_cents:
type: integer
sst_on_total_fees_cents:
type: integer
merchant_takeback_cents:
type: integer
refund_amount_cents:
type: integer
user_id:
type: string
fpl_transaction:
type: boolean
fpl_fees_percentage:
type: number
fpl_fees_cents:
type: integer
fpl_merchant_cashback_reduction_percentage:
type: number
sign:
type: string
description: Present on webhook callback payloads for verification.
Error:
type: object
properties:
error:
type: string
description: Machine-readable error code (e.g. validation, stale_transaction, resource_not_found, provider, internal_error, unexpected_error, failed_request, already_refunded).
message:
type: string
parameters:
CountryCode:
name: country_code
in: path
required: true
description: Market the request targets.
schema:
type: string
enum:
- MY
- SG
- ID
securitySchemes:
hmacSignature:
type: apiKey
in: query
name: sign
description: HMAC-SHA256 signature computed over the URL-encoded request fields in submission order (excluding sign and country_code, and excluding outlet_id on list, id on acknowledge, and details on merchant scan), keyed by the secret Fave issued for the integration. On POST requests the signature is passed as the sign field in the request body.