Skip to main content

Paypal Transaction

This page contains the setup guide and reference information for the Paypal Transaction source connector.

Prerequisites

The Paypal Transaction API is used to get the history of transactions for a PayPal account.

Setup guide

Step 1: Set up Paypal Transaction

In order to get an Client ID and Secret please go to this page and follow the instructions. After registration you may find your Client ID and Secret here.

note

Our Paypal Transactions Source Connector does not support OAuth at this time due to limitations outside of our control. If OAuth for Paypal Transactions is critical to your business, please reach out to us to discuss how we may be able to partner on this effort.

Step 2: Set up the Paypal Transaction connector in Airbyte

For Airbyte Cloud:

  1. Log into your Airbyte Cloud account.
  2. In the left navigation bar, click Sources. In the top-right corner, click +new source.
  3. On the Set up the source page, enter the name for the Paypal Transaction connector and select Paypal Transaction from the Source type dropdown.
  4. Enter your client id
  5. Enter your secret
  6. Choose if your account is sandbox
  7. Enter the date you want your sync to start from
  8. Click Set up source.

For Airbyte Open Source:

  1. Navigate to the Airbyte Open Source dashboard
  2. Set the name for your source
  3. Enter your client id
  4. Enter your secret
  5. Choose if your account is sandbox
  6. Enter the date you want your sync to start from
  7. Click Set up source

Supported sync modes

The PayPal Transaction source connector supports the following sync modes:

FeatureSupported?
Full Refresh SyncYes
Incremental - Append SyncYes
NamespacesNo

Supported Streams

This Source is capable of syncing the following core Streams:

Performance considerations

Paypal transaction API has some limits

  • start_date_min = 3 years, API call lists transaction for the previous three years.
  • start_date_max = 1.5 days, it takes a maximum of three hours for executed transactions to appear in the list transactions call. It is set to 1.5 days by default based on experience, otherwise API throw an error.
  • stream_slice_period = 1 day, the maximum supported date range is 31 days.
  • records_per_request = 10000, the maximum number of records in a single request.
  • page_size = 500, the maximum page size is 500.
  • requests_per_minute = 30, maximum limit is 50 requests per minute from IP address to all endpoint

Transactions sync is performed with default stream_slice_period = 1 day, it means that there will be 1 request for each day between start_date and now or end_date. if start_date is greater then start_date_max. Balances sync is similarly performed with default stream_slice_period = 1 day, but it will do additional request for the end_date of the sync now.

Data type map

Integration TypeAirbyte Type
stringstring
numbernumber
arrayarray
objectobject

Build instructions

Build your own connector image

This connector is built using our dynamic built process. The base image used to build it is defined within the metadata.yaml file under the connectorBuildOptions. The build logic is defined using Dagger here. It does not rely on a Dockerfile.

If you would like to patch our connector and build your own a simple approach would be:

  1. Create your own Dockerfile based on the latest version of the connector image.
FROM airbyte/source-paypal-transaction:latest

COPY . ./airbyte/integration_code
RUN pip install ./airbyte/integration_code

# The entrypoint and default env vars are already set in the base image
# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

Please use this as an example. This is not optimized.

  1. Build your image:
docker build -t airbyte/source-paypal-transaction:dev .
# Running the spec command against your patched connector
docker run airbyte/source-paypal-transaction:dev spec

Customizing our build process

When contributing on our connector you might need to customize the build process to add a system dependency or set an env var. You can customize our build process by adding a build_customization.py module to your connector. This module should contain a pre_connector_install and post_connector_install async function that will mutate the base image and the connector container respectively. It will be imported at runtime by our build process and the functions will be called if they exist.

Here is an example of a build_customization.py module:

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
# Feel free to check the dagger documentation for more information on the Container object and its methods.
# https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/
from dagger import Container


async def pre_connector_install(base_image_container: Container) -> Container:
return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")

async def post_connector_install(connector_container: Container) -> Container:
return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")

Changelog

VersionDatePull RequestSubject
2.1.12023-10-1331377Use our base image and remove Dockerfile
2.1.02023-08-1429223Migrate Python CDK to Low Code schema
2.0.02023-07-0527916Update Balances schema
1.0.02023-07-0327968mark Client ID and Client Secret as required fields
0.1.132023-02-2022916Specified date formatting in specification
0.1.122023-02-1823211Fix error handler
0.1.112023-01-2722019Set AvailabilityStrategy for streams explicitly to None
0.1.102022-09-0417554Made the spec and source config to be consistent
0.1.92022-08-1815741Removed OAuth2.0 option
0.1.82022-07-2515000Added support of OAuth2.0 authentication, fixed bug when normalization couldn't handle nested cursor field and primary key
0.1.72022-07-1814804Added RESULTSET_TOO_LARGE error validation
0.1.62022-06-1013682Updated paypal transaction schema
0.1.52022-04-2712335Added fixtures to mock time.sleep for connectors that explicitly sleep
0.1.42021-12-229034Updated connector fields title/description
0.1.32021-12-168580Added more logs during check connection stage
0.1.22021-11-087499Removed base-python dependencies
0.1.12021-08-035155Fixed start_date_min limit
0.1.02021-06-104240PayPal Transaction Search API