File uploads
Upload files to Rainforest for processes such as merchant onboarding and disputing chargebacks
Rainforest supports uploading files for the following processes:
When using the components, Rainforest handles the file upload process for you. But if you're integrating with the Rainforest API, then this guide will explain how to upload files through a direct API integration.
Initiate the file upload process
Create file upload config
Create a file upload config specifying the file name and the purpose of the file upload.
Merchant onboarding
If the file is for the Needs Information process, then set the type
corresponding to the underwriting review reason the file is for.
File types
Type | Underwriting Review Reasons |
---|---|
BUSINESS_VERIFICATION | business_verification |
DEPOSIT_METHOD_VERIFICATION | deposit_method_1 and deposit_method_2 |
FINANCIAL_REVIEW | financial_1 and financial_2 |
Chargebacks
If the file is for responding to a chargeback dispute and uploading chargeback evidence, the set the type
to CHARGEBACK_EVIDENCE
and pass the chargeback_id
the file is for.
Pre-signed payload
The file upload config response returns a pre-signed payload in the presigned_post_data
field that you'll need to upload the file in the next step.
Upload the file
Supported file types
Rainforest supports the following file types:
- JPEG
- PNG
- TIFF
The file cannot be protected and must be visible to Rainforest without any additional steps, such as a password.
Post the file
Once the file upload config is created and the pre-signed payload is received, the file can be uploaded by posting the pre-signed payload and file data as multipart/form-data
to the following endpoint, respective of the environment.
File endpoint
Environment | Endpoint |
---|---|
Sandbox | POST https://api.sandbox.rainforestpay.com/v1/file_uploads/simulate |
Production | POST https://upload.rainforestpay.com |
Example of Form Data
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="key"
fic_2tJYp6L4rl1wu2yXsIhImk51Uzp
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-algorithm"
AWS4-HMAC-SHA256
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-credential"
ASIAV23BBR56NYZUNARN/20250220/us-east-2/s3/aws4_request
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-date"
20250220T171703Z
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-security-token"
IQoJb3JpZ2luX2VjEJn//////////wEaCXVzLWVhc3QtMiJHMEUCIQCaw6mRzse70F12j3QHuFU///yLAfy0GXKtCqaC+WEm7QIgHiU4tgPWF3FdTgloPMb0Jbvqi0XTgSIL6C5+XwwQUcgqgQUIwv//////////ARACGgw0MDEyNDYwOTcyNzYiDFmWr6NzafDVslEpNyrVBI2PXlkT6kAnzhve7D8/QCfbTJM4VYCzXELZtKvwPnPLyJzZjf6DESFRyO2AFIZsVEqDZLdGIOLGcWFw4Uoei8+F5SK8ho4dK+9WcaMfLda/xosGyIrn0IhyxDWbMRc0gnYOteecK7T82oj9kbEch1Hds4zZNv9By+EOtvIDCIPInfhLiNPDf9/ojzUKSSqIxmrguYol3QyDFaXeibllgRMFpjANaODMUkggy0i9VB9HHP4bAhQz3tNzNYJp0suAGc3hjDE+xDNprcbjV9+CrPsdlS5xxv299dcehYuqFyfWuh7wXC7aInyKNx1iOWtLcqriNxEALDzN/IO5EIDfnAn8GXBTc17aLVOvMv7vIQq2Or1w7HjFFv0flJIIlJrz8+CITdS7W+b+K2GbP1PKE4H9gul96xmWY4HFuwb4O6lL6NZfiv2fjCNpmqG59fWw1+kpNFO0qYMSam3oaULo7ksHmvDwqL9mKbNgQkghL/j7MDfRT5+ISfKoIiQDO8hf5qoWC1TYTQshSyzqUVcBl+0F0JFFNd4m7w4KzwMwuPCW5L13acF/xfnAv681mJpp6RzAKD/FsS72Xz4++PL30HaxxHpb1MhudG65XQKXyRgxoLBjxzOgcYHLxo1BfeGTBfj20N5JV/4RgLVnsm3CVisX2pbgTcX2RV6l4fL1DlpORAD6/pksPJsdPxxCR0ZBYtEIdJrkKenwqnKfj2mvZu/ApqA/L997xcvYxKoagkb8YixVzpSHawgbNld3ybjBWN4w6gsNEjPTCjNKX2oqEZEfptXxdjCPx929BjqaAWlY8QsdeW7le60K9AUMnc4xBwCIRlUB77ez/UW0AYuQWWYcKG6kb0mtDJ6J+wjzMFGGYYhsw2+ROEJb6QxJjr5cq2YEmHiQ5vnMRG27ubX3lus/MIPWpNZRq5On+Cv7gobuBgMYUXM9HukcVHR/wRrWEtaTjpPhs4Rh8ZEYahkQ0ZjCFdlEUxA3XMqBQ/F/YBZs26Z3fRVRxzQ=
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyNS0wMi0yMFQxOToxNzowMy44MDdaIiwiY29uZGl0aW9ucyI6W1sic3RhcnRzLXdpdGgiLCIkeC1hbXotbWV0YS1vcmlnaW5hbGZpbGVuYW1lIiwiIl0sWyJzdGFydHMtd2l0aCIsIiR4LWFtei1tZXRhLWZpbGV1cGxvYWRjb25maWdpZCIsIiJdLFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMjUwMDAwMDBdLHsiYnVja2V0IjoicmFpbmZvcmVzdC11cGxvYWQtZHJvcC1kZXYtdXMtZWFzdC0yIn0sWyJlcSIsIiRrZXkiLCJmaWNfMnRKWXA2TDRybDF3dTJ5WHNJaEltazUxVXpwIl0seyJ4LWFtei1jcmVkZW50aWFsIjoiQVNJQVYyM0JCUjU2TllaVU5BUk4vMjAyNTAyMjAvdXMtZWFzdC0yL3MzL2F3czRfcmVxdWVzdCJ9LHsieC1hbXotc2VjdXJpdHktdG9rZW4iOiJJUW9KYjNKcFoybHVYMlZqRUpuLy8vLy8vLy8vL3dFYUNYVnpMV1ZoYzNRdE1pSkhNRVVDSVFDYXc2bVJ6c2U3MEYxMmozUUh1RlUvLy95TEFmeTBHWEt0Q3FhQytXRW03UUlnSGlVNHRnUFdGM0ZkVGdsb1BNYjBKYnZxaTBYVGdTSUw2QzUrWHd3UVVjZ3FnUVVJd3YvLy8vLy8vLy8vQVJBQ0dndzBNREV5TkRZd09UY3lOellpREZtV3I2TnphZkRWc2xFcE55clZCSTJQWGxrVDZrQW56aHZlN0Q4L1FDZmJUSk00VllDelhFTFp0S3Z3UG5QTHlKelpqZjZERVNGUnlPMkFGSVpzVkVxRFpMZEdJT0xHY1dGdzRVb2VpOCtGNVNLOGhvNGRLKzlXY2FNZkxkYS94b3NHeUlybjBJaHl4RFdiTVJjMGduWU90ZWVjSzdUODJvajlrYkVjaDFIZHM0elpOdjlCeStFT3R2SURDSVBJbmZoTGlOUERmOS9vanpVS1NTcUl4bXJndVlvbDNReURGYVhlaWJsbGdSTUZwakFOYU9ETVVrZ2d5MGk5VkI5SEhQNGJBaFF6M3ROek5ZSnAwc3VBR2MzaGpERSt4RE5wcmNialY5K0NyUHNkbFM1eHh2Mjk5ZGNlaFl1cUZ5Zld1aDd3WEM3YUlueUtOeDFpT1d0TGNxcmlOeEVBTER6Ti9JTzVFSURmbkFuOEdYQlRjMTdhTFZPdk12N3ZJUXEyT3IxdzdIakZGdjBmbEpJSWxKcno4K0NJVGRTN1crYitLMkdiUDFQS0U0SDlndWw5NnhtV1k0SEZ1d2I0TzZsTDZOWmZpdjJmakNOcG1xRzU5Zld3MStrcE5GTzBxWU1TYW0zb2FVTG83a3NIbXZEd3FMOW1LYk5nUWtnaEwvajdNRGZSVDUrSVNmS29JaVFETzhoZjVxb1dDMVRZVFFzaFN5enFVVmNCbCswRjBKRkZOZDRtN3c0S3p3TXd1UENXNUwxM2FjRi94Zm5BdjY4MW1KcHA2UnpBS0QvRnNTNzJYejQrK1BMMzBIYXh4SHBiMU1odWRHNjVYUUtYeVJneG9MQmp4ek9nY1lITHhvMUJmZUdUQmZqMjBONUpWLzRSZ0xWbnNtM0NWaXNYMnBiZ1RjWDJSVjZsNGZMMURscE9SQUQ2L3Brc1BKc2RQeHhDUjBaQll0RUlkSnJrS2Vud3FuS2ZqMm12WnUvQXBxQS9MOTk3eGN2WXhLb2Fna2I4WWl4VnpwU0hhd2diTmxkM3liakJXTjR3NmdzTkVqUFRDak5LWDJvcUVaRWZwdFh4ZGpDUHg5MjlCanFhQVdsWThRc2RlVzdsZTYwSzlBVU1uYzR4QndDSVJsVUI3N2V6L1VXMEFZdVFXV1ljS0c2a2IwbXRESjZKK3dqek1GR0dZWWhzdzIrUk9FSmI2UXhKanI1Y3EyWUVtSGlRNXZuTVJHMjd1YlgzbHVzL01JUFdwTlpScTVPbitDdjdnb2J1QmdNWVVYTTlIdWtjVkhSL3dScldFdGFUanBQaHM0Umg4WkVZYWhrUTBaakNGZGxFVXhBM1hNcUJRL0YvWUJaczI2WjNmUlZSeHpRPSJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsieC1hbXotZGF0ZSI6IjIwMjUwMjIwVDE3MTcwM1oifV19
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-signature"
8851e1846666c4a768e77b26305e75a642a75e2915a36cb615f5336bf9effe69
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-meta-fileuploadconfigid"
fic_2tJYp6L4rl1wu2yXsIhImk51Uzp
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="x-amz-meta-originalfilename"
testfile.pdf
------WebKitFormBoundaryri1jWg8UDQUDwnc7
Content-Disposition: form-data; name="file"; filename="testfile.pdf"
Content-Type: application/pdf
------WebKitFormBoundaryri1jWg8UDQUDwnc7--
Poll the file status
Uploading the file to the upload endpoint starts an asynchronous process to scan and store the file. The file will not be immediately ready as we are ensuring the file is valid and secure.
Get the file upload config
Poll the get file upload config endpoint, using the file_upload_config_id
from the first step, until a file_upload_id
is returned.
{
"file_upload_config_id": "fic_2tn03u3n9L6aozuRtvSUEkoqazr",
+ "file_upload_id": "fiu_2tn06e4iML70Q1ivGq8dbdZ4jDJ"
}
Get the file upload
Once you have a file_upload_id
, get the file upload and check the status
. It will be one of the following:
AVAILABLE
- the file was successfully uploadedFAILED
- the file failed to upload
{
"file_upload_id": "fiu_2tn06e4iML70Q1ivGq8dbdZ4jDJ",
"file_upload_config_id": "fic_2tn03u3n9L6aozuRtvSUEkoqazr",
"filename": "testfile.pdf",
"type": "BUSINESS_VERIFICATION",
+ "status": "AVAILABLE",
"created_at": "2022-01-01T12:00:00Z",
"updated_at": "2022-01-01T12:00:00Z"
}
Associate the file
Once the file upload is complete and the status is Available
, it can now be associated to a merchant application or chargeback.
Merchant onboarding
Files are associated to a merchant application in the Needs Information process to complete the underwriting review reasons. Update a merchant application's underwriting review reason and set the file upload fields.
{
"underwriting_reviews": {
"business_verification": {
"file_upload_ids": [
"fiu_2DrDU206kzAhclm1WrZbuwDERRk"
]
},
"deposit_method_1": {
"file_upload_id": "fiu_2tmycnLHXvd7Hscnf0nNTSvluvA"
}
}
}
Chargeback disputes
Files are associated to a chargeback evidence when disputing chargebacks in the Inquiry Action Required
and Dispute Action Required
statuses. Update a chargeback evidence and set the file uploads field.
{
"file_upload_ids": [
"fiu_2tmz9V1zqYdELOFditLO1pmwG9k"
]
}
Updated 4 days ago