Skip to main content

Receipt Upload API

Submit customer receipt images programmatically for Rivo receipt scanning and review.

Written by Stuart Chaney

Receipt Upload API

Use this endpoint to submit a receipt image for a logged-in or known customer.

The upload creates a receipt submission in Rivo. The receipt still follows your normal receipt scanning and approval workflow, so a successful upload does not award points immediately.

This endpoint uses storefront API access, not a Merchant REST API key. If you need storefront API credentials for a headless or custom storefront build, contact your Rivo account manager.





Before You Begin

  • Make sure receipt scanning is enabled for your store.

  • Create an active receipt-based way to earn in your points program.

  • Have the Shopify customer ID for the customer submitting the receipt.

  • Have storefront API access if you are calling this endpoint outside Rivo’s built-in storefront experience.





Endpoint

POST /api/customers/loggedin/upload_receipt

Use loggedin in the path when submitting with storefront API access. Pass the Shopify customer ID with logged_in_customer_id.

Query Parameters

  • shop: Your Shopify myshopify.com domain.

  • logged_in_customer_id: The Shopify customer ID for the customer submitting the receipt.


Headers

  • Authorization: Bearer {storefront_api_token}

  • Content-Type: multipart/form-data
    Your HTTP client usually sets this automatically when you send form data.


Body

Send the receipt image as multipart form data:

Field

Required

Description

file

Yes

The receipt image file to upload.





Example Request

curl --request POST \  --url "https://loyalty-api.rivo.io/api/customers/loggedin/upload_receipt?shop=example.myshopify.com&logged_in_customer_id=7855248179442" \  --header "Authorization: Bearer your_storefront_api_token" \  --form "file=@/path/to/receipt.jpg"




Success Response

On success, the API returns 200 OK:

{ "success": true }

This means the receipt was submitted for scanning and review. Points are awarded only after the receipt is approved and matches an active receipt earning rule.





Error Responses

Status

Response

When it happens

401

{ "error": "Authentication failed" }

The storefront API token is missing, invalid, or not enabled for the store.

403

Forbidden response

The storefront request is not authorized for the store.

404

{ "success": false, "error": "Customer not found" }

The customer ID is missing or does not resolve to a customer.

200

{ "success": false, "errors": "..." }

The receipt could not be saved, such as when the image is missing or invalid.





Notes

  • The endpoint accepts image uploads only.

  • Rivo optimizes the submitted image before saving it for receipt scanning.

  • The response does not include the receipt submission ID.

  • Automatic approval depends on your receipt scanning settings. If automatic approval is off, or if the receipt needs review, it remains pending until your team approves or rejects it.

  • Frequency limits on your receipt way to earn control whether points are awarded after approval. They do not prevent receipt uploads.

Did this answer your question?