Uber Pay is currently invite only for payment service providers and payment partners.
Get in touch to register your interest in using our APIs and we’ll reach out as soon as possible.
Uber is an ever-growing ecosystem of products and services for people around the world. We want to empower people to pay and get paid with their preferred payment method.
If you are a Payment Service Provider (PSP) or payment partner, you can now integrate with Uber by leveraging Uber Pay APIs.
By building a single API integration with Uber Pay, you will be able to:
Uber Pay is both:
When you integrate with Uber Pay, you will need to implement a few endpoints on your end for Uber apps to call and initiate the correct flow (e.g. payment method onboarding, money movement, refund, etc).
Uber Pay defines two sets of APIs for PSP Partners to implement:
Allows Uber to initiate payment transactions, check transaction statuses, initiate refunds and query payment method balance.
API | Description |
---|---|
Charge | Initiate money movement |
Capture | Capture payment on an authorized charge |
Cancel | Cancel an authorized charge |
Find Transaction | Retrieve the current status of a transaction from Partner's system |
Init Refund | Initiate customer refund |
Get Balance | Get payment instrument's available balance |
Allows Uber to create payouts.
API | Description |
---|---|
Payout | Create a payout |
Payment method onboarding (via oAuth 2.0 protocol) is available and recommended for improving both the user experience and conversion rate at checkout.
When Partner OAuth2 API integration is not an option, Uber Pay offers the possibility to use a 2FA experience leveraging a webview provided by PSP Partner to authorize the payment every time during checkout.
API | Description |
---|---|
Authorize | Authorization web page for users to grant Uber access |
Create Token | OAuth 2 endpoint allowing creation of access and refresh tokens |
We already have an API, can’t Uber integrate with it directly?
Uber does integrate directly with Partner’s API, though our engineering teams can only work on so many integrations every year. One of the reasons Uber Pay was born is to allow for Partners to join the Uber ecosystem quickly and more independently.
How flexible is the Uber Pay API?
The Uber Pay integration model standardizes the flow of data between Uber and PSPs. Working with many partners, we have designed our APIs to allow for some flexibility. As a rule of thumb, though, Uber will not be able to adjust said data flows and structures to fit a PSP’s existing infrastructure and/or APIs.
How often will I need to update my integration?
As the Uber Pay APIs evolve, new capabilities will be added that may require changes on the PSP’s end. We will always prioritize supporting backward compatibility. If a breaking change will be needed, we will give ample notice, and do our best to minimize the impact of the work on your end to implement the required changes.
How long does it take to launch a new payment method via Uber Pay?
The bulk of the work will revolve around the PSP building the necessary endpoints following the Uber Pay specification. Once those are in place, and we have validated the integration works, launching a payment method is usually a matter of adding some configurations, testing the flow, and following a gradual rollout plan. Once the first payment method goes live, any subsequent ones will take significantly less.
After you sign up, Uber Pay will configure your newly created app. For us to do so, you’ll need to provide the following:
/charge
endpoint will be called ${BASE_URL}/charge
.In addition to your account, Uber Pay will configure and share the following attributes:
All requests from Uberpay shall have a signature header which is a RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. Example below shows how a charge request from Uber looks like:
curl -X POST \
https://uber.partner.com/v1/payments/charge \
-H 'Accept-Language: pt-BR' \
-H 'Date: Sat, 08 Jun 2019 20:51:35 GMT' \
-H 'Digest: SHA-256=XLnQeHxHWlOkXmqcQaS57rSVfDBUTSUFRpvqZfLxBU0=' \
-H 'Signature: keyId="rsa-key", algorithm="rsa-sha256",
headers="(request-target) host date digest",
signature="dMpg9QKPxwP5l8O6Q7OFC2vNPoJucKga1WKbvPfMY52pi20Hti/mk017OicAuYRfpH9rBsq/6g2wK0m1qqgVNY0UUvIGIrMJd9ii55YacTL/4HAv5CLPFcSDWqFUsA0W8HvvlEk6YgVD052obT6KS0Zd3qJfRJ+qS7KHkSLKAw8="'
-H 'X-Idempotency-Key: c900d4dd-7070-4e0b-9323-8f24cfde0490' \
-H 'Content-Type: application/json' \
-d "{\"destination\": {\"owner_id\": \"dest_owner_id\",\"id\": \"dest_id\",\"type\": \"Account\"},\"source\": {\"owner_id\": \"source_owner_id\",\"id\": \"source_id\",\"type\": \"Account\"},\"amount\": {\"value\": 100000,\"currency\": \"BRL\"},\"description\": \"I'm a deposit in sandbox.\",\"country_iso2\": \"BR\",\"funding_method\": \"BOLETO\",\"initiated_at\": \"2019-06-08T20:51:35Z\",\"session_id\": \"8b31b7f4-3542-4391-817c-d496ce84a7ae\",\"return_url\": \"uber:\/\/payments\/deposit?correlation_id=c900d4dd-7070-4e0b-9323-8f24cfde0490\",\"destination_owner\": {\"type\": \"Customer\",\"id\": \"a66b36d5-887c-4e7c-9edb-9fcbef108e83\",\"uri\": \"\/\/payments\/customers\/a66b36d5-887c-4e7c-9edb-9fcbef108e83\",\"details\": {\"mobile\": \"+123456788\",\"firstname\": \"John\",\"lastname\": \"Doe\"}},\"payment_data\": [{\"type\": \"meal_voucher_payment_data\",\"meal_voucher_merchant_id\": \"15678\"}],\"capture_method\": \"AUTOMATIC\"}"
You can test your requests before you send them to Uber with the OpenSSL cmd-line. For example:
openssl dgst -sha256 -verify {PUBLIC_KEY_FILE} -signature {SIGNATURE_FILE} {DECODED_HEADERS_FILE}
For example, the SIGNATURE_FILE looks like this:
echo dMpg9QKPxwP5l8O6Q7OFC2vNPoJucKga1WKbvPfMY52pi20Hti/mk017OicAuYRfpH9rBsq/6g2wK0m1qqgVNY0UUvIGIrMJd9ii55YacTL/4HAv5CLPFcSDWqFUsA0W8HvvlEk6YgVD052obT6KS0Zd3qJfRJ+qS7KHkSLKAw8= | base64 -D
(request-target): post /v1/payments/charge
host: uber.partner.com
date: Sat, 08 Jun 2019 20:51:35 GMT
digest: SHA-256=XLnQeHxHWlOkXmqcQaS57rSVfDBUTSUFRpvqZfLxBU0=
Note that for the openssl validation command to work, do not provide a line ending character at the end of DECODED_HEADERS_FILE or SIGNATURE_FILE.
You should only include :{PORT} in case of non-standard ports for the given scheme as we show in the example above. For example, since port 443 is the default port for the https scheme, we don’t include it in the resulting host header text in the above example with URL https://uber.partner.com/v1/payments/charge. If the URL is https://uber.partner.com:9443/v1/payments/charge, then you should provide the host header with uber.partner.com:9443.
We perform signature validation based on the order of the header items are important for the signature validation. Therefore, you should provide it as (request-target), host, date, digest.
You shall receive a public key via email or any of our designated communication channels.
Partner Payment API contains the payment endpoints that the PSP Partner needs to implement in order to integrate with Uber Pay system.
Charge
API allows Uber Pay to initiate money movement with PSP Partners.
A charge can be used to either authorize a payment and capture it later, or to capture it immediately without an authorization step.
CONFIRMED
or REJECTED
state and with a psp_reference
.
In case of a REJECTED
transaction, partner should indicate the reason in state.detail
.PENDING
state.
Partner should call the chargeCallback
endpoint once payment is processed.
See the callbacks section below.WebViewUserInputAction
in response actions
.
State must be PENDING
and WebViewUserInputAction
must include a URL for user authorization.
Partner should call the chargeCallback
endpoint once the payment is processed. See the callbacks section below.capture_method
is AUTOMATIC
, partner automatically captures funds when the user authorizes the payment. Processing can happen either synchronously or asynchronously.capture_method
is MANUAL
, partner must process the payment request immediately.CONFIRMED
response state, charge will move to AUTHORIZED
state.
Partner must then wait for Uber's capture call for moving funds.REJECTED
response state, charge will move to REJECTED
state.
A charge in AUTHORIZED
state will move to CANCELLED
state if is cancelled explicitly, or if it expires after 72h.For the partners who support Partner OAuth2 API, API requests include OAuth2 access token in Authorization header.
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
Accept-Language required | string User-preferred language as a BCP 47 code, for example |
X-Idempotency-Key required | string (IdempotencyKey) This header must be treated as the idempotency key. When multiple requests with the same
|
required | any (Authorization) The type of authorization associated with this money movement. All future types are guaranteed to have a type field. |
id required | string Transaction id generated by Uber Pay. |
session_id | string Deprecated Uber’s client session id such as web session or mobile session. |
required | object (SourceAccount) Source account is an internal Uber reference for Partner's settlement account |
required | object (DestinationAccount) Destination account identifying an Uber customer. |
required | object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. |
description required | string (TransactionDescription) <= 256 characters ^[A-Za-z0-9-_ ]*$ Alphanumeric characters and |
country_iso2 required | string The country in which this transaction is being created. In ISO3166 format. |
funding_method required | string The payment method to use |
initiated_at required | string <date-time> Transaction initiation time in ISO 8601 format. |
return_url required | string The URL to which to redirect the user agent at the end of the flow, in case a user input action is needed. It may be an HTTPs scheme or a mobile deep link. |
capture_method required | string Enum: "AUTOMATIC" "MANUAL"
|
object (AccountOwner) Details about the owner of the destination account. Contains information you need to complete payment for the funding method and country in the request. | |
Array of MealVoucherPaymentData (object) or PointConversionPaymentData (object) or OrderPaymentData (object) (PaymentDataArray) Additional payment data for specific use cases. All For "Meal Voucher" balance requests there will be one object with |
required | object (ChargeState) Status of the money movement request. If the partner implementation:
|
merchant_reference | string Deprecated Payment transaction reference ID on partner side. Use |
psp_reference | string Payment transaction reference ID on partner side. |
object Deprecated Additional metadata about the transaction. String key-value pairs. | |
Array of WebViewUserInputAction (object) (Actions) If an action is needed on the Uber side. For example, if a user input is needed,
include a All Action types are guaranteed to have a |
{- "authorization": {
- "type": "web_view_authorization"
}, - "id": "string",
- "session_id": "string",
- "amount": {
- "currency": "BRL",
- "value": 1000000
}, - "description": "string",
- "country_iso2": "string",
- "funding_method": "string",
- "initiated_at": "2019-08-24T14:15:22Z",
- "return_url": "string",
- "capture_method": "AUTOMATIC",
- "destination_owner": {
- "id": "string",
- "type": "Customer",
- "details": {
- "mobile": "string",
- "first_name": "string",
- "last_name": "string"
}
}, - "payment_data": [
- {
- "type": "meal_voucher_payment_data",
- "meal_voucher_merchant_id": "string",
- "meal_voucher_merchant_secret": "string"
}
]
}
{- "state": {
- "value": "CONFIRMED"
}, - "psp_reference": "345s6df5678sdf"
}
{- "state": {
- "value": "CONFIRMED",
- "detail": "BANK_SOFT_ERROR"
}, - "psp_reference": "string"
}
Capture
API allows Uber Pay to capture payment on a previously authorized charge.
AUTHORIZED
to CONFIRMED
state.
An unsuccessful capture will move the charge to REJECTED
state.For the partners who support Partner OAuth2 API, API requests include OAuth2 access token in Authorization header.
id | string Transaction id generated by Uber Pay in charge step. |
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
Accept-Language required | string User-preferred language as a BCP 47 code, for example |
X-Idempotency-Key required | string (IdempotencyKey) This header must be treated as the idempotency key. When multiple requests with the same
|
psp_reference | string Transaction id generated by Partner during charge. |
required | object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. |
{- "psp_reference": "string",
- "amount_to_capture": {
- "currency": "BRL",
- "value": 1000000
}
}
{- "detail": "EXCEEDS_CAPTURE_LIMIT",
- "error_description": "string"
}
Cancel
API allows Uber Pay to cancel a previously authorized charge.
CANCELLED
state.For the partners who support Partner OAuth2 API, API requests include OAuth2 access token in Authorization header.
id | string Transaction id generated by Uber Pay in charge step. |
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
Accept-Language required | string User-preferred language as a BCP 47 code, for example |
X-Idempotency-Key required | string (IdempotencyKey) This header must be treated as the idempotency key. When multiple requests with the same
|
psp_reference | string Transaction id generated by Partner during charge. |
{- "psp_reference": "string"
}
{- "detail": "VALIDATION_ERROR",
- "error_description": "string"
}
Retrieve the current status of a transaction (charge or refund) from the Partner's system.
id required | string Transaction id generated by Uber Pay. For refunds it will be refund ID. |
merchant_reference | string Transaction reference in Partner’s system. This field is populated whenever it is present in our system. In some cases, e.g. charge/refund request timed out and we weren't able to retrieve merchant_reference, this field is not present. |
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
id required | string Original Uber transaction id |
merchant_reference required | string Original transaction reference in Partner’s system. |
status required | string Enum: "PENDING" "CONFIRMED" "REJECTED" "AUTHORIZED"
|
confirmed_at | string <date-time> Payment confirmed date time in Partner’s system with ISO 8601 format. This field must be present if the status is SUCCEEDED. |
object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. |
curl -X GET \ https://uber.partner.com/v1/payments/find-transaction?id=cGdfMGE3OTA1OTItYTIyNi0zY2EyLWFjZjEtNzE0YTAwMzAxMmQz \ -H 'Date: Sat, 08 Jun 2019 20:51:35 GMT' \ -H 'Digest: SHA-256=FkJ3miKx7I099a8n7q3Kmn7P8/dFS1Ebx5POQd185PM=' \ -H 'Signature: keyId="rsa-key", algorithm="rsa-sha256", \ headers="(request-target) host date digest", \ signature="INCLUDED_SIGNATURE"'
{- "id": "cGdfMGE3OTA1OTItYTIyNi0zY2EyLWFjZjEtNzE0YTAwMzAxMmQz",
- "merchant_reference": "599f4164-4417-4361-9d11-1d9d8b4b9096",
- "status": "SUCCEEDED",
- "confirmed_at": "2020-04-11T12:00:00Z"
}
Uber Pay calls this API to initiate a customer refund. Partner can
SUCCEEDED
or FAILED
status.PENDING
status and call Uber Pay's updateRefund
callback API.For the partners who support Partner OAuth2 API, API requests include OAuth2 access token in Authorization header.
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
X-Idempotency-Key required | string (IdempotencyKey) This header must be treated as the idempotency key. When multiple requests with the same
|
id required | string Refund ID |
original_transaction_id required | string Original transaction ID in Uber system |
original_merchant_reference required | string Original transaction reference in a Partner’s system |
required | object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. |
description | string (TransactionDescription) <= 256 characters ^[A-Za-z0-9-_ ]*$ Alphanumeric characters and |
order_refund_data | string Item-level refund related data for the order for the same transaction
in the |
status required | string Enum: "CONFIRMED" "PENDING" "REJECTED"
|
merchant_reference required | string Refund transaction reference in Partner’s system |
failed_reason | string Use only for failed refunds |
{- "id": "string",
- "original_transaction_id": "string",
- "original_merchant_reference": "string",
- "amount": {
- "currency": "BRL",
- "value": 1000000
}, - "description": "string",
- "order_refund_data": "string"
}
{- "status": "SUCCEEDED",
- "merchant_reference": "ref123"
}
{- "status": "CONFIRMED",
- "merchant_reference": "string",
- "failed_reason": "string"
}
Get payment instrument's available balance.
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
account_id required | string Corresponds to the |
funding_method required | string Payment method code |
Array of MealVoucherPaymentData (object) or PointConversionPaymentData (object) or OrderPaymentData (object) (PaymentDataArray) Additional payment data for specific use cases. All For "Meal Voucher" balance requests there will be one object with |
required | object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. |
object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. | |
Array of objects (ItemizedBalance) An array of all the balances with type. These balances represent individual balances per wallet or purse, if a partner supports multiple purses. Each entry corresponds to a different balance, and must have a unique |
{- "account_id": "string",
- "funding_method": "string",
- "payment_data": [
- {
- "type": "meal_voucher_payment_data",
- "meal_voucher_merchant_id": "string",
- "meal_voucher_merchant_secret": "string"
}
]
}
{- "available_balance": {
- "value": 100000,
- "currency": "BRL"
}
}
Partner Payout API contains the payout endpoints that the PSP Partner needs to implement in order to integrate with Uber Pay system.
Payout
API allows Uber Pay to create a payout with PSP Partners.
CONFIRMED
or PENDING
state.PENDING
state.
The partner should then use Finalize payout
endpoint once the payout is processed. See the callbacks section below.CONFIRMED
state.REJECTED
state.Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
Accept-Language required | string User-preferred language as a BCP 47 code, for example |
X-Idempotency-Key required | string (IdempotencyKey) This header must be treated as the idempotency key. When multiple requests with the same
|
id required | string Transaction ID generated by Uber Pay. |
required | object (PayerAccount) Payer account is an internal Uber reference for Partner's settlement account |
required | object (CurrencyAmount) Value of currency, ISO4217. The value is in E5 format. For example, 10 BRL is: {"value": 1000000, "currency": "BRL"}. |
description required | string (TransactionDescription) <= 256 characters ^[A-Za-z0-9-_ ]*$ Alphanumeric characters and |
country_iso2 required | string The country in which the payout is being created in ISO3166 format. |
funding_method required | string The payment method to use. |
initiated_at required | string <date-time> Payout initiation time in ISO 8601 format. |
required | object (Payee) Payee information. Contains information required to process the payout. |
required | object (PayoutState) Status of the payout. If the Partner implementation:
|
psp_reference required | string Transaction reference ID in Partner’s system. |
{- "id": "string",
- "amount": {
- "currency": "BRL",
- "value": 1000000
}, - "description": "string",
- "country_iso2": "string",
- "funding_method": "string",
- "initiated_at": "2019-08-24T14:15:22Z",
- "payee": {
- "account": {
- "type": "MOBILE_WALLET",
- "account_id": "string"
}, - "name": "string",
- "local_name": "string",
- "date_of_birth": "string",
- "address": {
- "address": "string",
- "state_province": "string",
- "city": "string",
- "post_code": "string"
}, - "document": {
- "type": "RUT",
- "id": "string"
}
}
}
{- "state": {
- "value": "CONFIRMED"
}, - "psp_reference": "345s6df5678sdf"
}
{- "state": {
- "value": "CONFIRMED",
- "detail": "VALIDATION_ERROR"
}, - "psp_reference": "string"
}
Partner OAuth2 API contains standard RFC6749 OAuth2 endpoints Uber Pay Partner needs to implement.
OAuth 2 token endpoint as described in RFC6749 Section 3.2. The token endpoint provides:
refresh_token
by providing authorization_code
.
Uber Pay gets authorization code at the end of authorization flow (when partner redirects user at the end of GET /authorize flow).
Refresh tokens are expected to have longer validity period.access_token
by providing refresh_token
.
Uber Pay exchanges long-lived refresh_token it holds with a short-lived access_token
.In case of an invalid_grant
error, Uber Pay re-initiates authorization flow.
Content-Type required | string The Content-Type header should always be set to |
Date required | string Date in GMT as per RFC7231 Section 7.1.1.1 |
Digest required | string Cryptographic hash of the request body as per RFC3230 using SHA256 algorithm. See also RFC5843. |
Signature required | string RSA signature of request-target, Date and Digest headers as per Draft Cavage HTTP Signatures. Section 4.1.1. See uberpay-http-signature-auth. |
client_id required | string Client ID provided by Partner to Uber Pay |
client_secret required | string Client secret providede by Partner to Uber Pay. See RFC6749 Section 2.3.1. |
grant_type required | string Value: "authorization_code" Use |
code required | string Authorization code. Uber Pay receives uses the authorization code obtained at the end of authorization flow. |
redirect_uri required | string Identical to the |
refresh_token required | string Refresh token used to obtain access token. Partner implementation must not permit use of this token in other endpoints (charge, refund etc.) |
token_type required | string Value: "bearer" |
scope | string Authorized scope according to the requested scopes in earlier |
required | Array of objects (AuthorizedAccount) As defined in OAuth 2.0 Rich Authorization Requests. Section 3.4.1. |
expires_in | string Time before expiration in seconds |
{- "client_id": "string",
- "client_secret": "string",
- "grant_type": "authorization_code",
- "code": "string",
- "redirect_uri": "string"
}
{- "refresh_token": "string",
- "token_type": "bearer",
- "scope": "string",
- "authorization_details": [
- {
- "type": "authorized_account",
- "account_id": "string",
- "fingerprint": "string",
- "display_name": "string"
}
], - "expires_in": "string"
}
As part of the integration with Uber Pay, Uber's partners need to be onboarded to Uber's settlement platform for an automatic reconciliation process.
As part of the integration, we ask you to set up an SFTP folder and safely share its credentials with Uber.
As payments go through your systems, you will generate and place settlement files following an agreed upon format on a given cadence (e.g. weekly).
Once granted access, Uber's systems will be able to automatically fetch the files and ingest them into the settlement platform.