ZenPayments
  1. Card Payments
ZenPayments
  • General Information
    • Authentication
    • Errors
    • Responses
    • Filters
      • Example - gte
      • Example - between
      • Example - like
      • Example - in
      • Example - non-empty
    • Pagination
      • 10 results per page
    • Data Types
  • Merchants
    • Sandbox
      • Sandbox Payment Gateway
    • Card Payments
      • Authorization
        POST
      • Sale
        POST
      • Capture
        POST
      • Partial Capture
        POST
      • Refund
        POST
      • Partial Refund
        POST
      • Soft/Dynamic Descriptor
        POST
      • Card Authentication
        POST
      • Card Tokenization
        POST
      • Card Tokenization with Global Token
        POST
      • Sale with a Fee Terminal
        POST
    • Hosted Form
      • Generate
      • Generate with Billing and Contact Information
    • Hosted Fields
      • How it Works
      • Hosted Fields Token
        • Hosted Fields Token
      • Integration Guide
        • Step 1: Include the JavaScript Library
        • Step 2: Add HTML Elements for all payment fields
        • Step 3: Set the AccessToken and Configure the rest of the form
        • Step 4: Add styling
        • Step 5: Listen for Events
        • Step 6: Get the tokenized card
          • Get the tokenized card
        • Add Payment Method Page
        • Testing your integration
    • CustomerVault
      • Sandbox
        • Sandbox Dashboard
      • Hosted Card Form
        • Generate
      • Customers
        • List
        • View
        • Create
        • Update
        • Archive
        • Delete
      • Cards
        • List Cards
        • View
        • Add Card
        • Update Exp Date
        • Archive
        • Unarchive
        • Delete
      • Billing Information
        • List
        • View
        • Update
        • Create
      • Shipping Information
        • List
        • View
        • Update
        • Create
      • Recurring Payment
        • List
        • View
        • Update
        • Create
    • Transaction Reporting
      • List
      • View
    • Response Codes
      • Verification Response Codes
    • 3DSecure
      • Version
      • Create
        • Create
      • Check
        • Check
      • Test Cards
    • Account Updater
      • Card Compatibility
      • How It Works
        • Sale with Account Updater
    • ACH Payments
      • General Information
      • Transactions
        • SEC Codes
        • Statuses
        • Actions
          • Action
        • History Log
          • Log
        • List
        • View
        • Create ACH
        • Create ACH & Save Customer
        • Create ACH for an existing Customer
        • Create ACH for an existing Customer and specific Account
        • Remove
      • Hosted Form
        • Example Request
      • Customers
        • List Customers
        • View specific Customer
        • Create Customer
        • Update Customer
        • Delete a Customer
      • Customer Accounts
        • List Customer Accounts
        • Create Customer Account
        • Update Customer Account
        • Delete a Customer Account
      • Bank Information
        • View
      • ACH Settlements
        • List
        • View
      • ACH Webhooks
        • New ACH Record
        • ACH Status Update
        • New ACH Customer
    • Reporting
      • Sandbox
        • Sandbox Dashboard
      • Authorizations
        • List
        • List with Filters
      • Batches
        • List
        • List with Filters
        • Summary
      • Payouts
        • List
        • View
        • Export
      • Chargebacks
        • Disputes
          • Upload a temporary file
          • Create a Dispute
          • Preview
          • Submit
        • Webhooks
          • Signatures
          • Events
            • Chargeback
              • New Chargeback Record
              • Chargeback Update
        • View
          • List
          • View
      • Statements
        • List
        • Download
      • Reserve
        • List
      • Fraud Report
        • Generate
      • Visa Verifi
        • Submiting External Transactions
          • Submit
        • List
      • Other Reports
        • Request a Report
        • Check Status
        • Download
    • Gateway Test Cards
  • Platforms
    • Sandbox
      • Sandbox Dashboard
    • Onboarding
      • Boarding Applications
        • Campaigns
          • List
        • Equipment
          • Terminals
            • List
            • View
          • View
          • Update
        • List
          • List Boarding Applications
        • Create
          • Create Boarding Application
        • Delete
          • Delete Boarding Application
        • View
          • View Boarding Application
        • Update
          • Update Boarding Application
        • Principals
          • List Principals
          • Create Principal
          • Update a Single Principal
          • Mass update Principals
          • Delete Principal
        • Processing
          • View Processing section
          • Update Processing section
        • Merchant Category Codes (MCCs)
          • List MCCs
        • ACH
          • View ACH section
          • Update ACH section
        • Documents
          • Attachment About
            • List All Document Categories
          • View all documents
          • MPA
          • Assign a single document
          • Assign multiple documents
          • Update a single document
          • Delete a single document
        • Fees
          • Types
            • List
          • Other Fees
            • Add
            • Update
            • Delete
          • List all fees
          • View a specific fee
          • Update a single fee
          • Update multiple fees
        • Bank Accounts
          • Add
          • Update
          • Change
        • Validate
          • Validate a Boarding Application
        • URL
          • GET URL of Boarding Application
        • Signature
          • Request E-sign
            • Request Signature
          • Embed E-sign
            • Embeded E-sign Example Flow 1
            • Embeded E-sign Example Flow 2
            • Request Embed
          • Manually Signing
            • Manual Sign
          • External eSign Signing
            • External eSign
        • Automation
          • AutoSign
            • Set AutoSign
          • AutoUnderwriting
            • Set AutoUnderwriting
        • Status
          • Set status to Underwriting
        • Notes
          • List
          • Create
      • Merchants
        • Terminals
          • List Terminals
          • View a specific Terminal
          • VAR Sheet
          • VAR View
        • List Merchants
      • DBA
        • List
        • View
      • Attachments
        • Temporary Upload
          • Temporary Upload
        • Chunk Upload
          • Initialize
          • Upload Request 1/2
          • Upload Request 2/2
        • Standard Upload
        • List attachments
        • View
        • View in browser
        • Download
        • Delete
      • Webhooks
        • Signatures
        • Events
          • Boarding Application
          • Merchant
            • Account
              • New Acquiring Account
              • New ACH Account
              • Closed Acquiring Account
              • Closed ACH Account
            • Terminal
              • New Terminal Record
              • Update Terminal Record
              • Delete Terminal Record
    • Reporting
      • Authorizations
        • List
        • List with Filters
      • Batches
        • List
        • List with Filters
        • Summary
      • Payouts
        • List
        • View
        • Export
      • Chargebacks
        • View
          • List
          • View
        • Disputes
          • Upload a temporary file
          • Create a Dispute
          • Preview
          • Submit
        • Webhooks
          • Signatures
          • Events
            • Chargeback
              • New Chargeback Record
              • Chargeback Update
      • Statements
        • List
        • Download
      • Reserve
        • List
      • Fraud Report
        • Generate
      • Other Reports
        • Request a Report
        • Check Status
        • Download
    • Residuals
      • List
      • View
    • Tickets
      • Update Ticket Status
        • Close
        • Re-Open
      • Responses
        • List
        • Create
        • Add an Attachment
      • Attachments
        • List
        • View
        • Create
        • Delete
      • Categories
        • List
      • Notes
        • List
        • View
        • Create
        • Update
        • Delete
        • Attachments
      • List
      • Create
      • View a specific ticket
    • Connect
      • Webhooks
        • Access Granted
        • Access Updated
        • Access Revoked
    • Misc
      • Address Checker
        • List Countries
        • List States
        • List Cities and Zip Codes
        • Filter by City and State
      • BIN Check
        • Get BIN Information
  1. Card Payments

Sale

POST
/payment/sale
The Sale method creates a new authorization and a capture request by default.
It is important to note that these requests need to always include the system terminal.id for which you are making a payment.
Sale transactions are settled automatically while auth-only transactions are not included in the batch for settlement.
Keep in mind the required fields in order to initiate a sale transaction. If you want to perform level 2 or level 3 the required fields are outlined below.
FieldsLevel 2Level 3VisaMastercardAMEX (Level 2 Only)
order.idNoYesYesYesNo
order.dateNoYesYesNoNo
order.invoiceNoYesYesNoNo
order.summaryCommodityCodeNoYesYesNoNo
order.descriptionNoNoNoNoYes
order.supplierRefNoNoNoNoNoYes
order.customer.idNoNoNoNoYes
order.customer.vatNoYesYesNoNo
order.shipping.fromZipNoYesYesYesNo
order.shipping.toZipNoYesYesYesYes
order.shipping.toCountryNoYesYesYesNo
order.shipping.costNoYesYesYesNo
order.shipping.dutyCostNoYesYesYesNo
order.tax.amountYesYesYesYesYes
order.tax.details.typeYesYesYesYesNo
order.tax.details.amountYesYesYesYesNo
order.tax.details.rateYesYesYesNoNo
order.tax.details.categoryYesYesYesYesNo
order.productsNoYesYesYesNo
order.discount.amountNoYesYesYesNo
Object
FieldsDescriptionTypeFilterableRequiredReadonly
idUnique ID of the payment recordIntegerYesNoYes
terminalTerminal ObjectObjectNoYesNo
terminal.idDashboard Terminal IDIntegerYesYesNo
amountPayment amountNumberNoYesNo
sourceTransaction source Internet, Phone and MailENUMYesYesNo
originOrigin of the transaction (i.e. Website, CRM, etc)StringYesNoNo
levelDesired level of the payment 1, 2 or 3ENUMYesYesNo
threeds3DS ObjectObjectNoYesNo
threeds.idThe ID that is returned from the 3DS responseIntegerNoYesNo
cardCard detailsObjectNoYesNo
card.nameCardholder nameStringNoConditionalNo
card.numberCard numberIntegerNoConditionalNo
card.cvvCard security code / CVVIntegerNoConditionalNo
card.expCard expiration date /Format: mm/yyStringNoConditionalNo
card.saveSave the card details for future use Yes or No. This will return a tokenENUMNoNoNo
card.storeYes or No. This indicates if the transaction is a Card On File (COF) or Merchant Initiated Transaction (MIT) type. For use with Visa onlyENUMNoNoNo
card.tokenCard token. This is used for saved card and for future billing.StringNoConditionalNo
card.verificationVerification objectObjectNoNoYes
card.verification.cvvThe card security code verification response.StringNoNoYes
card.verification.addressThe Address Verification System response.StringNoNoYes
card.addressCard billing address detailsObjectNoNoNo
card.address.countryCard billing countryStringNoNoNo
card.address.stateCard billing stateStringNoNoNo
card.address.cityCard billing cityStringNoNoNo
card.address.streetCard billing streetStringNoNoNo
card.address.zipCard billing zipStringNoNoNo
card.networkTransactionIdThis field is a unique network transaction identifier for all card types. If used in consecutive Visa/Mastercard transactions, it indicates the transaction is being processed using a card in the customer wallet.StringNoNoYes
contactContact objectObjectNoNoNo
contact.nameContact nameStringNoNoNo
contact.phoneContact phoneStringNoNoNo
contact.emailContact emailStringNoNoNo
sendReceiptSend receipt on Sale or Capture action. This parameter requires contact.email to be provided. Yes or No.ENUMNoNoNo
externalIdUnique record identifiers from a system outside of Payment GatewayStringYesNoNo
isRecurringSet this flag to Yes if the payment request comes from a recurring systemBooleanNoNoNo
splitYes or NoIf this is a split Tender transaction. This will return an ID that needs to be provided in the next sequenceStringNoNoNo
ipIP ObjectObjectNoNoNo
ip.addressCardholder IP addressStringYesNoNo
ip.ispInternet Service ProviderStringNoNoNo
ip.typeThe type of the IPStringNoNoNo
ip.locationIP location ObjectObjectNoNoNo
ip.location.cityCityStringNoNoNo
ip.location.stateStateStringNoNoNo
ip.location.countryCountryStringNoNoNo
ip.location.zipZIP CodeStringNoNoNo
ip.infoInfoObjectNoNoNo
ip.info.isAnonymousAnonymous CheckBooleanNoNoNo
ip.info.isAnonymousVpnAnonymous VPNBooleanNoNoNo
ip.info.isPublicProxyPublic ProxyBooleanNoNoNo
ip.info.isHostingProviderHosting Provider IPBooleanNoNoNo
ip.info.isTorExitNodeTor Exit Node of the IPBooleanNoNoNo
orderOrder detailsObjectNoNoNo
order.idPurchase orderStringNoNoNo
order.datePurchase order dateDateNoNoNo
order.invoiceOrder invoice numberStringNoNoNo
order.summaryCommodityCodeThe international description code of the overall goods/services being supplied.StringNoNoNo
order.descriptionAlso referred to as Soft Descriptor. The text on the cardholder's statement that describes the purchase. If the order.description is sent, it will be forwarded in the authorization and capture for all card types.StringNoNoNo
order.supplierRefNoSupplier reference numberStringNoNoNo
order.customerCustomer detailsObjectNoNoNo
order.customer.identifierCustomer reference identifierStringNoNoNo
order.customer.vatCustomer's government assigned tax identification numberStringNoNoNo
order.shippingOrder shipping detailsObjectNoNoNo
order.shipping.fromZipShipping from zip codeStringNoNoNo
order.shipping.toZipDestination zip codeStringNoNoNo
order.shipping.toCountryDestination county codeStringNoNoNo
order.shipping.costShipping costNumberNoNoNo
order.shipping.dutyCostShipping duty costNumberNoNoNo
order.taxOrder tax detailsObjectNoNoNo
order.tax.amountSales taxNumberNoNoNo
order.tax.detailsAdditional sales tax informationArrayNoNoNo
order.tax.details.typeThe type of sales tax appliedStringNoNoNo
order.tax.details.amountThe sales tax amount applied to the orderNumberNoNoNo
order.tax.details.rateTax rate (Allowed range 0.01-100)NumberNoNoNo
order.tax.details.categoryService, Duty, VAT, Alternate, National TaxExemptENUMNoNoNo
order.productsProduct/s detailsObjectNoNoNo
order.products.idProduct IDStringNoNoNo
order.products.nameProduct nameStringNoNoNo
order.products.priceProduct priceNumberNoNoNo
order.products.quantityProduct quantityIntegerNoNoNo
order.products.measurementUnitProduct measurement unitStringNoNoNo
order.products.commodityCodeProduct commodity codeStringNoNoNo
order.discountOrder discounts detailsObjectNoNoNo
order.discount.amountDiscounts amountNumberNoNoNo
order.discount.detailsDiscountObjectNoNoNo
order.discount.details.nameDiscount nameStringNoNoNo
order.discount.details.amountDiscount amountNumberNoNoNo
order.discount.details.percentageDiscount percentageNumberNoNoNo
order.discount.details.priorityDiscount priorityIntegerNoNoNo
feeTransactionIn cases where a fee is run as a separate transaction on another terminalObjectNoNoYes
feeTransaction.idFee Transaction IDIntegerNoNoYes
feeTransaction.typeThe type of sales tax appliedStringNoNoYes
feeTransaction.amountThe sales tax amount applied to the orderNumberNoNoYes
batchObjectObjectNoNoYes
batch.idBatch IDIntegerYesNoYes
batch.numberBatch NumberIntegerNoNoYes
batch.batchedOnDate when batch was generatedDatetimeNoNoYes
statusStatus ObjectObjectNoNoYes
status.statusStatusStringYesNoYes
status.reasonDescriptionStringNoNoYes
If you pass the level parameter in your request, we will validate the field requirements of the level you have requested. In the event of an incomplete validation we will return an error with the missing fields.
If a transaction has a batch information in the response, this means that this transaction has batched.

Request

Authorization
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
Body Params application/json

Example
{
  "terminal": {
    "id": 24
  },
  "amount": "2.10",
  "source": "Internet",
  "level": 1,
  "card": {
    "name": "John Wick",
    "number": 5309572686772257,
    "exp": "12/30",
    "cvv": 998,
    "address": {
      "country": "United State of America",
      "state": "CA",
      "city": "Calabasas",
      "street": "8320",
      "zip": "85284"
    }
  },
  "contact":{
      "email": "test@testemail.com"
  },
  "sendReceipt": "Yes"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST '/payment/sale' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "terminal": {
    "id": 24
  },
  "amount": "2.10",
  "source": "Internet",
  "level": 1,
  "card": {
    "name": "John Wick",
    "number": 5309572686772257,
    "exp": "12/30",
    "cvv": 998,
    "address": {
      "country": "United State of America",
      "state": "CA",
      "city": "Calabasas",
      "street": "8320",
      "zip": "85284"
    }
  },
  "contact":{
      "email": "test@testemail.com"
  },
  "sendReceipt": "Yes"
}'

Responses

🟢200Sale
application/json
Body

Example
{
    "id": 874,
    "amount": "2.10",
    "origin": null,
    "type": "Auth",
    "level": 1,
    "authCode": "VTLMC1",
    "parent": {
        "id": null
    },
    "terminal": {
        "id": 24
    },
    "threeds": {
        "id": null
    },
    "card": {
        "bin": 530957,
        "name": "John Wick",
        "number": 2257,
        "exp": "2030-12-31",
        "verification": {
            "cvv": "M",
            "address": "Y"
        },
        "networkTransactionId": "1212MCC111736**"
    },
    "contact": {
        "name": null,
        "phone": null,
        "email": "test@testemail.com"
    },
    "externalId": null,
    "isRecurring": "No",
    "split": null,
    "refunded": false,
    "captured": true,
    "history": [
        {
            "id": 875,
            "type": "Capture",
            "amount": "2.10",
            "createdOn": "2023-05-09 15:03:50"
        }
    ],
    "order": null,
    "feeTransaction": null,
    "batch": {
        "id": null,
        "number": null,
        "batchedOn": null
    },
    "ip": {
        "address": "173.239.211.197",
        "isp": "Ipxo Limited",
        "type": "hosting",
        "location": {
            "city": "New York",
            "state": "NY",
            "country": "US",
            "zip": "10118"
        },
        "info": {
            "isAnonymous": "Yes",
            "isAnonymousVpn": "No",
            "isPublicProxy": "No",
            "isHostingProvider": "No",
            "isTorExitNode": "No"
        }
    },
    "status": {
        "status": "Approved",
        "reason": null
    },
    "updatedOn": "2023-05-09 15:03:51",
    "createdOn": "2023-05-09 15:03:48"
}
🟢200Example Level 3 Request
Modified at 2025-08-09 05:39:41
Previous
Authorization
Next
Capture
Built with