Exporting payments data

Export your payments data to Redshift from Hyperswitch

Exporting your payments data to Amazon Redshift enhances analytics by leveraging Redshift's high-performance query capabilities. This allows for efficient data analysis, reporting, and business intelligence there by deriving valuable insights

Architecture

Integration steps

  1. Prerequisite: You need to have an AWS account with redshift enabled. More details can be found here https://aws.amazon.com/redshift/

  2. You are required to create a new IAM role for Redshift use and provide Hyperswitch with the corresponding role ARN. This IAM role must be configured with S3 read permissions.\

    Example image of an IAM role created
  3. After sharing the ARN with Hyperswitch, We will share the S3 bucket & path that is to be synced for data along with providing access to the IAM role from where you will be able to get files from the S3

  4. Once the above step is done, you need to create the table schema on Redshift

    Post which you can proceed with the below

    (OR)

File format and paths specifications

  1. The files will be plain csv files with 1st row being a header

  2. The file path would look be s3://<bucket>/<merchant_id>/<version>/<payments>/<date>.csv

  3. There will be one csv file corresponding to each day upto 7 days. Updates to the payments data will be in-place

  4. Changes to file formats, content or likewise would change the version in the above path and would be communicated.

Data updation frequency & retention:

Data update schedule
6 hours frequency up to 7 days

Data retention on S3 folder

7 days

Type of data exposed

payments as per schema

Data storage location

us-east-1

Auto ingestion using Redshift

  1. Redshift supports ingesting csv data directly from S3 files which we’ll rely on.

  2. The ingestion to redshift would happen via a COPY job, this can be automated via the following options

    1. You can use the auto copy job if running a preview cluster

    2. Or the more mainstream lambda loader

Table creation/schema

Ingesting data from S3

The above query creates a temporary table to load all the csv data & then merges this with the main table while deduplicating based on payment_id

Self-Setup Guide for AWS

If you want to set up payment data export at your end using AWS infrastructure, you can implement your own data pipeline. This approach gives you full control over the data export process and allows customization based on your specific requirements.

Architecture Overview

The self-setup approach involves three main components:

  1. Lambda Function/Server: Queries payment data for the past 7 days from your Hyperswitch database

  2. Scheduled Execution: A cron job or EventBridge rule that invokes the Lambda with merchant-specific parameters

  3. S3 Storage: Stores the exported data with proper IAM role-based access control

Step 1: Create S3 Bucket and Configure Access

First, set up the S3 bucket where payment data will be stored:

Step 2: Create Lambda Function for Data Export

Create a Lambda function that handles the data export logic:

Function Requirements:

  • Query payment data from your Hyperswitch database for the past 7 days

  • Filter data based on merchant_id parameter received from the event

  • Generate CSV files with the same schema as mentioned in the table creation section

  • Upload the CSV files to S3 with the path format: s3://bucket/merchant_id/v1/payments/date.csv

  • Handle database connections, error handling, and logging

Environment Variables Needed:

  • Database connection details (host, name, user, password)

  • S3 bucket name

  • Any API endpoints if using Hyperswitch APIs instead of direct DB access

Deployment: You can deploy this Lambda function using AWS CLI, SAM, or the AWS Console with appropriate IAM permissions for S3 and database access.

Step 3: Set Up Scheduled Execution

Create an EventBridge rule to trigger the Lambda function periodically:

Step 4: Configure IAM Roles and Access

Create appropriate IAM roles for different components:

Lambda Execution Role:

Data Access Role (for consumers):

Step 5: Multi-Merchant Support

For handling multiple merchants, modify the EventBridge configuration:

Where merchant-targets.json contains:

Data Access and Security

Once the data is in S3, you can control access using:

  1. IAM Roles: Grant specific roles access to the S3 bucket

  2. Bucket Policies: Define fine-grained access controls

  3. Cross-Account Access: Allow trusted AWS accounts to access the data

Example Cross-Account Bucket Policy:

Monitoring and Alerting

Set up CloudWatch alarms to monitor the export process:

Cost Considerations

  • Lambda: Charges based on requests and execution time

  • S3: Storage and request costs

  • EventBridge: Minimal costs for rule executions

  • Data Transfer: Consider costs if accessing from different regions

This self-setup approach provides flexibility and control over your payment data export process while maintaining security and scalability.

Last updated

Was this helpful?