Skip to content

Transactions

Sales, authorizations, completions, refunds, voids, tokens, and wallet payments.

24 endpoints All API groups

Test endpoint to void a specific hardcoded refund (RefundId: 105452)

GET /api/Transactions

Responses

Status Description Schema
200 The Void Response Response
Example response
{
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Close Preauthorization

POST /api/Transactions/ClosePreauth

Close a preauthorization request.

The Close Preauthorization Request is required to add a tip amount and close the Preauthorization Request.

Request body

Schema: ClosePreauthRequest

Field Type Requirement Description
AdditionalTip number (double) Optional Additional Tip Amount
Amount number (double) Required Transaction Amount
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CurrencyCode string Optional
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
ServiceReferenceNumber string Required The transaction identifier provided by the Blackstone system at the time of the transaction.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/ClosePreauth' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "ServiceReferenceNumber": "<service-reference-number>",
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "ServiceReferenceNumber": "<service-reference-number>",
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Preauthorization Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Close All Settled Transaction

POST /api/Transactions/DoCloseAllSettledTransaction

Request body

Schema: SettlementRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/DoCloseAllSettledTransaction' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Settlement Response SettlementResponse
Example response
{
  "AmountSettled": 10.0,
  "Batches": [
    {
      "AuthCode": "<auth-code>",
      "ID": "<id>",
      "Items": [],
      "Verbiage": "<verbiage>"
    }
  ],
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Full Refund

POST /api/Transactions/DoFullRefund

Process a full refund. The request will refund the amount that can be refunded, taking into account any prior partial refunds, not to exceed the original transaction amount.

This request will refund all monies that can be refunded (original transaction amount minus any partial refunds previously processed), not to exceed the original transaction amount.

Request body

Schema: RefundRequest

Field Type Requirement Description
Account string Optional Card number. Optional if using swipe method. Otherwise required.
Amount number (double) Required Amount to be refunded. The amount to be
refunded can be less than the original transaction
amount.Multiple refunds can be applied to the
same transaction as long as the total amount of all
refunds does not exceed the original transaction
amount. The API refunds this exact amount and does not automatically prorate a surcharge into a
separate refund component.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
ExpDate string Optional Card expiration date (MMYY).
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
SURI string Optional SURI number
ServiceTransactionNumber string Required The transaction identifier provided by the Blackstone system at the time of the original transaction.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
TrackData string Optional Card track data. Optional if using the No Swipe method.
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for referencepurposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/DoFullRefund' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "ServiceTransactionNumber": "<service-transaction-number>",
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "ServiceTransactionNumber": "<service-transaction-number>",
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale DoFullRefundResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "RefundedAmount": 10.0,
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>"
}

Refund

POST /api/Transactions/DoRefund

Process a refund. The request will fail if the transaction was previously fully refunded or voided. Amount may be partial or full, is applied exactly as sent, and does not trigger automatic surcharge proration. Every refund operation requires a new unique UserTransactionNumber; ServiceTransactionNumber identifies the original transaction.

Request body

Schema: RefundRequest

Field Type Requirement Description
Account string Optional Card number. Optional if using swipe method. Otherwise required.
Amount number (double) Required Amount to be refunded. The amount to be
refunded can be less than the original transaction
amount.Multiple refunds can be applied to the
same transaction as long as the total amount of all
refunds does not exceed the original transaction
amount. The API refunds this exact amount and does not automatically prorate a surcharge into a
separate refund component.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
ExpDate string Optional Card expiration date (MMYY).
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
SURI string Optional SURI number
ServiceTransactionNumber string Required The transaction identifier provided by the Blackstone system at the time of the original transaction.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
TrackData string Optional Card track data. Optional if using the No Swipe method.
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for referencepurposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/DoRefund' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "ServiceTransactionNumber": "<service-transaction-number>",
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "ServiceTransactionNumber": "<service-transaction-number>",
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Refund Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Reversal

POST /api/Transactions/DoReversal

Reverse a transaction where the user did not receive a response from the system.

Request body

Schema: ReversalRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The user transaction number that was sent by the client at the time of the transaction.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/DoReversal' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Reversal Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Settlement

POST /api/Transactions/DoSettlement

Request a settlement of all outstanding transactions for a merchant.

Request body

Schema: SettlementRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/DoSettlement' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Settlement Response SettlementResponse
Example response
{
  "AmountSettled": 10.0,
  "Batches": [
    {
      "AuthCode": "<auth-code>",
      "ID": "<id>",
      "Items": [],
      "Verbiage": "<verbiage>"
    }
  ],
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Void

POST /api/Transactions/DoVoid

Void a transaction. The request will fail if the transaction was previously voided or refunded.

Request body

Schema: VoidRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
ServiceTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier provided by the Blackstone system at the time of the transaction.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/DoVoid' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "UserTransactionNumber": "unique-transaction-id",
  "ServiceTransactionNumber": "<service-transaction-number>",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "UserTransactionNumber": "unique-transaction-id",
  "ServiceTransactionNumber": "<service-transaction-number>",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Void Response Response
Example response
{
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Force Retail Sale

POST /api/Transactions/ForceRetailSale

Request body

Schema: ForceRetailSaleRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount as a JSON number. Quoted numeric strings are not part of the public contract.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
ApprovalCode string Optional The approval code received from the bank
AuthNumber integer (int32) Optional Auth Number.
CVN string Optional Credit card verification number (security code). Not required if credit card is swiped.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CardNumber string Optional Credit card number. Not required if credit card isswiped.
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerAddress string Optional Optional address for the customer
CustomerCity string Optional Optional city for the customer
CustomerCountry string Optional Optional country for the customer
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The merchant customer ID as a JSON integer. Quoted strings are not part of the public contract.
CustomerPhone string Optional The phone number for the customer in the e-commerce transaction (optional)
CustomerState string Optional Optional state for the customer
DigWltProgType string Optional
DigWltToken string Optional
EmvData string Optional Contactless data.
ExpDate string Optional Credit card expiration date. SaleWithToken accepts MMYY or MM/YY; other sale flows require MMYY.
Not required if credit card is swiped. Rapid Connect token sales use the valid stored token
expiration when available and otherwise require this field.
ForceDuplication boolean Optional Indicates whether the payment should be executed even if a recent payment exists with the same signature.
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
NameOnCard string Optional Cardholder Name. Not required if credit card is swiped.
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PosEntryMode string — KeyEntered, AmexContactless, CredentialOnFile, Contactless, Swiped, AmexDigitalWallet, Chip, ChipFallbackSwipe, ChipFallbackManual Optional The entry mode in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data sent to Rapid Connect for commercial card processing.
SURI string Optional SURI number
SaveCustomer boolean Optional This optional parameter indicates if the merchant wants to save the customer
SaveToken boolean Optional Indicates to return a token for the card in case the transaction was successful
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional ID of the secure transaction
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder�s billing street. Not required if credit card is swiped.
SurchargeAmount number (double) Optional Optional surcharge amount as a JSON number. Direct API callers calculate and supply this value;
the API does not derive it from the merchant's configured surcharge percentage.
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Track2 string Optional Credit card track data. Not required if using the No Swipe method.
TransactionType integer (int32) Required Transaction Type
| Name | Value | Description |
|---|---|---|
| CREDIT | 1 | Credit transaction |
| CREDIT_WITH_TOKEN | 2 | Credit with token transaction |
| Pre_Authorization | 3 | Credit preauthorization request |
| Pre_Authorization_Completion | 4 | Credit preauthorization completion |
| SaleDebit | 5 | Debit Card Sale transaction |
| EBT | 6 | EBT Transaction |
| GIFTCARD | 7 | Blackstone Gift Card transaction |
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
ZipCode string Optional Cardholder�s zip code. Not required if credit card is swiped.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/ForceRetailSale' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Force Retail Sale Response ForceRetailSaleResponse
Example response
{
  "AcsUrl": "<acs-url>",
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "Is3DSecureNeeded": false,
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>",
  "phard_code": "<phard-code>"
}

Get Card PAN

POST /api/Transactions/GetCardPAN

Request body

Schema: GetCardPANRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Token string Optional
UserName string Required User credential of the client on the host.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/GetCardPAN' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 OK GetCardPANResponse
Example response
{
  "CVV": "<security-code>",
  "CardHolderName": "<card-holder-name>",
  "CardNumber": "<card-number>",
  "ExpDate": "MMYY",
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Get Supported Currencies

POST /api/Transactions/GetSupportedCurrencies

Request body

Schema: SupportedCurrenciesRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CurrencyCode string Optional
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/GetSupportedCurrencies' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Get Supported Currencies Response SupportedCurrenciesResponse
Example response
{
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "SupportedCurrencies": [
    {
      "AlphaCode": "<alpha-code>",
      "Code": "<code>",
      "Name": "<name>"
    }
  ],
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Get Transaction

POST /api/Transactions/GetTransaction

Searches by the original UserTransactionNumber supplied by the integrator when the transaction was created. ServiceReferenceNumber and ServiceTransactionNumber are not accepted as substitutes.

Request body

Schema: GetTransactionRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The original UserTransactionNumber supplied by the integrator when the transaction was created.
This endpoint does not search by ServiceReferenceNumber or ServiceTransactionNumber.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/GetTransaction' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Get Transaction Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Process Preauthorization

POST /api/Transactions/ProcessPreauth

Process a preauthorization for a sale transaction with tips.Requires a Close Preauthorization request to close the receipt even when the tip amount is zero.

A Preauthorization Request is required for sale transactions that include tips, whether the tip is added during or after checkout, as in restaurants or hair salons.The Preauthorization Request is processed with the sale amount (not including the tip amount). A Close Preauthorization Request must be processed to add the tip amount and close the receipt.This will complete the transaction.

IMPORTANT: Preauthorization requests must be closed within 30 days, even if the tip amount is zero. If a Preauthorization Request is not closed, the preauthorization amount is returned to the cardholder.

Request body

Schema: ProcessPreauthRequest

Field Type Requirement Description
Account string Optional Credit card number
Amount number (double) Required Preauthorization amount
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CurrencyCode string Optional
IpAddress string Optional The client's IP address.
IsClosable boolean Required Must be �True� to be able to close the preauthorization request.
IsTest boolean Optional True if is a test sale
NameOnCard string Optional Cardholder name as it appears on the credit card
Password string Required Password of the client on the host.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data persisted with the preauthorization.
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder street address
TrackData string Optional
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
comments string Optional Comments
cv string Optional Card Verification
expDate string Optional Credit card expiration date (MMYY)
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
zipCode string Optional Cardholder zip code
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/ProcessPreauth' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "IsClosable": false,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "IsClosable": false,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Rpocess Rpeauthorization Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Process Preauthorization

POST /api/Transactions/ProcessPreauthWithToken

Process a preauthorization for a sale transaction with tips.Requires a Close Preauthorization request to close the receipt even when the tip amount is zero.

A Preauthorization Request is required for sale transactions that include tips, whether the tip is added during or after checkout, as in restaurants or hair salons.The Preauthorization Request is processed with the sale amount (not including the tip amount). A Close Preauthorization Request must be processed to add the tip amount and close the receipt.This will complete the transaction.

IMPORTANT: Preauthorization requests must be closed within 30 days, even if the tip amount is zero. If a Preauthorization Request is not closed, the preauthorization amount is returned to the cardholder.

Request body

Schema: ProcessPreauthWithTokenRequest

Field Type Requirement Description
Account string Optional Credit card number
Amount number (double) Required Preauthorization amount
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CurrencyCode string Optional
IpAddress string Optional The client's IP address.
IsClosable boolean Required Must be �True� to be able to close the preauthorization request.
IsTest boolean Optional True if is a test sale
NameOnCard string Optional Cardholder name as it appears on the credit card
Password string Required Password of the client on the host.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data persisted with the preauthorization.
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder street address
Token string Optional Token.
TrackData string Optional
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
comments string Optional Comments
cv string Optional Card Verification
expDate string Optional Credit card expiration date (MMYY)
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
zipCode string Optional Cardholder zip code
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/ProcessPreauthWithToken' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "IsClosable": false,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "IsClosable": false,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Rpocess Rpeauthorization Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Recurring Sale

POST /api/Transactions/RecurringSale

Request body

Schema: SaleRecurringRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount as a JSON number. Quoted numeric strings are not part of the public contract.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CVN string Optional Credit card verification number (security code). Not required if credit card is swiped.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CardNumber string Optional Credit card number. Not required if credit card isswiped.
Comments string Optional Transaction comments
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerAddress string Optional Optional address for the customer
CustomerCity string Optional Optional city for the customer
CustomerCountry string Optional Optional country for the customer
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The merchant customer ID as a JSON integer. Quoted strings are not part of the public contract.
CustomerPhone string Optional The phone number for the customer in the e-commerce transaction (optional)
CustomerState string Optional Optional state for the customer
DigWltProgType string Optional
DigWltToken string Optional
EmvData string Optional Contactless data.
ExpDate string Optional Credit card expiration date. SaleWithToken accepts MMYY or MM/YY; other sale flows require MMYY.
Not required if credit card is swiped. Rapid Connect token sales use the valid stored token
expiration when available and otherwise require this field.
ForceDuplication boolean Optional Indicates whether the payment should be executed even if a recent payment exists with the same signature.
Frecuency string — Daily, Weekly, Biweekl, Monthly, Quarterly, Biannually, Annually, Unscheduled Optional Frecuency of recurring
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
NameOnCard string Optional Cardholder Name. Not required if credit card is swiped.
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PosEntryMode string — KeyEntered, AmexContactless, CredentialOnFile, Contactless, Swiped, AmexDigitalWallet, Chip, ChipFallbackSwipe, ChipFallbackManual Optional The entry mode in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data sent to Rapid Connect for commercial card processing.
SURI string Optional SURI number
SaveCustomer boolean Optional This optional parameter indicates if the merchant wants to save the customer
SaveToken boolean Optional Indicates to return a token for the card in case the transaction was successful
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional ID of the secure transaction
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder�s billing street. Not required if credit card is swiped.
SurchargeAmount number (double) Optional Optional surcharge amount as a JSON number. Direct API callers calculate and supply this value;
the API does not derive it from the merchant's configured surcharge percentage.
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Token string Optional The Token which identifies the credit card information.
Track2 string Optional Credit card track data. Not required if using the No Swipe method.
TransactionType integer (int32) Required Transaction Type
| Name | Value | Description |
|---|---|---|
| CREDIT | 1 | Credit transaction |
| CREDIT_WITH_TOKEN | 2 | Credit with token transaction |
| Pre_Authorization | 3 | Credit preauthorization request |
| Pre_Authorization_Completion | 4 | Credit preauthorization completion |
| SaleDebit | 5 | Debit Card Sale transaction |
| EBT | 6 | EBT Transaction |
| GIFTCARD | 7 | Blackstone Gift Card transaction |
Type string — Registration, Subsequent Optional Type of recurring
UniqueId string Optional Unique id of recurring
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
ZipCode string Optional Cardholder�s zip code. Not required if credit card is swiped.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/RecurringSale' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Sale

POST /api/Transactions/Sale

Process a credit card sale transaction where sales do not include tips.Refer to Preauthorization Request when sales include tips.

Request body

Schema: SaleRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount as a JSON number. Quoted numeric strings are not part of the public contract.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CVN string Optional Credit card verification number (security code). Not required if credit card is swiped.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CardNumber string Optional Credit card number. Not required if credit card isswiped.
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerAddress string Optional Optional address for the customer
CustomerCity string Optional Optional city for the customer
CustomerCountry string Optional Optional country for the customer
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The merchant customer ID as a JSON integer. Quoted strings are not part of the public contract.
CustomerPhone string Optional The phone number for the customer in the e-commerce transaction (optional)
CustomerState string Optional Optional state for the customer
DigWltProgType string Optional
DigWltToken string Optional
EmvData string Optional Contactless data.
ExpDate string Optional Credit card expiration date. SaleWithToken accepts MMYY or MM/YY; other sale flows require MMYY.
Not required if credit card is swiped. Rapid Connect token sales use the valid stored token
expiration when available and otherwise require this field.
ForceDuplication boolean Optional Indicates whether the payment should be executed even if a recent payment exists with the same signature.
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
NameOnCard string Optional Cardholder Name. Not required if credit card is swiped.
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PosEntryMode string — KeyEntered, AmexContactless, CredentialOnFile, Contactless, Swiped, AmexDigitalWallet, Chip, ChipFallbackSwipe, ChipFallbackManual Optional The entry mode in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data sent to Rapid Connect for commercial card processing.
SURI string Optional SURI number
SaveCustomer boolean Optional This optional parameter indicates if the merchant wants to save the customer
SaveToken boolean Optional Indicates to return a token for the card in case the transaction was successful
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional ID of the secure transaction
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder�s billing street. Not required if credit card is swiped.
SurchargeAmount number (double) Optional Optional surcharge amount as a JSON number. Direct API callers calculate and supply this value;
the API does not derive it from the merchant's configured surcharge percentage.
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Track2 string Optional Credit card track data. Not required if using the No Swipe method.
TransactionType integer (int32) Required Transaction Type
| Name | Value | Description |
|---|---|---|
| CREDIT | 1 | Credit transaction |
| CREDIT_WITH_TOKEN | 2 | Credit with token transaction |
| Pre_Authorization | 3 | Credit preauthorization request |
| Pre_Authorization_Completion | 4 | Credit preauthorization completion |
| SaleDebit | 5 | Debit Card Sale transaction |
| EBT | 6 | EBT Transaction |
| GIFTCARD | 7 | Blackstone Gift Card transaction |
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
ZipCode string Optional Cardholder�s zip code. Not required if credit card is swiped.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/Sale' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Debit Card Sale

POST /api/Transactions/SaleDebit

Process a debit card sale.

Request body

Schema: SaleDebitRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount as a JSON number. Quoted numeric strings are not part of the public contract.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CVN string Optional Credit card verification number (security code). Not required if credit card is swiped.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CardNumber string Optional Credit card number. Not required if credit card isswiped.
CashBackAmount number (double) Optional Cash back amount.
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerAddress string Optional Optional address for the customer
CustomerCity string Optional Optional city for the customer
CustomerCountry string Optional Optional country for the customer
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The merchant customer ID as a JSON integer. Quoted strings are not part of the public contract.
CustomerPhone string Optional The phone number for the customer in the e-commerce transaction (optional)
CustomerState string Optional Optional state for the customer
DigWltProgType string Optional
DigWltToken string Optional
EmvData string Optional Contactless data.
ExpDate string Optional Credit card expiration date. SaleWithToken accepts MMYY or MM/YY; other sale flows require MMYY.
Not required if credit card is swiped. Rapid Connect token sales use the valid stored token
expiration when available and otherwise require this field.
ForceDuplication boolean Optional Indicates whether the payment should be executed even if a recent payment exists with the same signature.
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
KSN string Optional Pin pad data.
NameOnCard string Optional Cardholder Name. Not required if credit card is swiped.
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
PinBlock string Optional Pin pad block.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PosEntryMode string — KeyEntered, AmexContactless, CredentialOnFile, Contactless, Swiped, AmexDigitalWallet, Chip, ChipFallbackSwipe, ChipFallbackManual Optional The entry mode in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data sent to Rapid Connect for commercial card processing.
SURI string Optional SURI number
SaveCustomer boolean Optional This optional parameter indicates if the merchant wants to save the customer
SaveToken boolean Optional Indicates to return a token for the card in case the transaction was successful
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional ID of the secure transaction
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder�s billing street. Not required if credit card is swiped.
SurchargeAmount number (double) Optional Optional surcharge amount as a JSON number. Direct API callers calculate and supply this value;
the API does not derive it from the merchant's configured surcharge percentage.
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Track2 string Optional Credit card track data. Not required if using the No Swipe method.
TransactionType integer (int32) Required Transaction Type
| Name | Value | Description |
|---|---|---|
| CREDIT | 1 | Credit transaction |
| CREDIT_WITH_TOKEN | 2 | Credit with token transaction |
| Pre_Authorization | 3 | Credit preauthorization request |
| Pre_Authorization_Completion | 4 | Credit preauthorization completion |
| SaleDebit | 5 | Debit Card Sale transaction |
| EBT | 6 | EBT Transaction |
| GIFTCARD | 7 | Blackstone Gift Card transaction |
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
ZipCode string Optional Cardholder�s zip code. Not required if credit card is swiped.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/SaleDebit' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale Debit Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Sale with Apple Pay

POST /api/Transactions/SaleWithApplePay

Process an Apple Pay sale transaction.

Request body

Schema: ApplePayRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The ID of the merchant's customer
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
SURI string Optional SURI number
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
SurchargeAmount number (double) Optional The amount dedicated to the surcharge (this is an optional charge passed on to the user)
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Token string Required Base64 encoded Apple Pay token used for payment authorization.
The decoded JSON payload supports:
{ paymentData: { ... } }, { token: { ... } }, direct paymentData object { data, signature, version, header },
and also paymentData/token values as JSON strings.
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/SaleWithApplePay' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "Token": "<token>",
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "Token": "<token>",
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Sale with Google Pay

POST /api/Transactions/SaleWithGooglePay

Process a google pay sale transaction.

Request body

Schema: GooglePayRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The ID of the merchant's customer
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PosEntryMode string — KeyEntered, AmexContactless, CredentialOnFile, Contactless, Swiped, AmexDigitalWallet, Chip, ChipFallbackSwipe, ChipFallbackManual Optional The entry mode in which the payment was captured
SURI string Optional SURI number
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
SurchargeAmount number (double) Optional The amount dedicated to the surcharge (this is an optional charge passed on to the user)
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Token string Optional The encrypted Google Pay token used for payment authorization, not a plain credit card number.
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/SaleWithGooglePay' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Sale with Token

POST /api/Transactions/SaleWithToken

Process a credit card sale transaction using a previously generated token. TransactionType must be the JSON integer 2 (CREDIT_WITH_TOKEN). Amount and the optional caller-calculated SurchargeAmount are JSON numbers. A quoted amount is not part of the public contract.

Example endpoint-specific fields:

{
  "Amount": 10.00,
  "TransactionType": 2,
  "Token": "token-from-GetTokenForCard",
  "SurchargeAmount": 0.30,
  "UserTransactionNumber": "order-1001"
}

Request body

Schema: SaleWithTokenRequest

Field Type Requirement Description
Amount number (double) Required Transaction amount as a JSON number. Quoted numeric strings are not part of the public contract.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
CVN string Optional Credit card verification number (security code). Not required if credit card is swiped.
CardDifferenceAmount number (double) Optional The amount dedicated to the card difference (this is an optional charge passed on to the user)
CardNumber string Optional Credit card number. Not required if credit card isswiped.
Comments string Optional Transaction comments
CurrencyCode string Optional The Code of the currency to process the transaction. By default, USD dollar is used.
CustomerAddress string Optional Optional address for the customer
CustomerCity string Optional Optional city for the customer
CustomerCountry string Optional Optional country for the customer
CustomerEmail string Optional The email for the customer in the e-commerce transaction (optional)
CustomerId integer (int32) Optional The merchant customer ID as a JSON integer. Quoted strings are not part of the public contract.
CustomerPhone string Optional The phone number for the customer in the e-commerce transaction (optional)
CustomerState string Optional Optional state for the customer
DigWltProgType string Optional
DigWltToken string Optional
EmvData string Optional Contactless data.
ExpDate string Optional Credit card expiration date. SaleWithToken accepts MMYY or MM/YY; other sale flows require MMYY.
Not required if credit card is swiped. Rapid Connect token sales use the valid stored token
expiration when available and otherwise require this field.
ForceDuplication boolean Optional Indicates whether the payment should be executed even if a recent payment exists with the same signature.
InvoiceNumber string Optional Optional invoice number associated with the transaction.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
NameOnCard string Optional Cardholder Name. Not required if credit card is swiped.
OrderReference string Optional Optional reference for the order in case it applies
Password string Required Password of the client on the host.
PaymentLinkId string Optional Optional Payment Link identifier when the transaction is paid from a payment link.
PosCode string — ECommerce, Moto, RecurringBilling, Retail Optional The condition in which the payment was captured
PosEntryMode string — KeyEntered, AmexContactless, CredentialOnFile, Contactless, Swiped, AmexDigitalWallet, Chip, ChipFallbackSwipe, ChipFallbackManual Optional The entry mode in which the payment was captured
PurchaseCardLevel2 PurchaseCardLevel2Data Optional Optional Purchase Card Level 2 data sent to Rapid Connect for commercial card processing.
SURI string Optional SURI number
SaveCustomer boolean Optional This optional parameter indicates if the merchant wants to save the customer
SaveToken boolean Optional Indicates to return a token for the card in case the transaction was successful
SecureData string Optional The 3D secure data present once the 3D secure flow has been triggered for the transaction
SecureTransactionId string Optional ID of the secure transaction
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder�s billing street. Not required if credit card is swiped.
SurchargeAmount number (double) Optional Optional surcharge amount as a JSON number. Direct API callers calculate and supply this value;
the API does not derive it from the merchant's configured surcharge percentage.
TaxAmount number (double) Optional The amount dedicated to the tax (this is an optional charge configurable by the merchant)
TipAmount number (double) Optional The amount dedicated to the tip (this is an optional charge for the client with a default value configurable by the merchant)
Token string Optional The Token which identifies the credit card information.
Track2 string Optional Credit card track data. Not required if using the No Swipe method.
TransactionType integer (int32) Required Transaction Type
| Name | Value | Description |
|---|---|---|
| CREDIT | 1 | Credit transaction |
| CREDIT_WITH_TOKEN | 2 | Credit with token transaction |
| Pre_Authorization | 3 | Credit preauthorization request |
| Pre_Authorization_Completion | 4 | Credit preauthorization completion |
| SaleDebit | 5 | Debit Card Sale transaction |
| EBT | 6 | EBT Transaction |
| GIFTCARD | 7 | Blackstone Gift Card transaction |
UserName string Required User credential of the client on the host.
UserTransactionNumber string Required The transaction identifier used for reference purposes only; must be unique.
ZipCode string Optional Cardholder�s zip code. Not required if credit card is swiped.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/SaleWithToken' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Amount": 10.0,
  "UserTransactionNumber": "unique-transaction-id",
  "TransactionType": 1,
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Sale With Token Response SaleResponse
Example response
{
  "AppliedSurchargeAmount": 10.0,
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "CustomerId": 1,
  "EmvData": "<emv-data>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "Token": "<token>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>"
}

Validate Apple Pay Merchant Session

POST /api/Transactions/ValidateApplePayMerchant

Request body

Schema: ApplePayValidateMerchantRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
Initiative string Required
InitiativeContext string Required
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
ValidationUrl string Required
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/ValidateApplePayMerchant' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "ValidationUrl": "<validation-url>",
  "Initiative": "<initiative>",
  "InitiativeContext": "<initiative-context>",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "ValidationUrl": "<validation-url>",
  "Initiative": "<initiative>",
  "InitiativeContext": "<initiative-context>",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 Merchant session object object
Example response
{}

Verification Only

POST /api/Transactions/VerificationOnly

Request body

Schema: VerificationOnlyRequest

Field Type Requirement Description
Account string Optional Account Number in the Card.
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
Cv string Optional CV verification message.
ExpDate string Optional Expiration Date in the Card.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
Street string Optional Cardholder’s Street.
UserName string Required User credential of the client on the host.
Zip string Optional Cardholder’s zip code. Not required if credit card is swiped.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/VerificationOnly' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Verification Response VerificationOnlyResponse
Example response
{
  "AuthorizationNumber": "<authorization-number>",
  "Balance": "<balance>",
  "CardType": "<card-type>",
  "LastFour": "<last-four>",
  "Msg": [
    "<msg>"
  ],
  "PaymentPlanInfo": {
    "Description": "<description>",
    "DisplayName": false,
    "MonthlyFee": 1.0,
    "NonSwipeDiscount": 1.0,
    "NonSwipeTransactionFee": 1.0,
    "PlanId": 1,
    "PlanName": "<plan-name>",
    "SwipeDiscount": 1.0,
    "SwipeTransactionFee": 1.0
  },
  "ResponseCode": 200,
  "ServiceReferenceNumber": "<service-reference-number>",
  "avs": "<avs>",
  "cv": "<cv>",
  "displayMessage": "<display-message>",
  "msoft_code": "<msoft-code>",
  "phard_code": "<phard-code>",
  "verbiage": "<verbiage>"
}

Verify Bank Identification Number

POST /api/Transactions/VerifyBin

Send the lookup value in Bin; BinNumber is not a supported alias. The response is flat at the top level: Scheme, Type, Brand, Country, Bank, ResponseCode, and Msg.

Request body

Schema: BinDataRequest

Field Type Requirement Description
AppInfo string Optional Application information including language, version, platform, device model and OS.
Format: "Lang: XX. Version: X.X.X. Platform: XXXX. DeviceModel: XXXX. OS: XXXX"
Example: "Lang: Es. Version: 3.11.8. Platform: android. DeviceModel: dedede. OS: Android OS 13 / API-33"
AppKey string Required Application Key which uniquely identifies your application as provided by the Blackstone system.
AppType integer (int32) Required Application Type as provided by the Blackstone system.
Bin string Required Bank Identification Number to look up. The JSON property name is Bin; BinNumber is not an alias.
IpAddress string Optional The client's IP address.
IsTest boolean Optional True if is a test sale
Password string Required Password of the client on the host.
Source string — ApiClient, BpaydPortal, BPaydApp, BatchCloser, RecurringBillingTask, BPaydPlugin, PaymentFrame, VirtualTerminal, PaymentLink, Recurring, Invoice, QuickPayment, TakePayment, QuickPaymentMobileApp, WordPress, Zoho, Xero, Odoo, GoHighLevel, TakePaymentMobileApp Optional The source of the request
UserName string Required User credential of the client on the host.
cid integer (int32) Required Cashier ID – A number used to identify the merchant’s subclient.
mid integer (int32) Required Merchant ID – A number used to identify the merchant.
curl --request POST \
  --url 'https://services.bmspay.com/api/Transactions/VerifyBin' \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "Bin": "<bin>",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}
JSON
{
  "Bin": "<bin>",
  "AppKey": "your-app-key",
  "AppType": 1,
  "mid": 1,
  "cid": 1,
  "UserName": "your-username",
  "Password": "your-password",
  "IsTest": true
}

Responses

Status Description Schema
200 The Verification Response BinDataResponse
Example response
{
  "Bank": {
    "Name": "<name>",
    "Phone": "+1-555-0100",
    "Url": "<url>"
  },
  "Brand": "<brand>",
  "Country": {
    "Alpha2": "<alpha2>",
    "Emoji": "<emoji>",
    "Name": "<name>"
  },
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "Scheme": "<scheme>",
  "Type": "<type>",
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}

Test endpoint to void a specific hardcoded refund (RefundId: 105452)

GET /api/Transactions/VoidRefundTest

Responses

Status Description Schema
200 The Void Response Response
Example response
{
  "Msg": [
    "<msg>"
  ],
  "ResponseCode": 200,
  "displayMessage": "<display-message>",
  "verbiage": "<verbiage>"
}