Offer all the payment features your
customers want with a fast integration
that limits your PCI scope.



  • Production Server

    For processing live transactions

  • Test Server

    For development

Most Commonly Referred to Articles

POST /transactions

Process Transactions

  • Process an ACH (Electronic Check) transaction.
  • Process a keyed credit card transaction.
  • Process a tokenized transaction.
  • You can also re-bill via a Schedule ID from a previously created recurring schedule.
  • You can re-bill via a previous Transaction ID.
  • If you have uploaded ACH/Card data it can be re-billed via a Vault ID.



required name format description
* achRoutingNumber Valid Check Routing Number ACH Routing Number
* achAccountNumber Valid Check Account Number, Max Length 17 ACH Account Number
* achAccountType SAVINGS | CHECKING SAVINGS - Savings Account
CHECKING - Checking Account
* achType PPD | CCD

PPD - Consumer Account

  • billingFirstName field required (First Name)
  • billingLastName field required (Last Name)

CCD - Business Account

  • billingCompanyName field required (Company Name)


Create an ACH WEB transaction using a plaidAccessToken.

required name format description
* plaidAccessToken string

plaidAccessToken obtained from POST /plaid/item/public_token/exchange.

Keyed Card

Please consider the PCI Implications of transmitting full card number data.
required name format description
* cardNumber Valid Credit Card Number.

Credit/Debit Card Number

NOTE: To reduce the PCI Scope of your application we recommend avoiding any contact with the full card number. Java Script Tokenization is the recommended approach.

* cardExpMonth 1-12, Ex: 8 Expiration Month.
* cardExpYear 4 Digit Format. Ex: 2015 Expiration Year.
  cardCvv Valid CVV. Max Length 4 Card Verification Value.


required name format description
* tokenId Valid Token ID A Token ID created using Tokenization SDK.

Re-Bill by Schedule ID

required name format description
* scheduleId Valid Schedule ID A Schedule ID from a previously created recurring schedule.

Re-Bill by Transaction ID

required name format description
* transactionId Valid Transaction ID

A Transaction ID from a previously charged transaction.



  • When re-billing with a transactionId, all of the information from the original transaction will be replicated and used to pre-populate the values (amount, name, address, etc.) for the new transaction. 
    To submit new values, simply override the information from the previous transaction and send the new values instead.
    For instance, when re-billing  with a transactionId, also include the amountBase field to charge the new amount, also include the amountTax field if the tax amount changed, also include the terminalId field if the transaction must be processed on a different account (ex. different location), and so on.
  • When re-billing with a transactionId, we recommend that the terminalId also be included with every API request. This is particularly important if the integration supports the ability to process transactions for multiple locations/departments/etc.
    If no terminalId is specified when re-billing by transactionId, the transaction will always be processed on the same terminal that was used for the original transaction.

Re-Bill by Vault ID

required name format description
* vaultId Valid Vault ID A Vault ID from a previously stored account.
  achType PPD | CCD Required for ACH Vaults.

ACH Type for this transaction. This is optional. If not present, the default ACH Type for the Vault will be used.
PPD - Consumer Account
CCD - Business Account

Credit Card Security

required name format description

This will check the billingAddress and billingZip.

ADDRESS - Decline if address does not match.
ZIP - Decline if zip does not match.
ADDRESS_AND_ZIP - Decline if address and zip don't match.
ADDRESS_OR_ZIP - Decline if address or zip don't match.
BYPASS - Try to match address and zip but do not decline if one does not match.

OFF - Do not run AVS



  cvv ON | OFF

ON - CVV check on.
OFF - CVV check off.



  cardCvv String The CVV code from the card.

Transaction Fields

All amount* fields have a max value of 1,000,000. Amounts higher than 1,000,000 will cause a validation error. 

required name format description
  status HOLD | CAPTURE | VOID Transaction Status affects whether or not the transaction will be settled. More Details
  terminalId Valid Terminal Id

The terminal on which to run the transaction.



  • If no terminalId is specified, the transaction will run on the default terminal for the API Credentials that was used for the request.
  • For ACH WEB transactions using a plaidAccessToken, this must be a valid ACH terminal.

Action to perform. Charge the account, refund the account, or verify the account. Verifying accounts are only supported for cards and will run a zero dollar authorization to verify the card number.


NOTE: In ACH terms charge is a debit and refund is a credit, but we use the terms charge and refunds for both transaction types. If not present, the default value of CHARGE will be used.

  amountBase Money,
Format: X.XX
Ex: 1000.00

Base amount to charge. This is required for ACH, Credit Card and Re-Bill Vault ID. If omitted on a Re-Bill by Transaction ID then the amount from the initial transaction will be used.


NOTE: This is not required when doing an action=VERIFY to verify a card number.

  amountShipping Money,
Format: X.XX
Ex: 1000.00
If you want to track separate shipping amounts use this parameter.
  amountTip Money,
Format: X.XX
Ex: 1000.00
If you want to add a tip to the transaction then use this parameter.
  amountReject Money,
Format: X.XX
Ex: 1000.00
If you are re-billing a rejected ACH transaction and you want to charge a reject fee then use this parameter.
  amountSurcharge Money,
Format: X.XX
Ex: 1000.00

Click here to learn how to use PayJunction's surcharge feature

For Surcharge enabled accounts, surcharge is disabled on any transactions that include a value of $0.00 (or empty) for this field.

Alternatively, this field can be used to send other additional amounts that can be added to transactions in a compliant manner.

  amountSurchargeTax Money,
Format: X.XX
Ex: 1000.00

Click here to learn how to use PayJunction's surcharge feature

Tax amount applied on the surcharge.

  amountTax Money,
Format: X.XX
Ex: 1000.00
If you are billing tax then use this parameter.

Billing Contact

required name format description
  billingIdentifier Max Length 64 Billing customer id. If you have your own customer ID you want to associate with the transaction.


billingFirstName Max Length 16

Billing first name. Required for ACH PPD and ACH WEB transactions.

  billingMiddleName Max Length 32 Billing middle name.


billingLastName Max Length 32

Billing last name. Required for ACH PPD and ACH WEB transactions.

* billingCompanyName Max Length 64

Billing company name. Required for ACH CCD transactions.

  billingJobTitle Max Length 32 Billing job title. Ex: President
  billingPhone Max Length 24 Billing phone number.
  billingPhone2 Max Length 24 Billing alternate phone number.
  billingAddress Max Length 128 Billing street address.

Test values for Labs environment here.

  billingCity Max Length 32 Billing city.
  billingState Max Length 32 Billing state.
  billingZip Max Length 12

Billing zip.

Test values for Labs environment here.

  billingCountry Max Length 32 Billing country.
  billingEmail Max Length 128 Billing email.
  billingWebsite Max Length 128 Billing website.

Shipping Contact

required name format description
  shippingIdentifier Max Length 64 Shipping customer id. If you have your own customer ID you want to associate with the transaction.
  shippingFirstName Max Length 16 Shipping first name.
  shippingMiddleName Max Length 32 Shipping middle name.
  shippingLastName Max Length 32 Shipping last name.
  shippingCompanyName Max Length 64 Shipping company name.
  shippingJobTitle Max Length 32 Shipping job title. Ex: President
  shippingPhone Max Length 24 Shipping phone number
  shippingPhone2 Max Length 24 Shipping alternate phone number.
  shippingAddress Max Length 128 Shipping street address
  shippingCity Max Length 32 Shipping city.
  shippingState Max Length 32 Shipping state
  shippingZip Max Length 12 Shipping zip.
  shippingCountry Max Length 32 Shipping country.
  shippingEmail Max Length 128 Shipping email address.
  shippingWebsite Max Length 128 Shipping website.

Other Fields

required name format description
  invoiceNumber Max Length 32

Invoice number. If you would like to include an invoice number on the transaction for accounting.

NOTE: To bypass Duplicate Transaction Blocking, send a different invoice number for each "duplicate transaction".

A Duplicate Transaction is a transaction that includes the same card number and same amount, processed within 10 minutes of each other.

  purchaseOrderNumber Max Length 32 Purchase order number. If you would like to mark this transaction with your own PO for accounting.
  note Max Length 2048 A note field for you to annotate the transaction.

Example Request in the "Labs Demo" account:

The example below is only sending the minimum mandatory fields.
Please note you will need to replace the API User/PW and the Application Key with you specific values.
curl -X POST -u "pj-ql-01:pj-ql-01p" -H "Accept: application/json" -H "X-PJ-Application-Key: c0d73641-65ae-4e9b-bbab-fb6215d7ee98" \
-d "cardNumber=4444333322221111" \
-d "cardExpMonth=01" \
-d "cardExpYear=2025" \
-d "amountBase=1901.00" \

Example Response

API version 2023-05-16 or above required to receive the surcharge object and fields in transaction response details. See how to use API versions here.

Click here for more information regarding surcharge.
      "transactionId": 3601, 
      "uri": "", 
      "terminalId" : 10000,
      "action" : "CHARGE",
      "amountBase" : "1.11",
      "amountTax" : "3.00",
      "amountShipping" : "1.00",
      "amountTip" : "2.00",
      "amountSurcharge" : "0.21",
      "amountTotal" : "7.32",
      "surcharge" : {
            "percentage" : 3.00000,
            "status" : "APPLIED"
      "invoiceNumber": "Invoice 5", 
      "method": "KEYED",
      "purchaseOrderNumber": "Custom PO",
      "service": "API",
      "signatureStatus": "SIGNED", 
      "status": "CAPTURE", 
      "created": "2013-11-18T22:15:32Z", 
      "lastModified": "2013-11-18T22:15:32Z", 
      "response": {
            "approved": true, 
            "code": "00", 
            "message": "Approved", 
            "processor": {
                  "authorized": true, 
                  "approvalCode": "PJ20AP", 
                  "avs": {
                        "status": "REQUESTED", 
                        "requested": "BYPASS", 
                        "match": {
                              "ZIP": true, 
                              "ADDRESS": true
                  "cvv": {
                        "status": "NOT_REQUESTED"
      "settlement": {
            "settled": false
      "vault": {
            "type": "CARD", 
            "accountType": "VISA", 
            "lastFour": "1111"
      "billing": {
            "firstName": "John", 
            "middleName": "J", 
            "lastName": "Doe", 
            "companyName": "PayJunction", 
            "email": "", 
            "phone": "8006010230 x2", 
            "phone2": "8006010230 x2", 
            "jobTitle": "Support", 
            "identifier": "Billing Customer id", 
            "website": "", 
            "address": {
                  "address": "1903 State St", 
                  "city": "Santa Barbara", 
                  "state": "CA", 
                  "country": "USA", 
                  "zip": "93101"
      "shipping": {
            "firstName": "Jane", 
            "middleName": "J", 
            "lastName": "Doe", 
            "companyName": "PayJunction", 
            "email": "", 
            "phone": "8006010230 x2", 
            "phone2": "8006010230 x2", 
            "jobTitle": "Support", 
            "identifier": "Shipping Customer Id", 
            "website": "", 
            "address": {
                  "address": "1903 State St", 
                  "city": "Santa Barbara", 
                  "state": "CA", 
                  "country": "USA", 
                  "zip": "93101"

Example Request for ACH WEB

curl -X POST \
-u "login:password" \
-H "Accept: application/json" \
-H "X-PJ-Application-Key: YOUR_PRODUCTION_APP_KEY" \
-d "plaidAccessToken=access-production-1f5c0cbd-1fa8-490f-ab61-1d4e57fb4ec1" \
-d "billingFirstName=first" \
-d "billingLastName=last" \
-d "amountBase=1.00"

Example Response for ACH WEB

"transactionId" : 1775,
"uri" : "",
"terminalId" : 11657,
"action" : "CHARGE",
"achType" : "WEB",
"amountBase" : "1.00",
"amountTotal" : "1.00",
"method" : "PLAID",
"service" : "API",
"status" : "CAPTURE",
"created" : "2022-09-08T21:28:54Z",
"lastModified" : "2022-09-08T21:28:53Z",
"response" : {
"approved" : true,
"code" : "00",
"message" : "Approved"
"settlement" : {
"settled" : false
"vault" : {
"type" : "ACH",
"accountType" : "CHECKING",
"lastFour" : "6789",
"achRoutingNumber" : "121000358"
"billing" : {
"firstName" : "first",
"lastName" : "last"