All Projects → forrestbrazeal → invoiceless

forrestbrazeal / invoiceless

Licence: other
Serverless backend for sending simple recurring invoices

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to invoiceless

aws-ses-template-manager
A simple application offering an interface for CRUD management of AWS SES templates across all compatible regions and with your own choice of credentials profile. A great GUI productivity tool that can be setup and run locally in seconds (see readme).
Stars: ✭ 23 (-47.73%)
Mutual labels:  aws-ses
RAthena
Connect R to Athena using Boto3 SDK (DBI Interface)
Stars: ✭ 30 (-31.82%)
Mutual labels:  boto3
swift-lambda-runtime
⚠️ Deprecated AWS Lambda Runtime - please use https://github.com/swift-server/swift-aws-lambda-runtime instead
Stars: ✭ 68 (+54.55%)
Mutual labels:  aws-sam
Builderbook
Open source web application to learn JS stack: React, Material-UI, Next.js, Node.js, Express.js, Mongoose, MongoDB database.
Stars: ✭ 3,015 (+6752.27%)
Mutual labels:  aws-ses
parameterstore-backup
Python script to take a backup of the AWS parameter store
Stars: ✭ 19 (-56.82%)
Mutual labels:  boto3
serverless-discord-bot
A serverless Discord Bot template built for AWS Lambda based on Discord's slash commands and the slash-create library.
Stars: ✭ 37 (-15.91%)
Mutual labels:  aws-sam
spring-cloud-aws
All development has moved to https://github.com/awspring/spring-cloud-aws Integration for Amazon Web Services APIs with Spring
Stars: ✭ 587 (+1234.09%)
Mutual labels:  aws-ses
lamby-cookiecutter
AWS SAM Cookiecutter to Quick Start Rails & Lambda 🐑🛤
Stars: ✭ 17 (-61.36%)
Mutual labels:  aws-sam
boto3-examples
Example scripts for boto3.
Stars: ✭ 55 (+25%)
Mutual labels:  boto3
s3-credentials
A tool for creating credentials for accessing S3 buckets
Stars: ✭ 138 (+213.64%)
Mutual labels:  boto3
0x4447 product s3 email
📫 A serverless email server on AWS using S3 and SES
Stars: ✭ 2,905 (+6502.27%)
Mutual labels:  aws-ses
aws-vpc-flow-log-appender
Sample code to append additional information (e.g. Security Group IDs and geolocation data) to VPC Flow Logs for analysis in Elasticsearch.
Stars: ✭ 84 (+90.91%)
Mutual labels:  aws-sam
pyMTurkR
A Client for the MTurk Requester API
Stars: ✭ 16 (-63.64%)
Mutual labels:  boto3
node-backend-template
A template for NodeJS backend projects
Stars: ✭ 19 (-56.82%)
Mutual labels:  aws-ses
ses-email-client
Simple, serverless client for AWS SES. With this, you can send/read emails received by SES into S3 without purchasing AWS Workmail. If you only use SES for email marketing, you can also see and preview your SES templates in the browser
Stars: ✭ 21 (-52.27%)
Mutual labels:  aws-ses
aws-ses-serverless-example
AWS SES example in NodeJS using lambda
Stars: ✭ 75 (+70.45%)
Mutual labels:  aws-ses
s3upload
Upload multiple files to AWS S3, make them public, and get their URLs easily from the command line.
Stars: ✭ 24 (-45.45%)
Mutual labels:  boto3
send-email-lambda
Simple email sender running on Lambda
Stars: ✭ 70 (+59.09%)
Mutual labels:  aws-ses
lambda-mailer
Simple module for receiving an email from a contact form on your website.
Stars: ✭ 83 (+88.64%)
Mutual labels:  aws-ses
amazonmq-invoke-aws-lambda
Demonstrates an approach to invoking AWS Lambda from messages in an Amazon MQ queue.
Stars: ✭ 23 (-47.73%)
Mutual labels:  aws-sam

invoiceless

Invoiceless is a serverless API for sending simple recurring invoices by email using AWS Lambda, API Gateway, CloudWatch Events, and SES.

Deployment Instructions

  1. Make sure you have the AWS CLI installed
  2. Clone the repository
  3. From the top level directory, run

aws cloudformation package --template-file template.yaml --s3-bucket [your s3 bucket] --output-template-file packaged.yaml

aws cloudformation deploy --template-file ./packaged.yaml --stack-name invoiceless --capabilities CAPABILITY_IAM

Using the API

POST /invoices

Sends an invoice immediately to the recipients specified in agreement_info.client_emails.

Notes

agreement_info.verified_sender_arn is optional and only needs to be specified if your AWS SES account is still on probation. You can verify the address in agreement_info.provider_email by following the steps from AWS here.

agreement_info.net specifies the number of days until the invoice is due. It can be any integer from 1 to 120.

Example call

headers = {'content-type': 'application/json'}
url = '[api URL]/invoices/'

body = {
  "agreement_info": {
    "net": 30,
    "client_emails": [
      "[email protected]",
      "
    ],
    "provider_email": "[email protected]",
    "verified_sender_arn": "arn:aws:ses:us-east-1:[account]:identity/[email protected]"
  },
  "client_info": {
    "client_id": "1001",
    "name": "My Client",
    "street": "1 Corporate Pkwy",
    "city": "Bigcity",
    "state": "TX",
    "country": "USA",
    "post_code": "01010"
  },
  "service_provider_info": {
    "name": "My Name",
    "street": "123 Main St",
    "city": "Anywhere",
    "state": "NY",
    "country": "USA",
    "post_code": "12345"
  },
  "line_items": [
    {
      "name": "Widgets",
      "description": "Default widgets",
      "units": 10,
      "unit_price": 125
    },
    {
      "name": "Customized Widgets",
      "description": "Reinforced widgets",
      "units": 10,
      "unit_price": 125
    }
  ]
}

requests.post(url, data=json.dumps(body), headers=headers)


POST invoices/schedule

This call creates a CloudWatch rule that sends your invoice on a recurring schedule that you specify.

The API request looks the same as the example above, except for the addition of a top-level body attribute called schedule_expression:

body = {
  "schedule_expression": "cron(0 12 25 * ? *)",
  "agreement_info": {
    ...

Refer to AWS's schedule expressions syntax guide for help creating your schedule.

The example above will send a recurring invoice on the 25th day of every month at 12:00 PM.

DELETE invoices/schedule/client_id

Removes the CloudWatch Events rule for the specified client ID. Note that Invoiceless only supports one recurring invoice per client at the moment.

Generated Invoices

Invoiceless uses PyInvoice to generate simple invoices that will be sent via email to the destination addresses you specify.

Example Invoice

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].