Download OpenAPI specification:Download
Open Fabric APIs, v1
Our APIs use an authentication scheme based on OAuth 2.0. See Authentication for more details.
| grant_type required | string Value: "client_credentials" |
| scope | string Space-separated API scopes for the token. See API Access Scopes for the list of available scopes. If not provided, the access token will be generated with all scopes. |
grant_type=client_credentials&scope=txn.c%20txn.r
{- "access_token": "eyJz9sdfsdfsdfsd",
- "id_token": "dmcxd329ujdmkemkd349r",
- "token_type": "Bearer",
- "expires_in": 3600
}API used to provision new accounts. See Provision account for more details.
This API can be used to provision a new account or virtual card.
See Own App Tokens, Digital Wallet Tokens or Virtual Cards for more details.
| Idempotency-Key | string Unique value submitted by the partner to ensure idempotent request during provisioning. |
| type | string (PbaProvisionType) Enum: "nfc_device_token" "static_token" "push_provision" |
| payment_network | string (PbaPaymentNetwork) Enum: "mastercard" "visa" The payment network of the transaction |
| tenant_customer_ref required | string Customer identifier in your system |
| tenant_account_ref required | string <= 64 characters Account identifier of the customer in your system |
| tenant_token_ref | string Token identifier in your system. Required if Idempotency-Key is not set. If set, this will be passed to card network as the issuer token identifier. If not set, the Idempotency-Key will be used instead. |
| wallet_id | string Secure device wallet identifier. Required for Own App Tokens. Can be obtained by reading |
| device_name | string Name of the device |
| tenant_account_device_ref | string <= 32 characters Device identifier in your system |
| billing_currency | string = 3 characters ^[A-Z]*$ Billing currency (ISO 4217 currency code). If not passed, the default billing currency will be used. |
object (Address) | |
| instrument | string (PbaProvisionInstrument) Enum: "manual_card_entry" "google_pay" "samsung_pay"
|
| card_name | string Name of the card |
| card_program_id | string <uuid> Card Program ID. If not provided, the tenant's default card program will be used. |
{- "type": "static_token",
- "tenant_customer_ref": "customer-00000000000001",
- "tenant_account_ref": "FR00000000000001",
- "tenant_token_ref": "TOK000000000000001",
- "instrument": "manual_card_entry"
}{- "tenant_account_ref": "FR00000000000001",
- "tenant_customer_ref": "customer-00000000000001",
- "of_customer_id": "40095c2f-d391-4e06-94d9-cf0b3191c548",
- "of_account_id": "5bafb9bc-9573-4acf-b686-04bf62c81af8",
- "customer_id": "40095c2f-d391-4e06-94d9-cf0b3191c548",
- "account_id": "5bafb9bc-9573-4acf-b686-04bf62c81af8",
- "static_token_id": "180106f9-8177-42fa-99bf-23ae8d785636",
- "instrument": "manual_card_entry",
- "status": "active",
- "locked": false,
- "created_at": "2026-03-10T10:27:58.253Z",
- "updated_at": "2026-03-10T10:27:58.253Z"
}This API can be used to provision an account for an existing card.
See Own App Tokens - Tokenize an existing card for more details.
| digital_wallet required | string (DigitalWallet) Enum: "issuer" "google_pay" "apple_pay" "samsung_pay" Digital wallet provider. Use |
| tenant_customer_ref required | string Customer identifier in your system |
| issuer_card_id required | string Issuer card identifier retrieved from your CMS |
| wallet_id required | string Secure device wallet identifier |
| issuer_authentication_data | string Issuer authentication value to be used in the tokenization request with the token service provider (TSP). The authentication value is specific to the token service provider (TSP), and it should be PGP-encrypted with Open Fabric’s shared public key, Base64-encoded when sending to Open Fabric |
| encrypted_card_data required | string Card data JSON encrypted with Open Fabric’s shared public key, Base64-encoded |
object (Address) |
{- "digital_wallet": "issuer",
- "tenant_customer_ref": "customer-00000000000001",
- "issuer_card_id": "507e8c90-3cfc-44ee-b701-0630067eb44fa5e9351a-0a6",
- "wallet_id": "507e8c90-3cfc-44ee-b701-0630067eb44fa5e9351a-0a6",
- "encrypted_card_data": "eyJ4NWMiOlsiTUlJQzNqQ0NBY2FnQXdJQkFnSUpBT1FDdnc2..."
}{- "wallet_id": "507e8c90-3cfc-44ee-b701-0630067eb44fa5e9351a-0a6",
- "provisioning_data": {
- "opc": "eyJ4NWMiOlsiTUlJQzNqQ0NBY2FnQXdJQkFnSUpBT1FDdnc2..."
}
}APIs used to manage the lifecycle of secure device wallets. See Lifecycle management for more details.
You can use this API to lock a secure device wallet. This will temporarily block payments and other functionalities of the wallet.
| id required | string <uuid> Secure device wallet identifier |
| reason_code required | string (PbaLockWalletReasonCode) Enum: "device_stolen" "device_lost" "suspected_fraud" "other" |
| reason required | string Reason for changing the status |
{- "reason_code": "suspected_fraud",
- "reason": "Requested by fraud team"
}{- "wallet_id": "6d6a9511-c4d3-4bc0-8d02-a054e8a5559112d56356-efa",
- "status": "suspended",
- "status_timestamp": "2026-03-17T12:00:00.000Z",
- "suspended_by": [
- "TOKEN_REQUESTOR"
]
}You can use this API to unlock a secure device wallet.
| id required | string <uuid> Secure device wallet identifier |
| reason_code required | string (PbaUnlockWalletReasonCode) Enum: "device_found" "not_fraud" "other" |
| reason required | string Reason for changing the status |
{- "reason_code": "not_fraud",
- "reason": "Customer has been verified by fraud team"
}{- "wallet_id": "6d6a9511-c4d3-4bc0-8d02-a054e8a5559112d56356-efa",
- "status": "active",
- "status_timestamp": "2026-03-17T12:00:00.000Z",
- "suspended_by": [ ]
}You can use this API to delete a secure device wallet.
Warning A secure device wallet deletion cannot be undone.
| id required | string <uuid> Secure device wallet identifier |
| reason_code required | string (PbaLockWalletReasonCode) Enum: "device_stolen" "device_lost" "suspected_fraud" "other" |
| reason required | string Reason for changing the status |
{- "reason_code": "device_stolen",
- "reason": "Requested by fraud team"
}{- "wallet_id": "6d6a9511-c4d3-4bc0-8d02-a054e8a5559112d56356-efa",
- "status": "deactivated",
- "status_timestamp": "2026-03-17T12:00:00.000Z",
- "suspended_by": [ ]
}APIs used to retrieve sensitive virtual card details. See Display card details for more details.
This API can be used to get a card fetch token for a specific virtual card.
| static_token_id required | string <uuid> Open Fabric's static token id for the card. |
| account_id required | string Account identifier in Open Fabric.
Must match the |
| card_encryption_key | string The public key (PEM format) to be used when encrypting the card detail. When this field is not specified, no encryption will be performed to secure the card detail. |
| card_encryption_algo | string (CardEncryptionAlgo) Enum: "rsa_oaep" "ecc_ecies" The algorithm to be used when encrypting the card detail.
If specified, you must send the value of the public key file (PEM format) in the |
{- "static_token_id": "c2319421-f0e8-4dd6-a099-124c5a3c6592",
- "account_id": "436605a1-271d-49a7-80f0-bcaf095cdd6a",
- "card_encryption_key": "-----BEGIN PUBLIC KEY-----\nMII…\n-----END PUBLIC KEY-----",
- "card_encryption_algo": "rsa_oaep"
}{- "card_fetch_token": "eyJhbGciOiJIUzI1...adQssw5c"
}This API can be used to retrieve sensitive details of a virtual card.
Warning Please be aware that your system might be subject to a higher level of PCI DSS certification if you use this API.
| card_fetch_token required | string The card fetch token obtained using the Get card fetch token request |
| fetch_cvv | boolean Default: true It will be used to return cvv in response or not. By default its true |
{- "card_fetch_token": "YTZkYmJkYWItMWI3ZC00MzNhLTkzOWEtZjYzYzkwMjJmODMz"
}{- "provider": "mastercard",
- "card_reference_id": "dpan_9ku2ouUwBCHW3pYSevRE72XD5kYGSQfMKuhBjWLkqAue_2Eu6hV4BwMfng",
- "card_number": "5281724086788282",
- "redacted_number": "XXXXXXXXXXXX8282",
- "cvv": "111",
- "expiry_month": "12",
- "expiry_year": "25",
- "message": ""
}APIs used to display virtual card details securely. See Display virtual cards for more details.
Generates a short-lived widget URL for displaying card details (PAN, expiry, CVV) in an iframe or webview. The widget URL is time-limited and single-use.
| static_token_id | string Either |
| card_fetch_token | string Either |
| card_art_asset_id | string <uuid> Identifier of a pre-uploaded card art asset. Obtained from the asset upload API. Mutually exclusive with |
| card_art_base64 | string <= 204800 characters Base64 encoded card art image. Max 150KB decoded. Recommended dimensions: 340x214px (or 1.586:1 aspect ratio). Mutually exclusive with |
| card_art_content_type | string (CardArtContentType) Enum: "image/png" "image/jpeg" "image/webp" MIME type of the card art image |
| text_color | string^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ Hex color code for text displayed on the card widget (e.g., "#FFFFFF" for white). Optional, defaults to black if not provided. |
{- "card_fetch_token": "eyJhbGciOiJIUzI1...",
- "card_art_asset_id": "7f3a2b1c-9d4e-5f6a-8b7c-0d1e2f3a4b5c"
}{- "expired_at": "2019-08-24T14:15:22Z"
}Uploads a card art image for reuse across multiple widget sessions. Returns an asset_id that can be referenced in the widget creation API.
| card_art_base64 required | string <= 204800 characters Base64 encoded card art image. Max 150KB decoded. Recommended dimensions: 340x214px (or 1.586:1 aspect ratio). |
| card_art_content_type required | string (CardArtContentType) Enum: "image/png" "image/jpeg" "image/webp" MIME type of the card art image |
| card_art_asset_name | string Optional human-readable label for the asset (e.g., "Premium Black", "Student Card"). |
{- "card_art_base64": "iVBORw0KGgoAAAANSUhEUgAAAVQAAADW...",
- "card_art_content_type": "image/png",
- "card_art_asset_name": "Premium Black"
}{- "card_art_asset_id": "f202723b-2873-4618-a10b-6cec3b9c52f7",
- "card_art_asset_name": "Premium Black",
- "card_art_content_type": "image/png",
- "size_bytes": 6988,
- "created_at": "2026-03-16T09:23:48.684Z"
}{- "data": [
- {
- "card_art_asset_id": "f202723b-2873-4618-a10b-6cec3b9c52f7",
- "card_art_asset_name": "Premium Black",
- "card_art_content_type": "image/png",
- "size_bytes": 6988,
- "created_at": "2026-03-16T09:23:48.684Z"
}
]
}Deletes a previously uploaded card art asset. Existing widget sessions that already resolved this asset are unaffected.
| asset_id required | string <uuid> Identifier of card art asset. |
{- "error_code": "string",
- "message": "string",
- "details": [
- {
- "error_code": "string",
- "message": "string",
- "param": "string"
}
]
}APIs used to manage virtual cards. See Manage virtual cards for more details.
This API can be used to list all virtual cards belonging to a customer.
| tenant_customer_ref | string Filter by tenant customer ref |
| tenant_account_ref | string Filter by tenant account ref |
| instrument | string (RoutingDataInitializingInstrument) Enum: "web_checkout" "unilateral_checkout" "one_click_checkout" "recurring" "tenant_recurring" "pba_static_token" "qrph" "sgqr" "vietqr" "tap_and_pay" "manual_card_entry" "google_pay" "samsung_pay" Filter by instrument |
| status | string (StaticTokenStatus) Enum: "active" "inactive" "deactivated" Filter by status |
| locked | boolean Filter by lock status |
{- "data": [
- {
- "id": "4fbc4775-466c-4d21-bb8c-95f3ef9ffbea",
- "tenant_account_ref": "FR00000000000001",
- "tenant_customer_ref": "customer-00000000000001",
- "tenant_token_ref": "TOK000000000000001",
- "tsp_token_ref": "DWSPMC000000000132d72d4fcb2f4136a0532d3093ff1a45",
- "account_id": "c6045eed-b5cb-48f0-8321-b924a8e8f808",
- "customer_id": "5b3aae19-16b5-4aca-81b5-5d72a168c496",
- "dpan_redacted_number": "512*********9708",
- "dpan_expiry": {
- "month": 11,
- "year": 25
}, - "instrument": "manual_card_entry",
- "status": "active",
- "locked": false,
- "created_at": "2026-03-16T07:39:09.317Z",
- "updated_at": "2026-03-16T07:39:09.317Z"
}
]
}This API can be used to get details of a specific virtual card.
| id required | string Static token identifier in Open Fabric representing a Virtual Card |
{- "id": "4fbc4775-466c-4d21-bb8c-95f3ef9ffbea",
- "tenant_account_ref": "FR00000000000001",
- "tenant_customer_ref": "customer-00000000000001",
- "tenant_token_ref": "TOK000000000000001",
- "tsp_token_ref": "DWSPMC000000000132d72d4fcb2f4136a0532d3093ff1a45",
- "account_id": "c6045eed-b5cb-48f0-8321-b924a8e8f808",
- "customer_id": "5b3aae19-16b5-4aca-81b5-5d72a168c496",
- "dpan_redacted_number": "512*********9708",
- "dpan_expiry": {
- "month": 11,
- "year": 25
}, - "instrument": "manual_card_entry",
- "status": "active",
- "locked": false,
- "created_at": "2026-03-16T07:39:09.317Z",
- "updated_at": "2026-03-16T07:39:09.317Z"
}This API can be used to lock or unlock a specific virtual card.
| id required | string Static token identifier in Open Fabric representing a Virtual Card |
| lock_status required | string (StaticTokenLockStatus) Enum: "locked" "unlocked" |
{- "lock_status": "locked"
}{- "id": "4fbc4775-466c-4d21-bb8c-95f3ef9ffbea",
- "tenant_account_ref": "FR00000000000001",
- "tenant_customer_ref": "customer-00000000000001",
- "tenant_token_ref": "TOK000000000000001",
- "tsp_token_ref": "DWSPMC000000000132d72d4fcb2f4136a0532d3093ff1a45",
- "account_id": "c6045eed-b5cb-48f0-8321-b924a8e8f808",
- "customer_id": "5b3aae19-16b5-4aca-81b5-5d72a168c496",
- "dpan_redacted_number": "512*********9708",
- "dpan_expiry": {
- "month": 11,
- "year": 25
}, - "instrument": "manual_card_entry",
- "status": "active",
- "locked": true,
- "created_at": "2026-03-16T07:39:09.317Z",
- "updated_at": "2026-03-16T07:39:09.317Z"
}This API can be used to deactivate a specific virtual card.
Warning This action is permanent (cannot be undone) and requires the virtual card to be locked first before deleting.
| id required | string Static token identifier in Open Fabric representing a Virtual Card |
| reason_text | string |
| reason_code | string (PbaCustomerDpanSuspendReasonCode) Enum: "device_lost" "device_stolen" "suspected_fraud" "other" |
{- "reason_text": "Customer reported device is lost",
- "reason_code": "device_lost"
}{- "id": "4fbc4775-466c-4d21-bb8c-95f3ef9ffbea",
- "tenant_account_ref": "FR00000000000001",
- "tenant_customer_ref": "customer-00000000000001",
- "tenant_token_ref": "TOK000000000000001",
- "tsp_token_ref": "DWSPMC000000000132d72d4fcb2f4136a0532d3093ff1a45",
- "account_id": "c6045eed-b5cb-48f0-8321-b924a8e8f808",
- "customer_id": "5b3aae19-16b5-4aca-81b5-5d72a168c496",
- "dpan_redacted_number": "512*********9708",
- "dpan_expiry": {
- "month": 11,
- "year": 25
}, - "instrument": "manual_card_entry",
- "status": "deactivated",
- "locked": true,
- "created_at": "2026-03-16T07:39:09.317Z",
- "updated_at": "2026-03-16T07:39:09.317Z"
}Notifications sent to your backend when tokens change state within a secure device wallet or when a tokenized transaction authorization occurs within the wallet.
See Token update notifications for more details.
This notification is sent when an account or card was successfully tokenized and activated in the secure device wallet.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:wallet:token:activated" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (WalletTokenActivatedEventNotificationPayload) Base schema for wallet token status change notifications data |
{- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "v1:wallet:token:activated",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "token_unique_reference": "string",
- "wallet_id": "string",
- "token_source": "financial_account",
- "activated_at": "2019-08-24T14:15:22Z"
}
}This notification is sent when the tokenized account or card is suspended in the secure device wallet.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:wallet:token:suspended" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (WalletTokenSuspendedEventNotificationPayload) Base schema for wallet token status change notifications data |
{- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "v1:wallet:token:suspended",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "token_unique_reference": "string",
- "wallet_id": "string",
- "token_source": "financial_account",
- "reason_code": "string",
- "reason": "string",
- "suspended_at": "2019-08-24T14:15:22Z"
}
}This notification is sent when the tokenized account or card is deleted from the secure device wallet.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:wallet:token:deleted" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (WalletTokenDeletedEventNotificationPayload) Base schema for wallet token status change notifications data |
{- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "v1:wallet:token:deleted",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "token_unique_reference": "string",
- "wallet_id": "string",
- "token_source": "financial_account",
- "reason_code": "string",
- "reason": "string",
- "deleted_at": "2019-08-24T14:15:22Z"
}
}This notification is sent when a transaction is authorized within the secure device wallet.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:wallet:transaction:authorization" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (PbaWalletTransactionAuthorizedNotification) v1:wallet:transaction:authorization |
{- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "v1:wallet:transaction:authorization",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "id": "string",
- "tenant_id": "string",
- "wallet_id": "string",
- "token_unique_reference": "string",
- "tsp_transaction_ref": "string",
- "amount": 0,
- "currency": "string",
- "authorization_status": "authorized",
- "transaction_type": "purchase",
- "merchant_name": "string",
- "merchant_category_code": "string",
- "merchant_outlet_address": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}APIs related to authorization messages. These are messages sent from our platform to your backend.
See Authorization message for more details.
Ledger operations that Open Fabric calls on your backend to apply balance changes (debit/credit/hold/release).
See Ledger APIs for more details.
debit_balance: Deduct funds from a customer’s balance for settlement.
| transaction_id required | string Unique identifier for the transaction |
| tenant_account_ref required | string Identifier of the tenant account |
| idempotency_key required | string Unique identifier to prevent duplicate operations |
object (BalanceAmount) Amount object used in balance operations | |
| of_action_ref required | string OpenFabric reference identifier for the operation |
| tenant_balance_ref | string Reference of the exact balance to be debited (used in refund reversal) |
| network_message_timestamp | string <date-time> Original timestamp from the card network message |
{- "transaction_id": "string",
- "tenant_account_ref": "string",
- "idempotency_key": "string",
- "amount": {
- "value": 0,
- "currency": "str"
}, - "of_action_ref": "string",
- "tenant_balance_ref": "string",
- "network_message_timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "tenant_balance_ref": "string",
- "available_balance": {
- "value": 0,
- "currency": "str"
}, - "tenant_action_ref": "string",
- "error": {
- "code": "string",
- "message": "string"
}
}credit_balance: Add funds to a customer’s balance (for refunds or adjustments).
| transaction_id required | string Unique identifier for the transaction |
| tenant_account_ref required | string Identifier of the tenant account |
| idempotency_key required | string Unique identifier to prevent duplicate operations |
object (BalanceAmount) Amount object used in balance operations | |
| of_action_ref required | string OpenFabric reference identifier for the operation |
| tenant_balance_ref | string Reference of the exact balance to be credited (used in auth reversal) |
| network_message_timestamp | string <date-time> Original timestamp from the card network message |
{- "transaction_id": "string",
- "tenant_account_ref": "string",
- "idempotency_key": "string",
- "amount": {
- "value": 0,
- "currency": "str"
}, - "of_action_ref": "string",
- "tenant_balance_ref": "string",
- "network_message_timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "tenant_balance_ref": "string",
- "available_balance": {
- "value": 0,
- "currency": "str"
}, - "tenant_action_ref": "string",
- "error": {
- "code": "string",
- "message": "string"
}
}hold_balance: Place a hold on funds in a customer’s balance (pre-authorization).
| transaction_id required | string Unique identifier for the transaction |
| tenant_account_ref required | string Identifier of the tenant account |
| idempotency_key required | string Unique identifier to prevent duplicate operations |
object (BalanceAmount) Amount object used in balance operations | |
| of_action_ref required | string OpenFabric reference identifier for the operation |
| tenant_hold_balance_ref | string Reference of the hold funds balance to be increased (used in pre-auth incremental) |
| network_message_timestamp | string <date-time> Original timestamp from the card network message |
{- "transaction_id": "string",
- "tenant_account_ref": "string",
- "idempotency_key": "string",
- "amount": {
- "value": 0,
- "currency": "str"
}, - "of_action_ref": "string",
- "tenant_hold_balance_ref": "string",
- "network_message_timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "tenant_hold_balance_ref": "string",
- "available_balance": {
- "value": 0,
- "currency": "str"
}, - "tenant_action_ref": "string",
- "error": {
- "code": "string",
- "message": "string"
}
}restore_balance: Release previously held funds back to available balance.
| transaction_id required | string Unique identifier for the transaction |
| tenant_account_ref required | string Identifier of the tenant account |
| idempotency_key required | string Unique identifier to prevent duplicate operations |
object (BalanceAmount) Amount object used in balance operations | |
| of_action_ref required | string OpenFabric reference identifier for the operation |
| tenant_hold_balance_ref required | string Reference of the hold funds balance to be released (required) |
| network_message_timestamp | string <date-time> Original timestamp from the card network message |
{- "transaction_id": "string",
- "tenant_account_ref": "string",
- "idempotency_key": "string",
- "amount": {
- "value": 0,
- "currency": "str"
}, - "of_action_ref": "string",
- "tenant_hold_balance_ref": "string",
- "network_message_timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "tenant_balance_ref": "string",
- "available_balance": {
- "value": 0,
- "currency": "str"
}, - "tenant_action_ref": "string",
- "error": {
- "code": "string",
- "message": "string"
}
}debit_hold_balance: Deduct an amount from previously held funds (created with hold_balance).
| transaction_id required | string Unique identifier for the transaction |
| tenant_account_ref required | string Identifier of the tenant account |
| idempotency_key required | string Unique identifier to prevent duplicate operations |
object (BalanceAmount) Amount object used in balance operations | |
| of_action_ref required | string OpenFabric reference identifier for the operation |
| tenant_hold_balance_ref required | string Reference of the hold funds balance to be debited (required) |
| network_message_timestamp | string <date-time> Original timestamp from the card network message |
{- "transaction_id": "string",
- "tenant_account_ref": "string",
- "idempotency_key": "string",
- "amount": {
- "value": 0,
- "currency": "str"
}, - "of_action_ref": "string",
- "tenant_hold_balance_ref": "string",
- "network_message_timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "tenant_hold_balance_ref": "string",
- "hold_balance": {
- "value": 0,
- "currency": "str"
}, - "tenant_action_ref": "string",
- "error": {
- "code": "string",
- "message": "string"
}
}credit_hold_balance: Add an amount to previously held funds (created with hold_balance).
| transaction_id required | string Unique identifier for the transaction |
| tenant_account_ref required | string Identifier of the tenant account |
| idempotency_key required | string Unique identifier to prevent duplicate operations |
object (BalanceAmount) Amount object used in balance operations | |
| of_action_ref required | string OpenFabric reference identifier for the operation |
| tenant_hold_balance_ref required | string Reference of the hold funds balance to be credited (required) |
| network_message_timestamp | string <date-time> Original timestamp from the card network message |
{- "transaction_id": "string",
- "tenant_account_ref": "string",
- "idempotency_key": "string",
- "amount": {
- "value": 0,
- "currency": "str"
}, - "of_action_ref": "string",
- "tenant_hold_balance_ref": "string",
- "network_message_timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "tenant_hold_balance_ref": "string",
- "hold_balance": {
- "value": 0,
- "currency": "str"
}, - "tenant_action_ref": "string",
- "error": {
- "code": "string",
- "message": "string"
}
}Notifications related to reversals. These are messages sent from our platform to your backend.
See Reversal notifications for more details.
Notification sent when a previously approved final authorization is reversed.
See Reversal notifications for more details.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:pba:transaction:final_auth_reversed" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (FinalAuthReversalNotification) v1:pba:transaction:final_auth_reversed |
{- "notification_id": "b16a7072-3deb-46d3-aad0-5b95da03e8e4",
- "type": "v1:pba:transaction:final_auth_reversed",
- "created_at": "2026-03-21T00:23:27Z",
- "data": {
- "notification_id": "b16a7072-3deb-46d3-aad0-5b95da03e8e4",
- "transaction_id": "830cde24-7c70-461b-a3e4-1d6ad2aa34dc",
- "tenant_reference_id": "99c0b3cd-ea78-45f0-8b76-8aa2e91f12ab",
- "network_transaction_ref": "MCC8855210320",
- "network_message_ref": "906990",
- "amount": 20,
- "currency": "USD",
- "billing_amount": 20,
- "billing_currency_code": "USD",
- "billing_exchange_rate": 1,
- "settlement_amount": 20,
- "settlement_currency_code": "USD",
- "settlement_exchange_rate": 1,
- "network_merchant_country_code": "US"
}
}Notification sent when a previously approved pre-authorization is reversed.
See Reversal notifications for more details.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:pba:transaction:pre_auth_reversed" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (PreAuthReversalNotification) v1:pba:transaction:pre_auth_reversed |
{- "notification_id": "b16a7072-3deb-46d3-aad0-5b95da03e8e4",
- "type": "v1:pba:transaction:pre_auth_reversed",
- "created_at": "2026-03-21T00:23:27Z",
- "data": {
- "notification_id": "b16a7072-3deb-46d3-aad0-5b95da03e8e4",
- "transaction_id": "830cde24-7c70-461b-a3e4-1d6ad2aa34dc",
- "tenant_reference_id": "99c0b3cd-ea78-45f0-8b76-8aa2e91f12ab",
- "network_transaction_ref": "MCC8855210320",
- "network_message_ref": "906990",
- "amount": 20,
- "currency": "USD",
- "billing_amount": 20,
- "billing_currency_code": "USD",
- "billing_exchange_rate": 1,
- "settlement_amount": 20,
- "settlement_currency_code": "USD",
- "settlement_exchange_rate": 1,
- "network_merchant_country_code": "US"
}
}APIs and messages used to complete 3D Secure challenges during payment processing.
See Handle 3D Secure Payments for more details.
This notification is sent to your backend when a 3D Secure challenge requires an out-of-band (OOB) challenge to be completed.
See 3DS Out of Band (OOB) challenge flow for more details.
| three_ds_challenge_id required | string 3DS Request ID in Open Fabric |
| tenant_customer_ref required | string Customer identifier in your system |
| customer_id required | string Customer identifier in Open Fabric |
| tenant_account_ref required | string Account identifier in your system |
| account_id required | string Account identifier in Open Fabric |
| static_token_id required | string Static token identifier in Open Fabric representing a Virtual Card |
| merchant_name required | string Name of the merchant |
| transaction_amount | number Amount of the transaction. If not present or 0, it is a non-payment 3DS authentication. |
| transaction_currency | string Currency code for the transaction (e.g., USD, EUR). Not present for non-payment 3DS authentications. |
| creation_time required | string <date-time> Creation time of the 3DS request in ISO 8601 format |
{- "three_ds_challenge_id": "string",
- "tenant_customer_ref": "string",
- "customer_id": "string",
- "tenant_account_ref": "string",
- "account_id": "string",
- "static_token_id": "string",
- "merchant_name": "string",
- "transaction_amount": 0,
- "transaction_currency": "string",
- "creation_time": "2019-08-24T14:15:22Z"
}This API is used for you to update our system with the 3DS challenge response in case of the Out of Band (OOB) challenge flow.
See 3DS Out of Band (OOB) challenge flow for more details.
| three_ds_challenge_id required | string 3DS Request ID in Open Fabric |
| static_token_id required | string Static token identifier in Open Fabric representing a Virtual Card |
| tenant_customer_ref required | string Customer identifier in your system |
| tenant_account_ref required | string Account identifier in your system |
| challenge_result required | string (TenantThreeDsActionResult) Enum: "approved" "declined" Result of the 3DS challenge |
| reason | string Required if |
| creation_time required | string <date-time> Creation time of the 3DS response in ISO 8601 format |
{- "three_ds_challenge_id": "string",
- "static_token_id": "string",
- "tenant_customer_ref": "string",
- "tenant_account_ref": "string",
- "challenge_result": "approved",
- "reason": "string",
- "creation_time": "2019-08-24T14:15:22Z"
}{- "error_code": "string",
- "message": "string",
- "details": [
- {
- "error_code": "string",
- "message": "string",
- "param": "string"
}
]
}This notification is sent to your backend when a 3D Secure challenge requires an OTP to be sent to the cardholder.
See 3DS OTP flow for more details.
| three_ds_challenge_id required | string 3DS Request ID in Open Fabric |
| tenant_customer_ref required | string Customer identifier in your system |
| customer_id required | string Customer identifier in Open Fabric |
| tenant_account_ref required | string Account identifier in your system |
| account_id required | string Account identifier in Open Fabric |
| static_token_id required | string Static token identifier in Open Fabric representing a Virtual Card |
| merchant_name required | string Name of the merchant |
| transaction_amount | number Amount of the transaction. If not present or 0, it is a non-payment 3DS authentication. |
| transaction_currency | string Currency code for the transaction (e.g., USD, EUR). Not present for non-payment 3DS authentications. |
| creation_time required | string <date-time> Creation time of the 3DS request in ISO 8601 format |
| authentication_credential | string The OTP sent to the customer |
| encrypted_authentication_credential | string A JWE-encrypted string containing the OTP sent to the customer. When pre-configured between yourself and Open Fabric, the OTP is delivered in encrypted form using an encryption key exchanged offline during onboarding. |
{- "three_ds_challenge_id": "string",
- "tenant_customer_ref": "string",
- "customer_id": "string",
- "tenant_account_ref": "string",
- "account_id": "string",
- "static_token_id": "string",
- "merchant_name": "string",
- "transaction_amount": 0,
- "transaction_currency": "string",
- "creation_time": "2019-08-24T14:15:22Z",
- "authentication_credential": "string",
- "encrypted_authentication_credential": "string"
}{- "three_ds_challenge_id": "string",
- "masked_email": "string",
- "masked_phone_number": "string"
}Messages related to clearing. These are messages sent from our platform to your backend via notifications and reporting.
See Clearing operations for more details.
| network_clearing_ref required | string A unique identifier for this clearing instruction received from the network |
| type required | string (PbaClearingType) Enum: "final_auth" "final_auth_reversal" "final_auth_partial" "final_auth_partial_reversal" "pre_auth_partial" "pre_auth_partial_reversal" "pre_auth_final" "pre_auth_final_reversal" "final_auth_expiry" "pre_auth_expiry" "refund" "refund_reversal" "refund_expiry" "chargeback_challenge" "chargeback_challenge_reversal" "chargeback" "chargeback_reversal" "fee_collection_credit" "fee_collection_credit_reversal" "fee_collection_debit" "fee_collection_debit_reversal" "unlinked_auth_partial" "unlinked_auth_final" "unlinked_auth_partial_reversal" "unlinked_auth_final_reversal" "unlinked_refund" "unlinked_refund_reversal" "unlinked_chargeback" The type of clearing instruction |
| transfer_type required | string (PbaTransferType) Enum: "consumer_debit" "consumer_credit" "ahi_debit" "ahi_credit" The direction of transfer deferred from
Examples:
|
| is_potential_chargeback required | boolean Indicator received from the network signaling that this clearing instruction may result in a chargeback (e.g. total clearing amount exceeds the original authorized amount). You should follow the instruction to clear the amount and may decide to initiate a chargeback for the additional amount at your discretion. |
| original_transaction_id | string The transaction identifier of the original authorization in Open Fabric. Not present for all unlinked types and fee_collection. For Refund and Chargeback, this refers to the original final authorization or pre-authorization transaction that this refund is linked to. |
| transaction_id | string Transaction identifier of this clearing instruction itself. Only populated when using the Ledger APIs. |
| network_transaction_ref | string Transaction Reference received from the network |
| network_acquirer_transaction_ref | string Acquirer Transaction Reference received from the network |
| original_tenant_transaction_ref | string The original transaction identifier of the original authorization in your system. Not present for all unlinked types and fee_collection. For Refund and Chargeback, this refers to the original final authorization or pre-authorization transaction that this refund is linked to. |
| customer_id | string Customer identifier in Open Fabric |
| tenant_account_ref | string Account identifier in your system |
| tenant_customer_ref | string Customer identifier in your system |
| network_merchant_name required | string Merchant name received from the network |
| network_merchant_outlet_address required | string Merchant outlet address received from the network |
| network_merchant_id required | string Merchant ID received from the network |
| amount required | number Transaction amount in major units |
| currency required | string Transaction currency code (ISO 4217) |
| billing_amount required | number Billing amount in major units |
| billing_currency_code required | string Billing currency code (ISO 4217) |
| billing_exchange_rate required | number Exchange rate when calculating billing amount |
| settlement_amount required | number Settlement amount in major units |
| settlement_currency_code required | string Settlement currency code (ISO 4217) |
| settlement_exchange_rate required | number Exchange rate when calculating settlement amount |
| interchange_fee_amount required | number Interchange fee amount in major units |
| interchange_fee_currency_code required | string Interchange fee currency code (ISO 4217) |
| network_clearing_file_ref required | string Reference ID for the clearing file (EOC report) received from the network |
| network_clearing_file_name required | string Name of the clearing file (EOC report) received from the network |
| network_clearing_timestamp required | string Timestamp of the clearing file (EOC report) received from the network |
| transaction_source required | string (PbaTransactionSource) Enum: "ecommerce" "terminal" "unsupported_dfle" "unsupported_tagc" "unsupported_brcd" "unsupported_mgst" "unsupported_unkw" "unsupported_mail" "unsupported_tlph" "unsupported_tvpy" "unsupported_mobl" The source of the transaction:
|
| network_posting_file_id required | string The network identifier of the file used for posting to the cardholder’s account in which the transaction appeared. For Mastercard, it is the identifier of the GCMS file. |
| network_merchant_category_code | string Merchant category code received from the network |
| network_acquirer_id required | string Merchant acquirer ID received from the network |
| network_merchant_country_code | string Country Code - ISO 3166 Alpha-2 |
| is_converted_pre_auth required | boolean True indicates this is a final authorization converted from a pre-authorization |
| network_merchant_terminal_id | string Merchant terminal ID received from the network |
| network_merchant_city | string Merchant city received from the network |
| card_program_id | string ID of the card program in which the transaction occurred |
| financial_account_id | string Card program prefix + tenant account reference used in the transaction |
{- "network_clearing_ref": "string",
- "type": "final_auth",
- "transfer_type": "consumer_debit",
- "is_potential_chargeback": true,
- "original_transaction_id": "string",
- "transaction_id": "string",
- "network_transaction_ref": "string",
- "network_acquirer_transaction_ref": "string",
- "original_tenant_transaction_ref": "string",
- "customer_id": "string",
- "tenant_account_ref": "string",
- "tenant_customer_ref": "string",
- "network_merchant_name": "string",
- "network_merchant_outlet_address": "string",
- "network_merchant_id": "string",
- "amount": 0,
- "currency": "string",
- "billing_amount": 0,
- "billing_currency_code": "string",
- "billing_exchange_rate": 0,
- "settlement_amount": 0,
- "settlement_currency_code": "string",
- "settlement_exchange_rate": 0,
- "interchange_fee_amount": 0,
- "interchange_fee_currency_code": "string",
- "network_clearing_file_ref": "string",
- "network_clearing_file_name": "string",
- "network_clearing_timestamp": "string",
- "transaction_source": "ecommerce",
- "network_posting_file_id": "string",
- "network_merchant_category_code": "string",
- "network_acquirer_id": "string",
- "network_merchant_country_code": "string",
- "is_converted_pre_auth": true,
- "network_merchant_terminal_id": "string",
- "network_merchant_city": "string",
- "card_program_id": "string",
- "financial_account_id": "string"
}Notification sent when a clearing file is ready to be processed.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:pba:eoc:clearing_file_ready" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (EOCFileProcessedNotification) v1:pba:eoc:clearing_file_ready |
{- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "v1:pba:eoc:clearing_file_ready",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "file_name": "string",
- "file_ref": "string",
- "file_checksum": "string",
- "network_file_id": "string",
- "network_timestamp": "2019-08-24T14:15:22Z",
- "number_of_instructions": 0
}
}Messages related to settlement. These are messages sent from our platform to your backend via notifications and reporting.
See Settlement for more details.
required | object (ReconciliationAndNetSettlementSummary) |
required | Array of objects (SettlementRecordDetail) |
{- "reconciliationAndNetSettlementSummary": {
- "network_settlement_file_ref": "string",
- "network_settlement_file_name": "string",
- "network_reconciliation_date": "string",
- "network_reconciliation_timestamp": "string",
- "interbank_settlement_date": "string",
- "transfer_currency_code": "string",
- "transfer_amount": 0,
- "transfer_type": "consumer_debit",
- "transfer_payment_message_ref": "string",
- "transfer_end_to_end_ref": "string",
- "transfer_requested_exec_date": "string",
- "settlement_currency_code": "string",
- "total_net_recon_amount": 0,
- "total_credit_txn_amount": 0,
- "total_credit_number_of_txn": 0,
- "total_credit_chargeback_amount": 0,
- "total_credit_number_of_chargeback": 0,
- "total_credit_reversal_amount": 0,
- "total_credit_number_of_reversal": 0,
- "total_credit_interchange_fee_amount": 0,
- "total_debit_txn_amount": 0,
- "total_debit_number_of_txn": 0,
- "total_debit_chargeback_amount": 0,
- "total_debit_number_of_chargeback": 0,
- "total_debit_reversal_amount": 0,
- "total_debit_number_of_reversal": 0,
- "total_debit_interchange_fee_amount": 0,
- "total_number_of_auth": 0,
- "total_number_of_auth_reversal": 0,
- "network_settlement_timestamp": "string"
}, - "settlementRecordDetails": [
- {
- "network_settlement_ref": "string",
- "type": "final_auth",
- "transfer_type": "consumer_debit",
- "is_potential_chargeback": true,
- "network_settlement_file_ref": "string",
- "network_settlement_file_name": "string",
- "original_transaction_id": "string",
- "transaction_id": "string",
- "network_transaction_ref": "string",
- "network_acquirer_transaction_ref": "string",
- "original_tenant_transaction_ref": "string",
- "customer_id": "string",
- "tenant_customer_ref": "string",
- "tenant_account_ref": "string",
- "network_merchant_name": "string",
- "network_merchant_outlet_address": "string",
- "network_merchant_id": "string",
- "amount": 0,
- "currency": "string",
- "billing_amount": 0,
- "billing_currency_code": "string",
- "billing_exchange_rate": 0,
- "settlement_amount": 0,
- "settlement_currency_code": "string",
- "settlement_exchange_rate": 0,
- "interchange_fee_amount": 0,
- "interchange_fee_currency_code": "string",
- "network_settlement_timestamp": "string",
- "transaction_source": "ecommerce",
- "network_posting_file_id": "string",
- "network_merchant_category_code": "string",
- "network_acquirer_id": "string",
- "network_merchant_country_code": "string",
- "is_converted_pre_auth": true,
- "network_merchant_terminal_id": "string",
- "network_merchant_city": "string",
- "card_program_id": "string",
- "financial_account_id": "string"
}
]
}Notification sent when a settlement file is ready to be processed.
| notification_id required | string <uuid> The unique identifier for the notification |
| type required | string Value: "v1:pba:eos:net_settlement_file_ready" |
| created_at required | string <date-time> The creation timestamp of the notification in ISO 8601 format |
required | object (EOSNetSettlementNotification) v1:pba:eos:net_settlement_file_ready |
{- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "v1:pba:eos:net_settlement_file_ready",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "file_name": "string",
- "file_ref": "string",
- "file_checksum": "string",
- "network_file_id": "string",
- "network_timestamp": "2019-08-24T14:15:22Z",
- "reconciliation_date": "string",
- "interbank_settlement_date": "string",
- "settlement_currency_code": "string",
- "total_net_recon_amount": 0,
- "total_credit_txn_amount": 0,
- "total_credit_number_of_txn": 0,
- "total_credit_chargeback_amount": 0,
- "total_credit_number_of_chargeback": 0,
- "total_credit_reversal_amount": 0,
- "total_credit_number_of_reversal": 0,
- "total_credit_interchange_fee_amount": 0,
- "total_debit_txn_amount": 0,
- "total_debit_number_of_txn": 0,
- "total_debit_chargeback_amount": 0,
- "total_debit_number_of_chargeback": 0,
- "total_debit_reversal_amount": 0,
- "total_debit_number_of_reversal": 0,
- "total_debit_interchange_fee_amount": 0,
- "total_number_of_auth": 0,
- "total_number_of_auth_reversal": 0
}
}APIs to create and manage spend control rulesets.
See Manage Rulesets for implementation guidance.
Creates a new ruleset with optional embedded rules. Rule names are auto-generated using pattern {template_code}_{counter}.
| name required | string^[a-zA-Z0-9_-]+$ Ruleset name (alphanumeric with dash/underscore) |
| description | string Ruleset description |
| is_active | boolean Default: true Active status |
| is_default | boolean Default: false Set as tenant default ruleset |
| effective_from | string <date-time> Start date for effectiveness |
| effective_to | string <date-time> End date for effectiveness |
Array of objects (CreateRuleRequest) List of rules to create |
{- "name": "standard-account-limits",
- "description": "Default spending limits",
- "is_active": true,
- "is_default": true,
- "effective_from": "2026-03-17T03:45:40.745Z",
- "effective_to": "2026-03-17T03:45:40.745Z",
- "rules": [
- {
- "template_code": "currency_control",
- "description": "Only allow USD transactions",
- "parameters": {
- "allowed_currencies": [
- "USD"
]
}, - "violation_policy": "decline"
}, - {
- "template_code": "transaction_amount_limit",
- "description": "Limit each transaction to 250 USD",
- "parameters": {
- "limit_amount": 250,
- "currency": "USD"
}, - "violation_policy": "decline"
}
]
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
- "name": "string",
- "description": "string",
- "is_active": true,
- "is_default": true,
- "effective_from": "2019-08-24T14:15:22Z",
- "effective_to": "2019-08-24T14:15:22Z",
- "rules": [
- {
- "name": "string",
- "template_code": "account_billing_amount_limit",
- "description": "string",
- "parameters": { },
- "conditions": { },
- "violation_policy": "decline",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Lists all rulesets for the tenant with pagination support.
| is_active | boolean Filter by active status |
| page | integer Default: 1 Page number |
| limit | integer <= 100 Default: 20 Results per page |
{- "data": [
- {
- "id": "019cfa07-6b83-7950-b126-7e94f4477dff",
- "name": "standard-account-limits",
- "description": "Default spending limits",
- "is_active": true,
- "is_default": true,
- "rules_count": 4,
- "created_at": "2026-03-17T03:45:40.745Z",
- "updated_at": "2026-03-17T03:45:40.745Z"
}, - {
- "id": "019cfa3f-424b-764c-8476-36132e57f603",
- "name": "premium-users",
- "description": "Premium users spending limits",
- "is_active": true,
- "is_default": false,
- "rules_count": 2,
- "created_at": "2026-03-17T03:45:40.745Z",
- "updated_at": "2026-03-17T03:45:40.745Z"
}
], - "pagination": {
- "total": 2,
- "page": 1,
- "limit": 20
}
}Retrieves a specific ruleset by ID with all its rules.
| ruleset_id required | string <uuid> Ruleset identifier (UUID) |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
- "name": "string",
- "description": "string",
- "is_active": true,
- "is_default": true,
- "effective_from": "2019-08-24T14:15:22Z",
- "effective_to": "2019-08-24T14:15:22Z",
- "rules": [
- {
- "name": "string",
- "template_code": "account_billing_amount_limit",
- "description": "string",
- "parameters": { },
- "conditions": { },
- "violation_policy": "decline",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Updates ruleset metadata and manages rules. Rules can be added, updated, or removed in a single request.
| ruleset_id required | string <uuid> Ruleset identifier (UUID) |
| name | string^[a-zA-Z0-9_-]+$ Updated ruleset name |
| description | string Updated description |
| is_active | boolean Updated active status |
| is_default | boolean Set as tenant default ruleset |
| effective_from | string <date-time> Updated start date |
| effective_to | string <date-time> Updated end date |
object (RuleModifications) Rule modifications for update request |
{- "is_default": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
- "name": "string",
- "description": "string",
- "is_active": true,
- "is_default": true,
- "effective_from": "2019-08-24T14:15:22Z",
- "effective_to": "2019-08-24T14:15:22Z",
- "rules": [
- {
- "name": "string",
- "template_code": "account_billing_amount_limit",
- "description": "string",
- "parameters": { },
- "conditions": { },
- "violation_policy": "decline",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}APIs to assign spend control rulesets to accounts and tokens.
See Ruleset Assignment for implementation guidance.
Assigns a ruleset to a customer account with a specific scope definition.
| account_id required | string <uuid> Account identifier in Open Fabric |
| ruleset_id required | string <uuid> Ruleset identifier |
required | object (RulesetScope) Scope definition for ruleset assignment |
{- "ruleset_id": "ca688a19-2766-4b2c-aefa-28d16a464773",
- "scope": {
- "level": "account",
- "provision_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "provision_types": [
- "customer_account_device"
]
}
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "account_id": "449e7a5c-69d3-4b8a-aaaf-5c9b713ebc65",
- "ruleset_id": "ca688a19-2766-4b2c-aefa-28d16a464773",
- "scope": {
- "level": "account",
- "provision_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "provision_types": [
- "customer_account_device"
]
}, - "created_at": "2019-08-24T14:15:22Z"
}Lists all rulesets assigned to an account.
| account_id required | string <uuid> Account identifier in Open Fabric |
| level | string (AuthPolicyRulesetScopeLevel) Enum: "account" "token" Filter by scope level |
{- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "account_id": "449e7a5c-69d3-4b8a-aaaf-5c9b713ebc65",
- "ruleset": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "is_active": true
}, - "scope": {
- "level": "account",
- "provision_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "provision_types": [
- "customer_account_device"
]
}, - "created_at": "2019-08-24T14:15:22Z"
}
]
}Updates an existing ruleset assignment for an account.
| account_id required | string <uuid> Account identifier in Open Fabric |
| assignment_id required | string <uuid> Assignment identifier |
| ruleset_id required | string <uuid> Ruleset identifier |
required | object (RulesetScope) Scope definition for ruleset assignment |
{- "ruleset_id": "ca688a19-2766-4b2c-aefa-28d16a464773",
- "scope": {
- "level": "account",
- "provision_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "provision_types": [
- "customer_account_device"
]
}
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "account_id": "449e7a5c-69d3-4b8a-aaaf-5c9b713ebc65",
- "ruleset_id": "ca688a19-2766-4b2c-aefa-28d16a464773",
- "scope": {
- "level": "account",
- "provision_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "provision_types": [
- "customer_account_device"
]
}, - "created_at": "2019-08-24T14:15:22Z"
}Removes a ruleset assignment from an account.
| account_id required | string <uuid> Account identifier in Open Fabric |
| assignment_id required | string <uuid> Assignment identifier |
{- "error_code": "string",
- "message": "string",
- "details": [
- {
- "error_code": "string",
- "message": "string",
- "param": "string"
}
]
}APIs you use to approve/decline and query transactions during online orchestration.
See Orchestrated integration guide for the end-to-end flow.
Open Fabric calls your backend to create a transaction request after a customer selects your payment method at checkout.
You return a response containing a redirect_url to your approval flow and gateway URLs used to redirect the customer back to checkout.
| tenant_partner_id required | string Reference ID to identify Partner on Tenant system |
| fabric_reference_id required | string OpenFabric Generated ID for this Transaction - UUID |
| partner_reference_id required | string Transaction ID set by Partner and sent to OpenFabric |
| tenant_id required | string <uuid> OpenFabric Generated ID for your Tenant account - UUID |
| gateway_success_url required | string <uri> This is the URL Tenant should redirect customers to when the transaction is successfully approved by Tenant |
| gateway_fail_url required | string <uri> This is the URL Tenant should redirect Customers to when the transaction is declined by Tenant. The transaction could be declined, because the customer cancelled the transaction on Tenant's payment flow or the Tenant simply declined to approve this transaction |
object (CustomerInfo) OpenFabric collects the below customer Info Collection from merchants. We will pass-through the collected info to Tenant | |
| amount required | number Transaction amount for which Tenant's authorization is requested |
| currency required | string = 3 characters ^[A-Z]*$ Transaction Currency for which Tenant's authorization is requested (ISO 4217 Alpha-3 currency codes) |
required | object (TransactionDetails) Transaction Details sent by Partner. |
object (PatLinkInfo) | |
| partner_name | string Partner name |
| source | string Source of transaction request |
{- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "fabric_reference_id": "ff0398e5-d045-441f-b130-bcd517964775",
- "partner_reference_id": "P1293201980299030",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "customer_info": {
- "mobile_number": "+6587654321",
- "email": "developer@bnpl1.com",
- "first_name": "BNPL",
- "middle_name": "string",
- "last_name": "Developer",
- "country": "string",
- "country_code": "st",
- "partner_reference_id": "cd992711-498f-47be-b636-cf2e3eaad935"
}, - "amount": 120.1,
- "currency": "SGD",
- "transaction_details": {
- "shipping_address": {
- "address_line_1": "80 Robinson Road",
- "address_line_2": "#09-01",
- "address_line_3": "#09-01",
- "district": "string",
- "city": "string",
- "state": "string",
- "post_code": "068898",
- "country": "Singapore",
- "country_code": "SG",
- "phone_number": "string",
- "self_pickup": true
}, - "billing_address": {
- "address_line_1": "80 Robinson Road",
- "address_line_2": "#09-01",
- "address_line_3": "#09-01",
- "district": "string",
- "city": "string",
- "state": "string",
- "post_code": "068898",
- "country": "Singapore",
- "country_code": "SG",
- "phone_number": "string",
- "self_pickup": true
}, - "items": [
- {
- "item_id": "P100",
- "name": "iPhone",
- "variation_name": "Black, 128GB",
- "description": "string",
- "quantity": 1,
- "price": 11020,
- "original_price": 12020,
- "discount_amount": 0,
- "amount": 0,
- "tax_amount": 0,
- "tax_code": "string",
- "categories": [
- "Electronics"
], - "item_url": "string",
- "item_image_url": "string",
- "seller_info": {
- "seller_id": "string",
- "seller_name": "string",
- "email": "string",
- "phone": "string",
- "url": "string",
- "seller_address": "string"
}
}, - {
- "item_id": "P101",
- "name": "iPhone SE case",
- "price": 1000,
- "quantity": 1,
- "variation_name": "White",
- "categories": [
- "Accessories"
]
}
], - "original_amount": 13020,
- "tax_amount": 390.6,
- "shipping_amount": 1020,
- "voucher_code": "string",
- "fees": {
- "description": "string",
- "amount": 0
}, - "refundable_amount": 0,
- "additional_info": { },
- "expiry_date": "2019-08-24T14:15:22Z"
}, - "pat_link": {
- "link_id": "02a2c2f0-9521-47cc-9615-2e177adeebac",
- "tenant_link_ref": "string",
- "partner_link_ref": "string"
}, - "partner_name": "string",
- "source": "string"
}{- "tenant_reference_id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "status": "approved",
- "reason": "string"
}Tenant can call this API to approve or fail a transaction.
Open Fabric will create a Transaction with the default state created. Tenant can update the transaction to approved or failed.
| tenant_reference_id required | string >= 4 characters ^[a-zA-Z0-9\-_@\.]*$ Transaction ID in Tenant system. This is the same transaction ID that Tenant shared as part of the above step |
| status required | string (TransactionApprovalStatus) Enum: "approved" "failed" Tenant can either Approve or Fail a transaction. In case of Failed, reason is mandatory. |
| approved_amount | number Approved transaction amount |
| approved_currency | string = 3 characters ^[A-Z]*$ Approved transaction Currency (ISO 4217 Alpha-3 currency codes) |
| reason | string |
{- "tenant_reference_id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "status": "approved"
}{- "error_code": "string",
- "message": "string",
- "details": [
- {
- "error_code": "string",
- "message": "string",
- "param": "string"
}
]
}This API can be used to fetch a transaction
| id required | string <uuid> OpenFabric Generated ID for this Transaction. You will receive this part of Update Transaction Response. |
{- "id": "ff0398e5-d045-441f-b130-bcd517964775",
- "partner_reference_id": "P1293201980299030",
- "tenant_reference_id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "9bde4fbf-893b-49f9-b7b3-4079a76bb362",
- "partner_name": "Lazada",
- "customer_id": "88db7aa7-2cdd-42cc-9827-8d46f936ef79",
- "partner_redirect_success_url": "http://sample-merchant-flow.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=PAID",
- "partner_redirect_fail_url": "http://sample-merchant-flow.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=CANCELLED",
- "gateway_success_url": "http://of-gateway.s3-website-ap-southeast-1.amazonaws.com?reference_id=P1293201980299030&state=PAID",
- "customer_info": {
- "mobile_number": "+6587654321",
- "first_name": "postpebnpl",
- "last_name": "developer",
- "country": "Singapore",
- "country_code": "SG",
- "email": "developer@bnpl1.com"
}, - "amount": 120.1,
- "currency": "SGD",
- "status": "created",
- "card_reference_id": "7743087",
- "created_at": "2021-11-06T04:26:47.450Z",
- "updated_at": "2021-11-06T04:26:47.450Z"
}This API can be used to fetch transaction with all details including card, customer and transaction information submitted by Partner.
| id required | string <uuid> OpenFabric Generated ID for this Transaction. You will receive this part of Update Transaction Response. |
{- "id": "ff0398e5-d045-441f-b130-bcd517964775",
- "partner_reference_id": "P1293201980299030",
- "tenant_reference_id": "Tenant-cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "9bde4fbf-893b-49f9-b7b3-4079a76bb362",
- "partner_name": "Lazada",
- "partner_redirect_success_url": "http://sample-merchant-flow.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=PAID",
- "partner_redirect_fail_url": "http://sample-merchant-flow.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=CANCELLED",
- "gateway_success_url": "http://of-gateway.s3-website-ap-southeast-1.amazonaws.com?reference_id=P1293201980299030&state=PAID",
- "card": {
- "id": "62f321a3-7f34-4a18-a556-9e00fdc22467",
- "customer_id": "62f321a3-7f34-4a18-a556-9e00fdc22467",
- "redacted_number": "1111",
- "country": "USA",
- "country_code": "US"
}, - "customer_id": "88db7aa7-2cdd-42cc-9827-8d46f936ef79",
- "customer_info": {
- "mobile_number": "+6587654321",
- "first_name": "postpebnpl",
- "last_name": "developer",
- "country": "Singapore",
- "country_code": "SG",
- "email": "developer@bnpl1.com"
}, - "amount": 120.1,
- "currency": "SGD",
- "status": "failed",
- "card_reference_id": "7743087",
- "created_at": "2021-11-06T04:26:47.450Z",
- "updated_at": "2021-11-06T04:26:47.450Z",
- "transaction_details": {
- "shipping_address": {
- "country": "Singapore",
- "country_code": "SG",
- "address_line_1": "80 Robinson Road",
- "address_line_2": "#09-01",
- "address_line_3": "#09-01",
- "post_code": "068898"
}, - "billing_address": {
- "country": "Singapore",
- "country_code": "SG",
- "address_line_1": "80 Robinson Road",
- "address_line_2": "#09-01",
- "address_line_3": "#09-01",
- "post_code": "068898"
}, - "items": [
- {
- "item_id": "P100",
- "name": "iPhone",
- "price": 11020,
- "quantity": 1,
- "variation_name": "Black, 128GB",
- "original_price": 12020,
- "categories": [
- "Electronics"
]
}, - {
- "item_id": "P101",
- "name": "iPhone SE case",
- "price": 1000,
- "quantity": 1,
- "variation_name": "White",
- "categories": [
- "Accessories"
]
}
], - "tax_amount": 390.6,
- "shipping_amount": 1020,
- "original_amount": 13020
}
}Callback sent to your backend after a one-time payment credential is charged successfully.
| notification_id | string <uuid> ID of the notification |
| type required | string Value: "transaction:charged" type of notification |
| created_at required | string <date-time> |
required | object (schemas-AccountTransactionChargedNotification) Notification for transaction charge |
[- {
- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "transaction:charged",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "transaction_id": "cd992711-498f-47be-b636-cf2e3eaad936",
- "tenant_reference_id": "BNPL123456890",
- "status": "charged",
- "charged_at": "2021-11-06T04:26:47.450Z"
}
}
]Callback sent to your backend when a reversal or refund is issued against a one-time payment credential.
| notification_id | string <uuid> ID of the notification |
| type required | string Value: "transaction:reversed" type of notification |
| created_at required | string <date-time> |
required | object (schemas-AccountTransactionReversedNotification) |
[- {
- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "transaction:reversed",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "transaction_id": "cd992711-498f-47be-b636-cf2e3eaad936",
- "tenant_reference_id": "BNPL123456890",
- "status": "reversed",
- "reversed_at": "2021-11-06T04:26:47.450Z",
- "reversed_amount": 7500,
- "action_type": "reversal"
}
}
]Callback sent to your backend when a transaction is credited.
| notification_id | string <uuid> ID of the notification |
| type required | string Value: "transaction:credited" type of notification |
| created_at required | string <date-time> |
required | object (schemas-AccountTransactionCreditedNotification) |
[- {
- "notification_id": "f96afe21-aef9-465c-a9f6-813055655b04",
- "type": "transaction:credited",
- "created_at": "2019-08-24T14:15:22Z",
- "data": {
- "transaction_id": "cd992711-498f-47be-b636-cf2e3eaad936",
- "tenant_customer_ref": "CUS23432898",
- "tenant_link_ref": "PM-1293201980299030",
- "status": "credited",
- "credited_at": "2021-11-06T04:26:47.450Z",
- "credited_amount": 7500,
- "currency": "PHP",
- "billing_credited_amount": 134.75,
- "billing_currency": "USD",
- "network_transaction_time": "2021-11-04T00:00:00Z",
- "network_merchant_category_code": "5812",
- "network_merchant_id": "W2E7JYS5UGIYXN1",
- "network_merchant_name": "WWW.EMBARKLABS.ORG",
- "network_merchant_outlet_address": "+6586866171 SG"
}
}
]APIs to manage your callback (webhook) subscriptions for online-orchestration updates.
{- "value": {
- "id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}
}Create a webhook subscription for Tenant
| webhook_type | string (WebhookType) Enum: "online" "pat_provision" Webhook type |
Notification subscription object to init
| config required | object Configuration options for the subscription |
| subscribed_events required | Array of strings |
{- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}{- "id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}Update an existing webhook subscription for Tenant
| id required | string <uuid> ID of an existing notification subscription |
| webhook_type | string (WebhookType) Enum: "online" "pat_provision" Webhook type |
Notification subscription object to update
| config required | object Configuration options for the subscription |
| subscribed_events required | Array of strings |
{- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}{- "id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}APIs to create, update, list, and deactivate merchants/payment gateways (“partners”) that integrate with Open Fabric.
Get all Partners associated with current Tenant
| sort | string Example: sort=name,+tenant_partner_id Multiple sorting conditions |
| name | string Filter by name |
| tenant_partner_id | string Filter by Tenant Partner id |
| slug | string Filter by slug |
| country | string Filter by country |
| website_url | string Filter by website |
| category | string Filter by category |
| page | integer Current page |
| limit | integer Deprecated Number of records |
| page_size | integer Number of records |
| labels | string Example: labels=labels=qrph,nfc Filter by Labels |
{- "data": [
- {
- "id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "name": "Lazada",
- "slug": "lazada",
- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "email": "admin@lazada.co.th"
}, - {
- "id": "9c9a3084-772b-4ef9-9b7a-46ea5d9d33a1",
- "name": "Airpay",
- "slug": "airpay",
- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "email": "admin@airpay.com"
}, - {
- "id": "96a0c342-88b5-4fb2-98e7-f5b217f2f14b",
- "name": "Grab",
- "slug": "grab",
- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "email": "admin@grab.com"
}
], - "metadata": {
- "page_size": 10,
- "page": 1,
- "total_pages": 1,
- "total": 3
}
}Create a Partner
| name required | string |
| tenant_partner_id required | string [ 4 .. 36 ] characters ^[a-zA-Z0-9\-_@\.]*$ |
| slug required | string [ 4 .. 30 ] characters ^[a-z0-9][a-z0-9\-]*[a-z0-9]$ |
string <email> | |
| website_url required | string <uri> |
| category | string |
| country | string |
{- "name": "string",
- "tenant_partner_id": "string",
- "slug": "string",
- "email": "user@example.com",
- "category": "string",
- "country": "string"
}{- "id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "name": "Lazada",
- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "slug": "lazada",
}{- "id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "name": "Lazada",
- "slug": "lazada",
- "email": "admin@lazada.co.th"
}Update a Partner with the current Tenant
| partner_id required | string |
Body request to update Partner for Tenant
| name | string |
| website_url | string <uri> |
| category | string |
| country | string |
string <email> | |
| tenant_partner_id | string [ 4 .. 36 ] characters ^[a-zA-Z0-9\-_@\.]*$ |
{- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "name": "Lazada",
- "email": "admin@lazada.co.th"
}{- "id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "tenant_partner_id": "4fde45e1-6e4f-4039-a8de-bb316a4adeb8",
- "name": "Lazada",
- "slug": "lazada",
- "email": "admin@lazada.co.th"
}APIs to manage partner credentials, callback subscriptions, and payment gateway credentials used for token handover.
Retrieve API credentials of a Partner
| partner_id required | string <uuid> Partner ID |
| alias required | string^[\S]+$ Alias for the credentials |
{- "alias": "default",
- "client_id": "id119i9d8ekasjc9x",
- "client_secret": "secret3jjsj3jdjk2jkesk"
}Revoke and request new API credentials of a Partner
| partner_id required | string <uuid> Partner ID |
| alias required | string^[\S]+$ Alias for the credentials |
{- "alias": "default",
- "client_id": "id119i9d8ekasjc9x",
- "client_secret": "secret3jjsj3jdjk2jkesk"
}Create a webhook subscription for a Partner
| partner_id required | string <uuid> Partner ID |
| webhook_type | string (WebhookType) Enum: "online" "pat_provision" Webhook type |
Notification subscription object to init
| config required | object Configuration options for the subscription |
| subscribed_events required | Array of strings |
{- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}{- "id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "00fcf093-71fb-4349-8c0b-de810480d6b2",
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}Update a webhook subscription of a Partner
| partner_id required | string <uuid> Partner ID |
| id required | string <uuid> ID of an existing notification subscription |
| webhook_type | string (WebhookType) Enum: "online" "pat_provision" Webhook type |
Notification subscription object to update
| config required | object Configuration options for the subscription |
| subscribed_events required | Array of strings |
{- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}{- "id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "00fcf093-71fb-4349-8c0b-de810480d6b2",
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}List all PG credentials of a Partner
| partner_id required | string <uuid> Partner ID |
| pg_name | string^[\S]+$ pg name |
{- "value": {
- "id": "143334c3-1b7d-433a-939a-f63c9022f800",
- "tenant_id": "a6dbbdab-1b7d-433a-939a-f63c9022f833",
- "partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "pg_name": "xendit",
- "credential_format": "api_key_pair",
- "redacted_credentials": {
- "api_key_pair": {
- "public_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz",
- "private_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}
}, - "additional_params": {
- "processing_channel_id": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}, - "charge_config": {
- "request_pg_3ds": true,
- "headless_3ds": false
}
}
}Update a PG credential for a PG of a Partner
| partner_id required | string <uuid> Partner ID |
| pg_name required | string^[\S]+$ PG name |
| credential_format required | string (CredentialFormat) Value: "api_key_pair" |
ApiKeyPGCredential (object) (PGCredentialData) | |
object | |
object (ChargeConfig) |
{- "value": {
- "credential_format": "api_key_pair",
- "credentials": {
- "api_key_pair": {
- "public_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz",
- "private_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}
}, - "additional_params": {
- "processing_channel_id": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}, - "charge_config": {
- "request_pg_3ds": true,
- "headless_3ds": false
}
}
}{- "id": "143334c3-1b7d-433a-939a-f63c9022f800",
- "tenant_id": "a6dbbdab-1b7d-433a-939a-f63c9022f833",
- "partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "pg_name": "xendit",
- "credential_format": "api_key_pair",
- "redacted_credentials": {
- "api_key_pair": {
- "public_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz",
- "private_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}
}, - "additional_params": {
- "processing_channel_id": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}, - "charge_config": {
- "request_pg_3ds": true,
- "headless_3ds": false
}
}Get a PG credential for a PG of Partner
| partner_id required | string <uuid> Partner ID |
| pg_name required | string^[\S]+$ PG name |
{- "id": "143334c3-1b7d-433a-939a-f63c9022f800",
- "tenant_id": "a6dbbdab-1b7d-433a-939a-f63c9022f833",
- "partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "pg_name": "xendit",
- "credential_format": "api_key_pair",
- "redacted_credentials": {
- "api_key_pair": {
- "public_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz",
- "private_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}
}, - "additional_params": {
- "processing_channel_id": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}, - "charge_config": {
- "request_pg_3ds": true,
- "headless_3ds": false
}
}Delete credentials for a PG of a Partner
| partner_id required | string <uuid> Partner ID |
| pg_name required | string^[\S]+$ PG name |
{- "error_code": "string",
- "message": "string",
- "details": [
- {
- "error_code": "string",
- "message": "string",
- "param": "string"
}
]
}APIs that merchants and payment gateways use with the Open Fabric Merchant SDK to create and manage transactions.
This will be called by Partner to initialize a transaction before interacting with payment methods
| txn_trace_id | string <uuid> Trace UUID (v4) to follow payment sessions |
| Idempotency-Key | string Unique value submitted by the client to ensure idempotent request when creating transaction. |
Transaction object to init
| instrument | string Default: "web_checkout" Instrument of the transaction request. Can be omitted for the |
| tenant_id | string <uuid> OpenFabric Generated ID for the Tenant of the payment method, only for backward-compatibility. If not provided, it will use the ID of the Tenant linked with Partner. |
| partner_redirect_success_url required | string <uri> Redirect URL Configured by Partner - when transaction is approved by Tenant |
| partner_redirect_fail_url required | string <uri> Redirect URL Configured by Partner - when transaction is denied by Tenant |
| partner_reference_id required | string^[a-zA-Z0-9\-_@\.]*$ Transaction ID set by Partner and sent to OpenFabric |
required | object (CustomerInfo) OpenFabric collects the below customer Info Collection from merchants. We will pass-through the collected info to Tenant |
| amount required | number >= 0.01 Transaction amount for which Tenant's authorization is requested |
| currency required | string = 3 characters ^[A-Z]*$ Transaction Currency for which Tenant's authorization is requested (ISO 4217 Alpha-3 currency codes) |
required | object (TransactionDetails) Transaction Details sent by Partner. |
| pg_name | string Payment Gateway name |
| pg_publishable_key | string Payment Gateway's publishable_key |
| pg_flow | string (PGFlow) Enum: "tokenization" "charge" for which flow that Partner would like OF to execute. If it is not set, default to Tokenization |
| pg_additional_params | object Additional parameters required in the card tokenization/charge request for the given Payment Gateway |
{- "partner_reference_id": "P1293201980299030",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_redirect_success_url": "https://sample-merchant-flow.dev.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=PAID",
- "partner_redirect_fail_url": "https://sample-merchant-flow.dev.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=CANCELLED",
- "customer_info": {
- "mobile_number": "+6587654321",
- "first_name": "BNPL",
- "last_name": "Developer",
- "email": "developer@bnpl1.com",
- "partner_reference_id": "cd992711-498f-47be-b636-cf2e3eaad935"
}, - "amount": 120.1,
- "currency": "SGD",
- "transaction_details": {
- "shipping_address": {
- "country": "Singapore",
- "country_code": "SG",
- "address_line_1": "80 Robinson Road",
- "address_line_2": "#09-01",
- "address_line_3": "#09-01",
- "post_code": "068898"
}, - "billing_address": {
- "country": "Singapore",
- "country_code": "SG",
- "address_line_1": "80 Robinson Road",
- "address_line_2": "#09-01",
- "address_line_3": "#09-01",
- "post_code": "068898"
}, - "items": [
- {
- "item_id": "P100",
- "name": "iPhone",
- "price": 11020,
- "quantity": 1,
- "variation_name": "Black, 128GB",
- "original_price": 12020,
- "categories": [
- "Electronics"
]
}, - {
- "item_id": "P101",
- "name": "iPhone SE case",
- "price": 1000,
- "quantity": 1,
- "variation_name": "White",
- "categories": [
- "Accessories"
]
}
], - "tax_amount": 390.6,
- "shipping_amount": 1020,
- "original_amount": 13020
}
}{- "id": "ff0398e5-d045-441f-b130-bcd517964775",
- "partner_reference_id": "P1293201980299030",
- "tenant_reference_id": "Tenant-cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "9bde4fbf-893b-49f9-b7b3-4079a76bb362",
- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "partner_redirect_success_url": "https://sample-merchant-flow.dev.openfabric.co??id=f0398e5-d045-441f-b130-bcd517964775&state=PAID",
- "partner_redirect_fail_url": "https://sample-merchant-flow.dev.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=CANCELLED",
- "customer_id": "88db7aa7-2cdd-42cc-9827-8d46f936ef79",
- "customer_info": {
- "mobile_number": "+6587654321",
- "first_name": "postpebnpl",
- "last_name": "developer",
- "country": "Singapore",
- "country_code": "SG",
- "email": "developer@bnpl1.com"
}, - "amount": 120.1,
- "currency": "SGD",
- "status": "in_progress",
- "created_at": "2021-11-06T04:26:47.450Z",
- "updated_at": "2021-11-06T04:26:47.450Z"
}This will return Detailed Transaction by Open Fabric Reference ID
| id required | string <uuid> |
| txn_trace_id | string <uuid> Trace UUID (v4) to follow payment sessions |
{- "value": {
- "id": "ff0398e5-d045-441f-b130-bcd517964775",
- "partner_reference_id": "P1293201980299030",
- "tenant_reference_id": "Tenant-cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "9bde4fbf-893b-49f9-b7b3-4079a76bb362",
- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "partner_redirect_success_url": "https://sample-merchant-flow.dev.openfabric.co??id=f0398e5-d045-441f-b130-bcd517964775&state=PAID",
- "partner_redirect_fail_url": "https://sample-merchant-flow.dev.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=CANCELLED",
- "customer_id": "88db7aa7-2cdd-42cc-9827-8d46f936ef79",
- "customer_info": {
- "mobile_number": "+6587654321",
- "first_name": "postpebnpl",
- "last_name": "developer",
- "country": "Singapore",
- "country_code": "SG",
- "email": "developer@bnpl1.com"
}, - "amount": 120.1,
- "currency": "SGD",
- "status": "in_progress",
- "created_at": "2021-11-06T04:26:47.450Z",
- "updated_at": "2021-11-06T04:26:47.450Z"
}
}This will refund a transaction that was charged by Open Fabric on behalf of Partner
| id required | string <uuid> |
| Idempotency-Key | string Unique value submitted by the partner to ensure idempotent request when refunding transaction. |
Refund request body
| amount required | number >= 0.001 Refund amount |
| additional_properties | object |
| reason | string |
{- "amount": 10.1,
- "reason": "Out of goods"
}{- "value": {
- "id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "pg_refund_id": "00fcfasfas24r234saf",
- "data": {
- "id": "00fcfasfas24r234saf",
- "external_id": "00fcf0sf-71fb-4349-8c0b-213412349840"
}
}
}This will fetch the transaction by partner reference id
| partner_reference_id required | string |
{- "value": {
- "id": "ff0398e5-d045-441f-b130-bcd517964775",
- "partner_reference_id": "P1293201980299030",
- "tenant_reference_id": "Tenant-cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "9bde4fbf-893b-49f9-b7b3-4079a76bb362",
- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f",
- "partner_redirect_success_url": "https://sample-merchant-flow.dev.openfabric.co??id=f0398e5-d045-441f-b130-bcd517964775&state=PAID",
- "partner_redirect_fail_url": "https://sample-merchant-flow.dev.openfabric.co?id=f0398e5-d045-441f-b130-bcd517964775&state=CANCELLED",
- "customer_id": "88db7aa7-2cdd-42cc-9827-8d46f936ef79",
- "customer_info": {
- "mobile_number": "+6587654321",
- "first_name": "postpebnpl",
- "last_name": "developer",
- "country": "Singapore",
- "country_code": "SG",
- "email": "developer@bnpl1.com"
}, - "amount": 120.1,
- "currency": "SGD",
- "status": "in_progress",
- "created_at": "2021-11-06T04:26:47.450Z",
- "updated_at": "2021-11-06T04:26:47.450Z"
}
}With the payment methods input, we identify Partner by access_token, only payment methods available with this Partner will be returned
| txn_trace_id | string <uuid> Trace UUID (v4) to follow payment sessions |
{- "value": [
- {
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "name": "Sample BNPL",
- "slug": "sample-bnpl",
- "tenant_partner_id": "27666828-57f9-4709-a9a9-84167e091f5f"
}
]
}Notification sent to your partner's backend when a transaction is approved.
| txn_id required | string <uuid> OpenFabric Transaction ID |
| txn_ref_id required | string <uuid> Transaction reference ID. Internally it is the equivalent of |
| txn_state required | string (MerchantTransactionStatus) Enum: "in_progress" "approved" "failed" "reversed" Transaction status for Partner |
| txn_amt required | number Transaction amount |
| txn_ccy required | string Transaction currency |
| txn_app_amt required | number Transaction approved amount |
| txn_app_ccy required | string Transaction approved currency |
| txn_created_at required | string <date-time> |
| txn_updated_at required | string <date-time> |
| txn_tenant_id | string |
| txn_card_token | string Short-lived token to access the VCN details generated for the
transaction. Internally it is the equivalent of |
| txn_pg | string Payment gateway name. Used for PG integrated flow |
| txn_pg_token | string Payment gateway token. Used for PG integrated flow |
| txn_pg_charge_id | string id of the charge transaction sent back from pg |
| txn_pg_response | object |
{- "txn_id": "ff0398e5-d045-441f-b130-bcd517964775",
- "txn_ref_id": "P1293201980299030",
- "txn_state": "approved",
- "txn_amt": 120.1,
- "txn_ccy": "SGD",
- "txn_app_amt": 120.1,
- "txn_app_ccy": "SGD",
- "txn_created_at": "2021-11-06T04:26:47.450Z",
- "txn_updated_at": "2021-11-06T04:26:47.450Z",
- "txn_pg": "stripe",
- "txn_pg_token": "YTZkYmJkYWItMWI3ZC00MzNhLTkzOWEtZjYzYzkwMjJmODMz"
}Notification sent to your partner's backend when a transaction is failed.
| txn_id required | string <uuid> OpenFabric Transaction ID |
| txn_ref_id required | string <uuid> Transaction reference ID. Internally it is the equivalent of |
| txn_state required | string (MerchantTransactionStatus) Enum: "in_progress" "approved" "failed" "reversed" Transaction status for Partner |
| txn_created_at required | string <date-time> |
| txn_updated_at required | string <date-time> |
| txn_tenant_id | string |
| txn_reason | string Reason to decline the transaction, submitted by Tenant. |
{- "txn_id": "ff0398e5-d045-441f-b130-bcd517964775",
- "txn_ref_id": "P1293201980299030",
- "txn_state": "failed",
- "txn_created_at": "2021-11-06T04:26:47.450Z",
- "txn_updated_at": "2021-11-06T04:26:47.450Z",
- "txn_reason": "Insufficient amount"
}APIs that merchants and payment gateways use to manage their integration settings.
Update webhook subscription and PG credentials settings of a Partner
Webhook and PG credentials details request for Partner
object (AccountNotificationSubscriptionRequest) | |
object |
{- "value": {
- "webhook": {
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}, - "payment_gateway": {
- "pg_name": "xendit",
- "credential_format": "api_key_pair",
- "credentials": {
- "api_key_pair": {
- "public_api_key": "pk-rdjftkyghjl9876543210",
- "private_api_key": "sk-rdjftkyghjl9876543210"
}
}
}
}
}{- "webhook": {
- "id": "cd992711-498f-47be-b636-cf2e3eaad935",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "00fcf093-71fb-4349-8c0b-de810480d6b2",
- "type": "webhook",
- "subscribed_events": [
- "*"
], - "config": {
- "authConfig": {
- "header": "X-API-Key",
- "value": "HxMrzQBFbaDeLkUar87nczWNi"
}
}
}, - "payment_gateway": {
- "id": "143334c3-1b7d-433a-939a-f63c9022f800",
- "tenant_id": "00fcf093-71fb-4349-8c0b-de810480d6b1",
- "partner_id": "00fcf093-71fb-4349-8c0b-de810480d6b2",
- "pg_name": "xendit",
- "credential_format": "api_key_pair",
- "redacted_credentials": {
- "api_key_pair": {
- "public_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz",
- "private_api_key": "aDSlnuizcvjsdl89ucIOasdzxczxczxckjzxkcjzsODMz"
}
}
}
}