PayPal
Server-Side Implementation
Your integration may be impacted by upcoming certificate changes. Visit our best practices guide to learn more.
Creating transactions
payment_method_nonce
parameter in the Transaction: Sale
call on your server.Using device data
Below includes an example call with relevant PayPal parameters and device data:
- Ruby
result = gateway.transaction.sale(
:amount => "10.00",
:payment_method_nonce => params[:payment_method_nonce],
:device_data => params[:device_data],
:order_id => "Mapped to PayPal Invoice Number",
:options => {
:submit_for_settlement => true,
:paypal => {
:custom_field => "PayPal custom field",
:description => "Description for PayPal email receipt",
},
}
)
if result.success?
"Success ID: #{result.transaction.id}"
else
result.message
end
See the recurring transactions section below for more information on recurring transactions.
options-store_in_vault_on_success
option. If a customer_id is not included, a new customer will be created. If you want to include a PayPal Billing Agreement with the vaulted payment method, use the Checkout with Vault flow.Currency support
Transaction: Sale
call. We support all currencies that PayPal REST APIs support.For details on accepting foreign currencies with PayPal, see our PayPal account setup guide.
Shipping addresses
Transaction: Sale
call. The following fields are required when passing a shipping address for PayPal transactions:shipping-first_name
shipping-last_name
shipping-street_address
shipping-locality
shipping-postal_code
shipping-region
shipping-country_code_alpha2
For details on how to add a shipping address when creating a transaction, see the transaction reference full example. PayPal validates the shipping address, so it must follow the PayPal address conventions.
billing_address_id
and shipping_address_id
parameters.Seller Protection
By passing a shipping address, you may also be eligible for PayPal Seller Protection. You can check the status of Seller Protection as follows:
- Ruby
transaction = gateway.transaction.find("the_transaction_id")
transaction.paypal_details.seller_protection_status
# => "ELIGIBLE"
Settlement
Unlike most payment types that settle in batches, we capture PayPal funds immediately when you submit each transaction for settlement.
Capturing greater than authorization amount
You can't settle more than the authorized amount unless your industry and processor support settlement adjustment (settling a certain percentage over the authorized amount); contact us for details. If your capture amount exceeds the allowable limit you will receive the respective settlement response code.
Capturing multiple partial amounts against the same authorization
Transaction: Submit For Partial Settlement
.Recurring transactions
transaction_source
parameter with a value of recurring
if the customer is not present when you create a PayPal transaction from their Vault record. Typical examples are a recurring subscription or an automatic top-up charge.- Ruby
result = gateway.transaction.sale(
:amount => "1000.00",
:payment_method_token => "payment_method_token",
:transaction_source => "recurring",
:options => {
:submit_for_settlement => true,
}
)