taxjar-ruby 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 1.9.3-p0
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - "1.9.3"
5
+ - "2.0"
6
+ - "2.1"
7
+ - "2.2"
8
+
9
+ script: bundle exec rspec
data/README.md CHANGED
@@ -1,14 +1,18 @@
1
- # TaxJar Ruby Gem
1
+ # TaxJar Ruby Gem [![RubyGems](http://img.shields.io/gem/v/taxjar-ruby.svg?style=flat-square)](https://rubygems.org/gems/taxjar-ruby) [![Build Status](http://img.shields.io/travis/taxjar/taxjar-ruby.svg?style=flat-square)](https://travis-ci.org/taxjar/taxjar-ruby)
2
2
 
3
3
  <a href="http://developers.taxjar.com"><img src="http://www.taxjar.com/img/TJ_logo_color_office_png.png" alt="TaxJar" width="220"></a>
4
4
 
5
- A Ruby interface to the TaxJar API. TaxJar makes sales tax filing easier for online sellers and merchants.
5
+ A Ruby interface to the TaxJar Sales Tax API. TaxJar makes sales tax filing easier for online sellers and merchants.
6
6
  See local jurisdictional tax reports, get payment reminders, and more. You can use our API to access TaxJar API endpoints,
7
7
  which can get information on sales tax rates, categories or upload transactions.
8
8
 
9
9
  * This wrapper supports 100% of the [TaxJar API Version 2](http://developers.taxjar.com/api/#introduction)
10
10
  * Data returned from API calls are mapped into Ruby objects
11
11
 
12
+ ## Supported Ruby Versions
13
+
14
+ Ruby 1.9.3 or greater
15
+
12
16
  ## Gem Dependencies
13
17
 
14
18
  Installing this gem also installs the following gems:
@@ -41,29 +45,98 @@ $ gem install taxjar-ruby
41
45
 
42
46
  First, [get an API key from TaxJar](https://app.taxjar.com/api_sign_up/plus/). Copy and paste in your API key:
43
47
 
44
- ```ruby
45
- client = Taxjar::Client.new(api_key: 'YOUR KEY')
46
- ```
47
48
 
48
49
  You are now ready to use TaxJar!
49
50
 
50
51
  ## Usage
51
52
 
52
53
  ### List all tax categories
54
+
55
+ #### Definition
56
+
57
+ ```ruby
58
+ client.categories
59
+ ```
60
+
61
+ #### Example Request
62
+
53
63
  ```ruby
54
- categories = client.categories
64
+ require 'taxjar'
65
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
66
+
67
+ client.categories
68
+ ```
69
+
70
+ #### Example Response
71
+
72
+ ```ruby
73
+ [
74
+ #<Taxjar::Category:0x007f081dc3e278 @attrs={
75
+ :name => "Digital Goods",
76
+ :product_tax_code => 31000,
77
+ :description => "Digital products transferred electronically."
78
+ }>,
79
+ #<Taxjar::Category:0x007f081dc3de90 @attrs={
80
+ :name => "Clothing",
81
+ :product_tax_code => 20010,
82
+ :description => "All human wearing apparel suitable for general use"
83
+ }>,
84
+ #<Taxjar::Category:0x007f081dc3da80 @attrs={
85
+ :name => "Non-Prescription",
86
+ :product_tax_code => 51010,
87
+ :description => "Drugs for human use without a prescription"
88
+ }>
89
+ ]
55
90
  ```
56
91
 
57
92
  ### List tax rates for a location (by zip/postal code)
58
93
 
94
+ #### Definition
95
+
96
+ ```ruby
97
+ client.rates_for_location
98
+ ```
99
+
100
+ #### Example Request
101
+
59
102
  ```ruby
60
- rates = client.rates_for_location('10001')
103
+ require 'taxjar'
104
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
105
+
106
+ client.rates_for_location('10001')
107
+ ```
108
+
109
+ #### Example Response
110
+
111
+ ```ruby
112
+ #<Taxjar::Rate:0x007fc47056a928 @attrs={
113
+ :zip => 90002,
114
+ :state => "CA",
115
+ :state_rate => 0.065,
116
+ :county => "LOS ANGELES",
117
+ :county_rate => 0.01,
118
+ :city => "WATTS",
119
+ :city_rate => 0,
120
+ :combined_district_rate => 0.015,
121
+ :combined_rate => 0.09
122
+ }>
61
123
  ```
62
124
 
63
125
  ### Calculate Sales tax for an order
64
126
 
127
+ #### Definition
128
+
129
+ ```ruby
130
+ client.tax_for_order
131
+ ```
132
+
133
+ #### Example Request
134
+
65
135
  ```ruby
66
- order = client.tax_for_order({
136
+ require 'taxjar'
137
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
138
+
139
+ client.tax_for_order({
67
140
  :to_country => 'US',
68
141
  :to_zip => '90002',
69
142
  :to_city => 'Los Angeles',
@@ -73,6 +146,12 @@ order = client.tax_for_order({
73
146
  :from_city => 'San Diego',
74
147
  :amount => 16.50,
75
148
  :shipping => 1.5,
149
+ :nexus_addresses => [{:address_id => 1,
150
+ :country => 'US',
151
+ :zip => '93101',
152
+ :state => 'CA',
153
+ :city => 'Santa Barbara',
154
+ :street => '1218 State St.'}],
76
155
  :line_items => [{:quantity => 1,
77
156
  :product_identifier => '12-34243-9',
78
157
  :unit_price => 15.0,
@@ -80,17 +159,145 @@ order = client.tax_for_order({
80
159
  })
81
160
  ```
82
161
 
162
+ #### Example Response
163
+
164
+ ```ruby
165
+ #<Taxjar::Tax:0x007f3945688fc8 @attrs={
166
+ :order_total_amount => 16.5,
167
+ :amount_to_collect => 1.35,
168
+ :has_nexus => true,
169
+ :freight_taxable => false,
170
+ :tax_source => "destination",
171
+ :breakdown => {
172
+ :state_taxable_amount => 15.0,
173
+ :state_tax_collectable => 0.98,
174
+ :county_taxable_amount => 15.0,
175
+ :county_tax_collectable => 0.15,
176
+ :city_taxable_amount => 0.0,
177
+ :city_tax_collectable => 0.0,
178
+ :special_district_taxable_amount => 15.0,
179
+ :special_district_tax_collectable => 0.22,
180
+ :line_items => [
181
+ {
182
+ :id => "1",
183
+ :state_taxable_amount => 15.0,
184
+ :state_sales_tax_rate => 0.065,
185
+ :county_taxable_amount => 15.0,
186
+ :county_tax_rate => 0.01,
187
+ :city_taxable_amount => 0.0,
188
+ :city_tax_rate => 0.0,
189
+ :special_district_taxable_amount => 15.0,
190
+ :special_tax_rate => 0.015
191
+ }
192
+ ]
193
+ }
194
+ }>
195
+ ```
196
+
197
+ ### List order transactions
198
+
199
+ #### Definition
200
+
201
+ ```ruby
202
+ client.list_orders
203
+ ```
204
+
205
+ #### Example Request
206
+
207
+ ```ruby
208
+ require 'taxjar'
209
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
210
+
211
+ client.list_orders({:from_transaction_date => '2014/01/01',
212
+ :to_transaction_date => '2015/05/30'})
213
+ ```
214
+
215
+ #### Example Response
216
+
217
+ ```ruby
218
+ ['20', '21', '22']
219
+ ```
220
+
221
+ ### Show order transaction
222
+
223
+ #### Definition
224
+
225
+ ```ruby
226
+ client.show_order
227
+ ```
228
+
229
+ #### Example Request
230
+
231
+ ```ruby
232
+ require 'taxjar'
233
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
234
+
235
+ client.show_order('123')
236
+ ```
237
+
238
+ #### Example Response
239
+
240
+ ```ruby
241
+ #<Taxjar::Order:0x007fd3e514a940 @attrs={
242
+ :transaction_id => 123,
243
+ :user_id => 11836,
244
+ :transaction_date => "2015-05-14T00:00:00Z",
245
+ :transaction_reference_id => nil,
246
+ :from_country => "US",
247
+ :from_zip => 93107,
248
+ :from_state => "CA",
249
+ :from_city => "SANTA BARBARA",
250
+ :from_street => "1281 State St",
251
+ :to_country => "US",
252
+ :to_zip => 90002,
253
+ :to_state => "CA",
254
+ :to_city => "LOS ANGELES",
255
+ :to_street => "123 Palm Grove Ln",
256
+ :amount => 17.95,
257
+ :shipping => 2,
258
+ :sales_tax => 0.95,
259
+ :line_items => [
260
+ {
261
+ :id => 1,
262
+ :quantity => 1,
263
+ :product_identifier => "12-34243-0",
264
+ :product_tax_code => nil,
265
+ :description => "Heavy Widget",
266
+ :unit_price => "15.0",
267
+ :discount => "0.0",
268
+ :sales_tax => "0.95"
269
+ }
270
+ ]
271
+ }>
272
+ ```
273
+
83
274
  ### Create order transaction
84
275
 
276
+ #### Definition
277
+
278
+ ```ruby
279
+ client.create_order
280
+ ```
281
+
282
+ #### Example Request
283
+
85
284
  ```ruby
86
- order = client.create_order({
285
+ require 'taxjar'
286
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
287
+
288
+ client.create_order({
87
289
  :transaction_id => '123',
88
290
  :transaction_date => '2015/05/14',
291
+ :from_state => 'CA',
292
+ :from_city => 'Santa Barbara',
293
+ :from_street => '1218 State St',
294
+ :from_country => 'US',
295
+ :from_zip => '93101',
89
296
  :to_country => 'US',
90
- :to_zip => '90002',
91
297
  :to_state => 'CA',
92
298
  :to_city => 'Los Angeles',
93
299
  :to_street => '123 Palm Grove Ln',
300
+ :to_zip => '90002',
94
301
  :amount => 17.45,
95
302
  :shipping => 1.5,
96
303
  :sales_tax => 0.95,
@@ -102,10 +309,54 @@ order = client.create_order({
102
309
  })
103
310
  ```
104
311
 
312
+ #### Example Response
313
+
314
+ ```ruby
315
+ #<Taxjar::Order:0x007f6d65b252d0 @attrs={
316
+ :transaction_id => 20,
317
+ :user_id => 11836,
318
+ :transaction_date => "2015-05-14T00:00:00Z",
319
+ :transaction_reference_id => nil,
320
+ :from_country => "US",
321
+ :from_zip => 93101,
322
+ :from_state => "CA",
323
+ :from_city => "SANTA BARBARA",
324
+ :from_street => "1218 State St",
325
+ :to_country => "US",
326
+ :to_zip => 90002,
327
+ :to_state => "CA",
328
+ :to_city => "LOS ANGELES",
329
+ :to_street => "123 Palm Grove Ln",
330
+ :amount => 15.02,
331
+ :shipping => 1.5,
332
+ :sales_tax => 0.95,
333
+ :line_items => [
334
+ {
335
+ :id => 1,
336
+ :quantity => 1,
337
+ :product_identifier => "12-34243-9",
338
+ :product_tax_code => nil,
339
+ :description => "Fuzzy Widget",
340
+ :unit_price => "15.0",
341
+ :discount => "0.0",
342
+ :sales_tax => "0.85"
343
+ }
344
+ ]
345
+ }>
346
+ ```
347
+
105
348
  ### Update order transaction
106
349
 
350
+ #### Definition
351
+
352
+ ```ruby
353
+ client.update_order
354
+ ```
355
+
356
+ #### Example Request
357
+
107
358
  ```ruby
108
- order = client.update_order({
359
+ client.update_order({
109
360
  :transaction_id => '123',
110
361
  :amount => 17.95,
111
362
  :shipping => 2.0,
@@ -118,13 +369,195 @@ order = client.update_order({
118
369
  })
119
370
  ```
120
371
 
372
+ #### Example Response
373
+
374
+ ```ruby
375
+ #<Taxjar::Order:0x007f6d65b252d0 @attrs={
376
+ :transaction_id => 123,
377
+ :user_id => 11836,
378
+ :transaction_date => "2015-05-14T00:00:00Z",
379
+ :transaction_reference_id => nil,
380
+ :from_country => "US",
381
+ :from_zip => 93101,
382
+ :from_state => "CA",
383
+ :from_city => "SANTA BARBARA",
384
+ :from_street => "1218 State St",
385
+ :to_country => "US",
386
+ :to_zip => 90002,
387
+ :to_state => "CA",
388
+ :to_city => "LOS ANGELES",
389
+ :to_street => "123 Palm Grove Ln",
390
+ :amount => 17.95,
391
+ :shipping => 2.0,
392
+ :sales_tax => 0.95,
393
+ :line_items => [
394
+ {
395
+ :id => 1,
396
+ :quantity => 1,
397
+ :product_identifier => "12-34243-0",
398
+ :product_tax_code => nil,
399
+ :description => "Heavy Widget",
400
+ :unit_price => "15.0",
401
+ :discount => "0.0",
402
+ :sales_tax => "0.95"
403
+ }
404
+ ]
405
+ }>
406
+ ```
407
+
408
+ ### Delete order transaction
409
+
410
+ #### Definition
411
+
412
+ ```ruby
413
+ client.delete_order
414
+ ```
415
+
416
+ #### Example Request
417
+
418
+ ```ruby
419
+ require 'taxjar'
420
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
421
+
422
+ client.delete_order(123)
423
+ ```
424
+
425
+ #### Example Response
426
+
427
+ ```ruby
428
+ #<Taxjar::Order:0x007f6d65b252d0 @attrs={
429
+ :transaction_id => 123,
430
+ :user_id => 11836,
431
+ :transaction_date => "2015-05-14T00:00:00Z",
432
+ :transaction_reference_id => nil,
433
+ :from_country => "US",
434
+ :from_zip => 93101,
435
+ :from_state => "CA",
436
+ :from_city => "SANTA BARBARA",
437
+ :from_street => "1218 State St",
438
+ :to_country => "US",
439
+ :to_zip => 90002,
440
+ :to_state => "CA",
441
+ :to_city => "LOS ANGELES",
442
+ :to_street => "123 Palm Grove Ln",
443
+ :amount => 17.95,
444
+ :shipping => 2.0,
445
+ :sales_tax => 0.95,
446
+ :line_items => [
447
+ {
448
+ :id => 1,
449
+ :quantity => 1,
450
+ :product_identifier => "12-34243-0",
451
+ :product_tax_code => nil,
452
+ :description => "Heavy Widget",
453
+ :unit_price => "15.0",
454
+ :discount => "0.0",
455
+ :sales_tax => "0.95"
456
+ }
457
+ ]
458
+ }>
459
+ ```
460
+
461
+ ### Listing refund transactions
462
+
463
+ #### Definition
464
+
465
+ ```ruby
466
+ client.list_refunds
467
+ ```
468
+
469
+ #### Example Request
470
+
471
+ ```ruby
472
+ require 'taxjar'
473
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
474
+
475
+ client.list_refunds({:from_transaction_date => '2014/01/01',
476
+ :to_transaction_date => '2015/05/30'})
477
+ ```
478
+
479
+ #### Example Response
480
+
481
+ ```ruby
482
+ ['203', '204', '205']
483
+ ```
484
+
485
+ ### Show refund transaction
486
+
487
+ #### Definition
488
+
489
+ ```ruby
490
+ client.show_refund
491
+ ```
492
+
493
+ #### Example Request
494
+
495
+ ```ruby
496
+ require 'taxjar'
497
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
498
+
499
+ client.show_refund('321')
500
+ ```
501
+
502
+ #### Example Response
503
+
504
+ ```ruby
505
+ #<Taxjar::Refund:0x007f6da40e33a0 @attrs={
506
+ :transaction_id => 321,
507
+ :user_id => 11836,
508
+ :transaction_date => "2015-06-14T00:00:00Z",
509
+ :transaction_reference_id => 123,
510
+ :from_country => "US",
511
+ :from_zip => 93107,
512
+ :from_state => "CA",
513
+ :from_city => "SANTA BARBARA",
514
+ :from_street => "1218 State St",
515
+ :to_country => "US",
516
+ :to_zip => 90002,
517
+ :to_state => "CA",
518
+ :to_city => "LOS ANGELES",
519
+ :to_street => "123 Palm Grove Ln",
520
+ :amount => 17.95,
521
+ :shipping => 2.0,
522
+ :sales_tax => 0.95,
523
+ :line_items => [
524
+ {
525
+ :id => 1,
526
+ :quantity => 1,
527
+ :product_identifier => "12-34243-0",
528
+ :product_tax_code => nil,
529
+ :description => "Heavy Widget",
530
+ :unit_price => "15.0",
531
+ :discount => "0.0",
532
+ :sales_tax => "0.95"
533
+ }
534
+ ]
535
+ }>
536
+ ```
537
+
121
538
  ### Create refund transaction
122
539
 
540
+ #### Definition
541
+
542
+ ```ruby
543
+ client.create_refund
544
+ ```
545
+
546
+ #### Example Request
547
+
123
548
  ```ruby
549
+ require 'taxjar'
550
+ client = Taxjar::Client.new(api_key: '48ceecccc8af930bd02597aec0f84a78')
551
+
124
552
  refund = client.create_refund({
125
553
  :transaction_id => '321',
126
554
  :transaction_date => '2015/05/14',
127
555
  :transaction_reference_id => '123',
556
+ :from_country => 'US',
557
+ :from_zip => '93107',
558
+ :from_state => 'CA',
559
+ :from_city => 'Santa Barbara',
560
+ :from_street => '1218 State St',
128
561
  :to_country => 'US',
129
562
  :to_zip => '90002',
130
563
  :to_state => 'CA',
@@ -141,8 +574,52 @@ refund = client.create_refund({
141
574
  })
142
575
  ```
143
576
 
577
+ #### Example Response
578
+
579
+ ```ruby
580
+ #<Taxjar::Refund:0x007f6da40e33a0 @attrs={
581
+ :transaction_id => 321,
582
+ :user_id => 11836,
583
+ :transaction_date => "2015-06-14T00:00:00Z",
584
+ :transaction_reference_id => 123,
585
+ :from_country => "US",
586
+ :from_zip => 93107,
587
+ :from_state => "CA",
588
+ :from_city => "SANTA BARBARA",
589
+ :from_street => "1218 State St",
590
+ :to_country => "US",
591
+ :to_zip => 90002,
592
+ :to_state => "CA",
593
+ :to_city => "LOS ANGELES",
594
+ :to_street => "123 Palm Grove Ln",
595
+ :amount => 17.95,
596
+ :shipping => 2.0,
597
+ :sales_tax => 0.95,
598
+ :line_items => [
599
+ {
600
+ :id => 1,
601
+ :quantity => 1,
602
+ :product_identifier => "12-34243-0",
603
+ :product_tax_code => nil,
604
+ :description => "Heavy Widget",
605
+ :unit_price => "15.0",
606
+ :discount => "0.0",
607
+ :sales_tax => "0.95"
608
+ }
609
+ ]
610
+ }>
611
+ ```
612
+
144
613
  ### Update refund transaction
145
614
 
615
+ #### Definition
616
+
617
+ ```ruby
618
+ client.update_refund
619
+ ```
620
+
621
+ #### Example Request
622
+
146
623
  ```ruby
147
624
  refund = client.update_refund{
148
625
  :transaction_id => '321',
@@ -157,6 +634,92 @@ refund = client.update_refund{
157
634
  })
158
635
  ```
159
636
 
637
+ #### Example Response
638
+
639
+ ```ruby
640
+ #<Taxjar::Refund:0x007f6da40e33a0 @attrs={
641
+ :transaction_id => 321,
642
+ :user_id => 11836,
643
+ :transaction_date => "2015-06-14T00:00:00Z",
644
+ :transaction_reference_id => 123,
645
+ :from_country => "US",
646
+ :from_zip => 93107,
647
+ :from_state => "CA",
648
+ :from_city => "SANTA BARBARA",
649
+ :from_street => "1218 State St",
650
+ :to_country => "US",
651
+ :to_zip => 90002,
652
+ :to_state => "CA",
653
+ :to_city => "LOS ANGELES",
654
+ :to_street => "123 Palm Grove Ln",
655
+ :amount => 17.95,
656
+ :shipping => 2.0,
657
+ :sales_tax => 0.95,
658
+ :line_items => [
659
+ {
660
+ :id => 1,
661
+ :quantity => 1,
662
+ :product_identifier => "12-34243-9",
663
+ :product_tax_code => nil,
664
+ :description => "Heavy Widget",
665
+ :unit_price => "15.0",
666
+ :discount => "0.0",
667
+ :sales_tax => "0.95"
668
+ }
669
+ ]
670
+ }>
671
+ ```
672
+
673
+ ### Delete refund transaction
674
+
675
+ #### Definition
676
+
677
+ ```ruby
678
+ client.delete_refund
679
+ ```
680
+
681
+ #### Example Request
682
+
683
+ ```ruby
684
+ client.delete_refund(321)
685
+ ```
686
+
687
+ #### Example Response
688
+
689
+ ```ruby
690
+ #<Taxjar::Refund:0x007f6da40e33a0 @attrs={
691
+ :transaction_id => 321,
692
+ :user_id => 11836,
693
+ :transaction_date => "2015-06-14T00:00:00Z",
694
+ :transaction_reference_id => 123,
695
+ :from_country => "US",
696
+ :from_zip => 93107,
697
+ :from_state => "CA",
698
+ :from_city => "SANTA BARBARA",
699
+ :from_street => "1218 State St",
700
+ :to_country => "US",
701
+ :to_zip => 90002,
702
+ :to_state => "CA",
703
+ :to_city => "LOS ANGELES",
704
+ :to_street => "123 Palm Grove Ln",
705
+ :amount => 17.95,
706
+ :shipping => 2.0,
707
+ :sales_tax => 0.95,
708
+ :line_items => [
709
+ {
710
+ :id => 1,
711
+ :quantity => 1,
712
+ :product_identifier => "12-34243-9",
713
+ :product_tax_code => nil,
714
+ :description => "Heavy Widget",
715
+ :unit_price => "15.0",
716
+ :discount => "0.0",
717
+ :sales_tax => "0.95"
718
+ }
719
+ ]
720
+ }>
721
+ ```
722
+
160
723
  ## Tests
161
724
 
162
725
  An RSpec test suite is available to ensure API functionality: