Transactions
The Transactions endpoints manage the full lifecycle of a PayPal payment — from creating an order through to authorisation, capture, refund, and void. Transactions support both immediate capture and a two-step authorise-then-capture flow.
Create Transaction
The starting point for any PayPal payment. Creates an order with the payer and amount details and returns a transaction UUID used in all subsequent operations.
x-vfi-api-idempotencyKey is required when billingAgreementId is included in the request body.
PayPal Fraud Id
A value you specify that uniquely identifies the transaction. If you're unsure whether a particular transaction succeeded, you can reattempt it with the same idempotency key without worrying about duplicating the transaction. Required when billingAgreementId is passed in the payload
Payment Provider contract
Intent of this transaction
CAPTUREPossible values: If an Order is paid using the "PayPal Wallet" the statement descriptor will appear in following format on the payer card statement: PAYPAL_prefix+(space)+merchant_descriptor+(space)+dynamicDescriptor. The PAYPAL prefix uses 8 characters. Only the first 22 characters will be displayed in the statement. For example, * The PayPal prefix toggle is PAYPAL * The merchant descriptor in the profile is Janes Gift * The soft descriptor is 800-123-1234 Then, the statement descriptor on the card is PAYPAL * Janes Gift 80.
The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.
Purchase description
Created
Transaction UUID from create transaction API
Transaction creation date (ISO-8601)
Transaction status
PayPal order identifier
Reference to the transaction for internal usage for instore
The URL where the customer should be redirected to approve the payment
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
POST /oidc/paypal-ecom/transactions HTTP/1.1
Host: emea.gsc.verifone.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: */*
Accept: */*
Content-Length: 1371
{
"paymentProviderContract": "text",
"amount": {
"value": 100,
"currencyCode": "EUR"
},
"intent": "CAPTURE",
"customer": {
"email": "text",
"payerId": "text",
"phoneNumber": {
"phoneType": "FAX",
"value": "text"
},
"birthDate": "2026-01-01",
"identification": {
"taxIdentificationNumber": "text",
"taxIdentificationType": "BR_CNPJ"
},
"address": {
"country": "text",
"postalCode": "text",
"countrySubdivision": "text",
"city": "text",
"addressLine2": "text",
"addressLine1": "text"
},
"firstName": "text",
"lastName": "text"
},
"applicationContext": {
"brandName": "text",
"locale": "text",
"landingPage": "BILLING",
"shippingPreference": "NoShipping",
"paymentPreference": "Any",
"shopperAuthorization": "TEL",
"returnUrl": "text",
"cancelUrl": "text"
},
"shipping": {
"address": {
"country": "text",
"postalCode": "text",
"countrySubdivision": "text",
"city": "text",
"addressLine2": "text",
"addressLine1": "text"
},
"fullName": "text"
},
"items": [
{
"name": "text",
"unitAmount": {
"currencyCode": "EUR",
"value": 100
},
"tax": {
"currencyCode": "EUR",
"value": 100
},
"quantity": 1,
"description": "text",
"sku": "text",
"category": "DIGITAL_GOODS"
}
],
"dynamicDescriptor": "text",
"merchantReference": "text",
"description": "text",
"detailedAmount": {
"discount": {
"value": 100,
"currencyCode": "EUR"
},
"shippingDiscount": {
"value": 100,
"currencyCode": "EUR"
},
"insurance": {
"value": 100,
"currencyCode": "EUR"
},
"handling": {
"value": 100,
"currencyCode": "EUR"
},
"shipping": {
"value": 100,
"currencyCode": "EUR"
}
}
}{
"id": "text",
"createdAt": "2026-01-01",
"status": "INITIATED",
"orderId": "text",
"instoreReference": "text",
"approvalUrl": "text"
}Update Transaction
Updates mutable fields on an existing transaction — such as intent, payer details, amount, shipping, or dynamic descriptor — prior to authorisation or capture.
Transaction UUID from create transaction API
Intent of this transaction
The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.
Purchase description
If an Order is paid using the "PayPal Wallet" the statement descriptor will appear in following format on the payer card statement: PAYPAL_prefix+(space)+merchant_descriptor+(space)+dynamicDescriptor. The PAYPAL prefix uses 8 characters. Only the first 22 characters will be displayed in the statement. For example, * The PayPal prefix toggle is PAYPAL * The merchant descriptor in the profile is Janes Gift * The soft descriptor is 800-123-1234 Then, the statement descriptor on the card is PAYPAL * Janes Gift 80.
No Content
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
PATCH /oidc/paypal-ecom/transactions/{id} HTTP/1.1
Host: emea.gsc.verifone.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: */*
Accept: */*
Content-Length: 939
{
"intent": "AUTHORIZE",
"payer": {
"email": "text",
"payerId": "text",
"phoneNumber": {
"phoneType": "FAX",
"value": "text"
},
"birthDate": "2026-01-01",
"identification": {
"taxIdentificationNumber": "text",
"taxIdentificationType": "BR_CNPJ"
},
"address": {
"country": "text",
"postalCode": "text",
"countrySubdivision": "text",
"city": "text",
"addressLine2": "text",
"addressLine1": "text"
},
"firstName": "text",
"lastName": "text"
},
"merchantReference": "text",
"description": "text",
"shipping": {
"address": {
"country": "text",
"postalCode": "text",
"countrySubdivision": "text",
"city": "text",
"addressLine2": "text",
"addressLine1": "text"
},
"fullName": "text"
},
"dynamicDescriptor": "text",
"amount": {
"value": 100,
"currencyCode": "EUR"
},
"detailedAmount": {
"discount": {
"value": 100,
"currencyCode": "EUR"
},
"shippingDiscount": {
"value": 100,
"currencyCode": "EUR"
},
"insurance": {
"value": 100,
"currencyCode": "EUR"
},
"handling": {
"value": 100,
"currencyCode": "EUR"
},
"shipping": {
"value": 100,
"currencyCode": "EUR"
}
}
}No content
Authorise Transaction
Authorises a previously created transaction, reserving funds on the payer's account. Use this when you want to separate authorisation from capture — for example, to verify funds before fulfilling an order.
How It Works
Store the transaction UUID from the Create Transaction response — it is required for all subsequent authorise, capture, void, and refund calls.
Transaction UUID from create transaction API
PayPal Fraud Id
A value you specify that uniquely identifies the transaction. If you're unsure whether a particular transaction succeeded, you can reattempt it with the same idempotency key without worrying about duplicating the transaction.
PayPal billing agreement id
The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.
Created
Transaction UUID from create transaction API
PayPal authorization identifier
Authorization creation date (ISO-8601)
Authorization expiration date (ISO-8601)
Transaction status
Reference to the transaction for internal usage for instore
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
POST /oidc/paypal-ecom/transactions/{id}/authorize HTTP/1.1
Host: emea.gsc.verifone.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: */*
Accept: */*
Content-Length: 49
{
"agreementId": "text",
"merchantReference": "text"
}{
"id": "text",
"authorizationId": "text",
"createdAt": "2026-01-01",
"expiresAt": "2026-01-01",
"status": "AUTHORISED",
"payer": {
"payerId": "text",
"name": {
"firstName": "text",
"lastName": "text"
},
"phoneNumber": {
"phoneType": "FAX",
"value": "text"
},
"email": "text",
"shippingAddress": {
"country": "text",
"postalCode": "text",
"countrySubdivision": "text",
"city": "text",
"addressLine2": "text",
"addressLine1": "text",
"fullName": "text"
},
"authorizationStatus": "text"
},
"instoreReference": "text"
}Capture Transaction
Captures funds on an authorised transaction, completing the payment. Also used for direct (non-pre-auth) captures when intent is set to CAPTURE during transaction creation.
Transaction UUID from create transaction API
PayPal Fraud Id
A value you specify that uniquely identifies the transaction. If you're unsure whether a particular transaction succeeded, you can reattempt it with the same idempotency key without worrying about duplicating the transaction.
An informational note about the capture. Appears in both the payer's transaction history and the emails that the payer receives.
Billing Agreement id
The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.
Created
Transaction UUID from create transaction API
PayPal capture identifier
Flag telling if capture is final or not
Reference to the transaction for internal usage for instore
Capture creation date (ISO-8601)
Transaction status
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
POST /oidc/paypal-ecom/transactions/{id}/capture HTTP/1.1
Host: emea.gsc.verifone.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: */*
Accept: */*
Content-Length: 114
{
"amount": {
"value": 100,
"currencyCode": "EUR"
},
"description": "text",
"agreementId": "text",
"merchantReference": "text"
}{
"id": "text",
"captureId": "text",
"isFinalCapture": true,
"instoreReference": "text",
"createdAt": "2026-01-01",
"status": "AUTHORISED",
"payer": {
"payerId": "text",
"name": {
"firstName": "text",
"lastName": "text"
},
"phoneNumber": {
"phoneType": "FAX",
"value": "text"
},
"email": "text",
"shippingAddress": {
"country": "text",
"postalCode": "text",
"countrySubdivision": "text",
"city": "text",
"addressLine2": "text",
"addressLine1": "text",
"fullName": "text"
},
"paymentStatus": "text"
}
}Refund Transaction
Refunds a captured transaction, in full or in part. The response contains a refund record that can be used for reconciliation.
Use the x-vfi-api-idempotencyKey header when issuing refunds to prevent duplicate refund submissions on network retries.
Transaction UUID from create transaction API
A value you specify that uniquely identifies the transaction. If you're unsure whether a particular transaction succeeded, you can reattempt it with the same idempotency key without worrying about duplicating the transaction.
The reason for the refund. Appears in both the payer's transaction history and the emails that the payer receives.
The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.
Created
Transaction UUID from create transaction API
Refund identifier
Refund creation date (ISO-8601)
Transaction status
Reference to the transaction for internal usage for instore
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
POST /oidc/paypal-ecom/transactions/{id}/refund HTTP/1.1
Host: emea.gsc.verifone.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: */*
Accept: */*
Content-Length: 88
{
"amount": {
"value": 100,
"currencyCode": "EUR"
},
"reason": "text",
"merchantReference": "text"
}{
"id": "text",
"refundId": "text",
"createdAt": "2026-01-01",
"status": "AUTHORISED",
"instoreReference": "text"
}Cancel Authorisation (Void)
Voids an authorised transaction that has not yet been captured, releasing the reserved funds back to the payer.
Transaction UUID from create transaction API
No Content
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
POST /oidc/paypal-ecom/transactions/{id}/void HTTP/1.1
Host: emea.gsc.verifone.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Intent Values
Dynamic Descriptor
The dynamicDescriptor field controls the soft descriptor shown on the payer's card statement. It is combined with the PayPal prefix and merchant descriptor in the following format:
Was this helpful?
