PayFacto API - v2.0 - Request Parameters

PayFacto API - v2.0 - Request Parameters

PayFacto API - v2.0 - Request Parameters

Complete reference for all request parameters accepted by the PayFacto Payment API v2.0. Parameters are organised by object. Each endpoint article lists the exact required and optional fields for that endpoint. Parameters marked with * are required.

ℹ️

All requests use HTTP Basic Authentication and a Content-Type: application/json body. All monetary amounts are positive integers in cents β€” $12.99 is sent as 1299. Unique identifiers are UUIDs in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

πŸ’³

Charge

Root request body for POST /charges. Creates a payment transaction.

ParameterType / ConstraintExampleDescription
amount *integer (int64) Β· max 11 digits1299Amount in cents. Must be a positive integer. $12.99 = 1299.
invoiceNumber *string Β· max 25 charsINV-001Merchant invoice reference number.
captureboolean Β· default truetrue | falseWhether to capture the charge immediately. Set false for a pre-authorization to be captured later.
statementDescriptorstring Β· max 23 chars Β· pattern A-Z 0-9 .,βˆ’?+*/.Descriptor shown on the cardholder's statement. Defaults to merchant account name if not provided.
metadataobjectKey-value pairs stored with the charge. Any string values. Not sent to the card network.
paymentMethod *object β†’ paymentMethodPayment method details. See paymentMethod section below.
billingDetailobject β†’ billingDetailCustomer billing information. Used for AVS and customer records.
shippingDetailobject β†’ shippingDetailShipping recipient details and tracking number.
↩

Refund

Root request body for POST /refunds. Issues a full or partial refund for a captured charge.

ParameterType / ConstraintExampleDescription
chargeId *string (UUID)a1822999-...The ID of the captured charge to refund.
amount *integer (int64) Β· max 11 digits1299Amount to refund in cents. Must not exceed the remaining captured amount on the charge.
reason *string Β· enumREQUESTED_BY_CUSTOMERReason for the refund. Values: DUPLICATE | FRAUDULENT | REQUESTED_BY_CUSTOMER | REQUESTED_BY_MERCHANT.
metadataobjectKey-value pairs stored with the refund.
paymentMethodobject β†’ paymentMethodOverride payment method. Required for some terminal refund flows.
πŸ”’

Verification

Root request body for POST /verifications. Validates a card with AVS and CVV checks β€” no funds collected.

ParameterType / ConstraintExampleDescription
card *object β†’ cardCard details. See card section below.
billingDetailobject β†’ billingDetailBilling address for AVS verification.
metadataobjectKey-value pairs stored with the verification.
terminalobject β†’ terminalRequired for terminal verifications. Must include terminalId.
πŸ“³

paymentMethod

Nested as paymentMethod in the charge or verification body. The type field determines which sub-object is required.

ParameterType / ConstraintExampleDescription
type *string Β· enumCARDPayment method type. Values: CARD | TERMINAL | PAYMENT_TOKEN | CASH.
cardobject β†’ cardRequired when type is CARD.
terminalobject β†’ terminalRequired when type is TERMINAL.
paymentTokenobject β†’ paymentTokenRequired when type is PAYMENT_TOKEN.
cashobject β†’ cashRequired when type is CASH.
πŸ’³

card

Nested as paymentMethod.card when paymentMethod.type is CARD. number is required unless a wallet paymentData is provided instead.

ParameterType / ConstraintExampleDescription
numberstring Β· max 19 chars4111111111111111The card number (PAN). Not required if wallet paymentData is provided.
cvvstring Β· max 4 chars123Card verification value (CVV/CVC). Optional but recommended for CNP transactions.
expiryobject β†’ cardExpiryCard expiry. Required when a card number is provided.
authenticationobject β†’ authentication3DS or wallet authentication data. See authentication section.
trackDataobject β†’ trackDataMagnetic stripe track data for card-present swipe transactions.
πŸ“…

cardExpiry

Nested as paymentMethod.card.expiry. Both fields are required when a card number is provided.

ParameterType / ConstraintExampleDescription
month *string Β· 2 chars05Two-digit expiry month. Zero-padded. Example: May = 05.
year *string Β· 4 chars2039Four-digit expiry year. Example: 2039.
πŸ”

authentication / wallet / threeDomainSecure

Nested as paymentMethod.card.authentication. Used for Apple Pay, Google Pay, and 3DS flows. Include either a wallet sub-object or a threeDomainSecure sub-object β€” not both.

authentication object

ParameterType / ConstraintExampleDescription
walletobject β†’ walletWallet authentication data. Use for APPLE_PAY or GOOGLE_PAY.
threeDomainSecureobject β†’ threeDomainSecure3DS authentication data. Use when 3DS is handled externally (not via SHC).

wallet object

ParameterType / ConstraintExampleDescription
type *string Β· enumAPPLE_PAYWallet type. Values: APPLE_PAY | GOOGLE_PAY.
paymentDatastring (JSON)The full encrypted wallet token as a JSON string. Pass as-is β€” PayFacto decrypts. Use this OR the decrypted fields below.
cryptogramstring Β· hex-encodedC50041...Decrypted cryptogram converted to HEX. Required when your server decrypts the wallet token (Method A).
eciIndicatorstring05ECI indicator from the decrypted wallet payload. Required with cryptogram.

threeDomainSecure object β€” all four fields required

ParameterType / ConstraintExampleDescription
authenticationValue *stringAJkBBklm...The 3DS authentication value (CAVV/AAV) returned by the 3DS provider.
directoryServerTransactionId *string (UUID)f38e6948-...The directory server transaction ID from the 3DS authentication response.
eciIndicator *string05Electronic Commerce Indicator. 05 = fully authenticated, 06 = attempted, 07 = not authenticated.
version *string2.1.03DS protocol version used during authentication.
πŸ“³

terminal

Nested as paymentMethod.terminal when paymentMethod.type is TERMINAL. Also used as a sub-object in capture, increment, voidCapture, voidRefund, and release bodies for terminal flows.

ParameterType / ConstraintExampleDescription
terminalId *string (UUID)3a2049fb-...Unique terminal identifier. Required. Provided by PayFacto during terminal deployment.
clerkIdstring Β· max 8 chars001Clerk or cashier identifier. Optional.
tipinteger (int64)100Tip amount in cents. Optional.
cashbackinteger (int64)2000Cashback amount in cents. Optional.
accountTypestringCHEQUINGCardholder account type. Optional.
cardBrandstring
cardTypestring
configureTerminalbooleanWhen set to true, the terminal settings have changed and it must re-download its configuration.
cvvstring
emvRawRequeststring
emvRawResponsestring
entryModestring
lastFourstring
maskedPanstring
storedCredentialstring
surchargeinteger
trackDatastring
πŸ”„

paymentToken / storedCredential

Nested as paymentMethod.paymentToken when paymentMethod.type is PAYMENT_TOKEN. Used for SHC-generated tokens and stored credentials.

paymentToken object

ParameterType / ConstraintExampleDescription
storedCredential *object β†’ storedCredentialStored credential details. Required.

storedCredential object

ParameterType / ConstraintExampleDescription
type *string Β· enumCIT_INITIALCredential type. Values: CIT_INITIAL (first cardholder-initiated use) | CIT_SUBSEQUENT (repeat cardholder use) | MIT_SCHEDULED (merchant-initiated, scheduled) | MIT_UNSCHEDULED (merchant-initiated, unscheduled).
tokenId *string5k46v51j...The payment token. For SHC tokens, this is the value from the SHC callback's response.token field.
idstringOptional transaction reference ID associated with the stored credential.
πŸ’΅

cash

Nested as paymentMethod.cash when paymentMethod.type is CASH.

ParameterType / ConstraintExampleDescription
terminalId *string (UUID)3a2049fb-...Terminal identifier. Required.
tipinteger (int64)100Tip amount in cents. Optional.
clerkIdstring Β· max 8 chars001Clerk identifier. Optional.
🏠

billingDetail / shippingDetail / address

Optional objects nested in the charge or verification body. Used for AVS, receipts, and customer records. All sub-fields are optional unless noted.

billingDetail object

ParameterType / ConstraintExampleDescription
firstNamestringJohnCardholder first name.
lastNamestringSmithCardholder last name.
emailstringjohn@example.comCardholder email address.
phonestring5551234567Cardholder phone number.
addressobject β†’ addressBilling address. See address object below.

shippingDetail object

ParameterType / ConstraintExampleDescription
firstNamestringJohnRecipient first name.
lastNamestringSmithRecipient last name.
emailstringjohn@example.comRecipient email address.
phonestring5551234567Recipient phone number.
trackingNumberstring1Z999AA1...Shipping carrier tracking number.
addressobject β†’ addressShipping address. See address object below.

address object

ParameterType / ConstraintExampleDescription
line1string56 Sparks StStreet address line 1.
line2stringSuite 100Street address line 2. Optional.
citystringOttawaCity name.
statestringOntarioProvince or state name.
postalCodestringK5A 1S4Postal or ZIP code.
countrystring Β· 2-char ISO 3166CACountry code. CA = Canada, US = United States.
βš™οΈ

Operation Bodies

Request bodies for charge and refund management operations on existing transactions.

capture β€” POST /charges/{chargeId}/captures

ParameterType / ConstraintExampleDescription
amount *integer (int64)1299Amount to capture in cents. Must be less than or equal to the authorized amount.
statementDescriptorstring Β· max 23 charsOverride statement descriptor for this capture.
terminalobject β†’ terminalRequired for terminal captures. Must include terminalId.

increment β€” POST /charges/{chargeId}/increments

ParameterType / ConstraintExampleDescription
amount *integer (int64)1599New total authorized amount in cents. Must be greater than the current authorized amount.
terminalobject β†’ terminalRequired for terminal increments. Must include terminalId.

voidCapture β€” POST /charges/{chargeId}/voids

ParameterType / ConstraintExampleDescription
reason *string Β· enumREQUESTED_BY_CUSTOMERVoid reason. Values: REQUESTED_BY_CUSTOMER | REQUESTED_BY_MERCHANT | DUPLICATE | FRAUDULENT | ERROR_CORRECTION.
terminalobject β†’ terminalRequired for terminal voids. Must include terminalId.

voidRefund β€” POST /refunds/{refundId}/voids

ParameterType / ConstraintExampleDescription
reason *string Β· enumREQUESTED_BY_CUSTOMERVoid reason. Values: REQUESTED_BY_CUSTOMER | REQUESTED_BY_MERCHANT | DUPLICATE | FRAUDULENT | ERROR_CORRECTION.
terminalobject β†’ terminalRequired for terminal flows. Must include terminalId.

release β€” POST /charges/{chargeId}/releases

ParameterType / ConstraintExampleDescription
reason *string Β· enumREQUESTED_BY_CUSTOMERRelease reason. Values: REQUESTED_BY_CUSTOMER | REQUESTED_BY_MERCHANT | EXPIRED_UNCAPTURED_CHARGE | PARTIAL_APPROVAL | ERROR_CORRECTION | TIMEOUT.
terminalobject β†’ terminalRequired for terminal releases. Must include terminalId.